easily sub dividing image into blocks

2 visualizzazioni (ultimi 30 giorni)
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 Commenti
Image Analyst
Image Analyst il 12 Set 2013
FYI: note the long arrays of 4's can be replaced by the shorter expression: 4*ones(1,m/4)

Accedi per commentare.

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 10 Set 2013
Modificato: Azzi Abdelmalek il 10 Set 2013
im=rand(256);
[n,m]=size(im);
p=4
aa=1:p:n
bb=1:p:m
[ii,jj]=ndgrid(aa,bb)
out=arrayfun(@(x,y) im(x:x+p-1,y:y+p-1),ii,jj,'un',0)
  3 Commenti
mahesh chathuranga
mahesh chathuranga il 12 Set 2013
thank you very much. but sir i want to do this with mat2cellfunction
Jan
Jan il 12 Set 2013
There is nothing magic in MAT2CELL. You can simply use a loop directly, see [EDITED] in my answer.

Accedi per commentare.

Più risposte (2)

Jan
Jan il 10 Set 2013
Modificato: Jan il 12 Set 2013
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 Commenti
Alessandro Masullo
Alessandro Masullo il 30 Mag 2018

This is the smartest solution that I've ever seen.

It's just pure beauty. Fantastic, I love it!

Accedi per commentare.


Tejashree Ladhake
Tejashree Ladhake il 29 Nov 2013
yes, it works! thank you

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by