I know how to divide my 256x256 image into 16x16 blocks using mat2cell. Now I want to access those 16x16 blocks successively to further divide them into 4x4 blocks.
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Abhishek Baba
am 20 Okt. 2020
Bearbeitet: Matt J
am 20 Okt. 2020
I'm able to do this further division by taking one 16x16 block at a time (first using cell2mat and then again using mat2cell this time with parameter 4), but I want to do it using some 'for' loop, or anything for that matter in which I wouldn't have to access each 16x16 blocks individually.
Any idea how I can achieve that?
Thank you.
0 Kommentare
Akzeptierte Antwort
Ameer Hamza
am 20 Okt. 2020
Bearbeitet: Ameer Hamza
am 20 Okt. 2020
Read about cellfun(). Try something like this
img = rand(256);
C1 = mat2cell(img, 16*ones(16,1), 16*ones(16,1));
C2 = cellfun(@(x) mat2cell(x, 4*ones(4,1), 4*ones(4,1)), C1, 'UniformOutput', 0);
0 Kommentare
Weitere Antworten (1)
Matt J
am 20 Okt. 2020
Bearbeitet: Matt J
am 20 Okt. 2020
Using mat2tiles
Image=rand(256);
ImageCell=mat2tiles(mat2tiles(Image,[4,4]),[4,4]);
>> ImageCell{2,3}
ans =
4×4 cell array
{4×4 double} {4×4 double} {4×4 double} {4×4 double}
{4×4 double} {4×4 double} {4×4 double} {4×4 double}
{4×4 double} {4×4 double} {4×4 double} {4×4 double}
{4×4 double} {4×4 double} {4×4 double} {4×4 double}
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matrix Operations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!