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 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Abhishek Baba
el 20 de Oct. de 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 comentarios
Respuesta aceptada
Ameer Hamza
el 20 de Oct. de 2020
Editada: Ameer Hamza
el 20 de Oct. de 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 comentarios
Más respuestas (1)
Matt J
el 20 de Oct. de 2020
Editada: Matt J
el 20 de Oct. de 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 comentarios
Ver también
Categorías
Más información sobre Matrix Operations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!