easily sub dividing image into blocks
Mostrar comentarios más antiguos
this is my programme
[m n]=size(I);_(example image size is 256*256)_ c=mat2cell(I,[4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4],[4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4]); this is difficult and i want to sub divide the any image into (m/4)*(n/4) blocks.how can i do this easily?
3 comentarios
Jan
el 10 de Sept. de 2013
This does not look like a valid Matlab program. Please format the code properly and post valid Matlab syntax.
Image Analyst
el 12 de Sept. de 2013
FYI: note the long arrays of 4's can be replaced by the shorter expression: 4*ones(1,m/4)
mahesh chathuranga
el 13 de Sept. de 2013
Respuesta aceptada
Más respuestas (2)
Img = rand(768, 1024);
[m, n] = size(Img);
Blocks = permute(reshape(Img, [4, m/4, 4, n/4]), [1, 3, 2, 4]);
Now the block [x,y] can be accessed as
Block(:, :, x, y)
[EDITED] And to create a cell:
Img = rand(768, 1024);
[m, n] = size(Img);
m4 = m / 4;
n4 = n / 4;
Blocks = permute(reshape(Img, [4, m4, 4, n4]), [1, 3, 2, 4]);
C = cell(m4, n4)
for in = 1:n4
for im = 1:m4
C{im, in} = Blocks(:, :, im, in);
end
end
3 comentarios
Andrei Bobrov
el 12 de Sept. de 2013
Editada: Andrei Bobrov
el 12 de Sept. de 2013
Hi Jan! Or:
C = reshape(num2cell(Blocks,[1 2]),m4,n4);
mahesh chathuranga
el 13 de Sept. de 2013
Alessandro Masullo
el 30 de Mayo de 2018
This is the smartest solution that I've ever seen.
It's just pure beauty. Fantastic, I love it!
Tejashree Ladhake
el 29 de Nov. de 2013
0 votos
yes, it works! thank you
Categorías
Más información sobre Data Type Conversion en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!