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 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Ameer Hamza
le 20 Oct 2020
Modifié(e) : Ameer Hamza
le 20 Oct 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 commentaires
Plus de réponses (1)
Matt J
le 20 Oct 2020
Modifié(e) : Matt J
le 20 Oct 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 commentaires
Voir également
Catégories
En savoir plus sur Matrix Operations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!