MATLAB: How to divide 256X256 matrix into sixteen 16X16 blocks

image processing

I am having pixel value of an image as 256X256 matrix. I want to divide it into sixteen 16X16 matrix (ie)an image into sub blocks. It is needed to compare each 16X16 with other. Can anyone help?

Best Answer

You need to use mat2cell:
X = reshape(1:20,5,4)'
C = mat2cell(X, [2 2], [3 2])
celldisp(C)
This code returns
X =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
C =
[2x3 double] [2x2 double]
[2x3 double] [2x2 double]
C{1,1} =
1 2 3
6 7 8
C{2,1} =
11 12 13
16 17 18
C{1,2} =
4 5
9 10
C{2,2} =
14 15
19 2
In your case:
A = rand(256); % your matrix here
N = 16*ones(1,16);
B = mat2cell(A,N,N);