Let me first explain an error: 64*64 image blocks (each block is 4*4) should be 256 blocks, not 16 blocks.
The following is the program
Suppose A is a 64*64 image matrix
B=mat2cell(A,4*ones(1,16),4*ones(1,16));
B=reshape(cat(3,B{:}),16,[]);%B is the matrix you want, 16 rows and 256 columns
%The following is the description
%The approximate relationship is as follows, assuming A=
� A17 … A241
� A18 … A242
%∶ ∶ ∶
�6 A19 … A256
% (Each Ai here is a 4*4 matrix block)
%Then B=
� B2 B3 … B256
%Each Bi is a 16*1 column vector corresponding to Ai
%
%That is, assuming Ai=
� a5 a9 a13
� a6 a10 a14
� a7 a11 a15
� a8 a12 a16
%
%Then Bi=
�
�
%:
�6
How to divide a matrix into several matrices with equal dimensions in MATLAB:
Use the reshape function: Enter: doc reshape in the command window.
MATLAB Introduction:
MATLAB is a commercial mathematics software produced by the American MathWorks company. It is an advanced technical computing language and interactive environment used for algorithm development, data visualization, data analysis and numerical calculations. It mainly includes MATLAB and Simulink.
MATLAB is a combination of the two words matrix&laboratory, which means matrix factory (matrix laboratory). It is a high-tech computing environment released by the American mathworks company mainly for scientific computing, visualization and interactive programming. It integrates many powerful functions such as numerical analysis, matrix calculations, scientific data visualization, and modeling and simulation of nonlinear dynamic systems in an easy-to-use window environment, providing scientific research, engineering design, and many scientific fields that must carry out effective numerical calculations. The field provides a comprehensive solution and largely breaks away from the editing mode of traditional non-interactive programming languages (such as C and Fortran), representing the advanced level of today's international scientific computing software.
% Assume that your original matrix exists in the variable in
a=nchoosek(1:20,16);% generates 20 different combinations of 16, there will be 4845 kinds, and returns a 4845x16 matrix
num=size(a,1);%num=4845
choose=true(num,1);
for ii=1:num
temp=in(a(ii,:),:);% takes the combination of row ii to form the temp square matrix
d=det(temp);%calculate determinant
if d==0 %If the truncation error is included in the calculation, you can use the condition abs(d) choose(ii)=false; % marks the combination whose determinant is 0 end end chooseout=a(choose,:);%chooseout is a matrix of nx16, n is the number of matrices that meet the conditions % Available out=in(chooseout(n,:),:) to obtain the nth matrix that meets the conditions
The above is the detailed content of Image block processing using MATLAB. For more information, please follow other related articles on the PHP Chinese website!