spliting image to 16x16 blocks
Show older comments
hi i have an image with size 320x240 i want to split it to 16x16 blocks but i don't use for loop. i don't process these blocks and i only save theme that after 30 frame i do LBP 3d on it? can you help me
Answers (2)
Jan
on 4 Mar 2013
SplitImage = reshape(Image, 16, 20, 16, 15);
SplitImage = permute(SplitImage, [1, 3, 2, 4]);
SplitImage = reshape(SplitImage, [16, 16, 300]);
Walter Roberson
on 4 Mar 2013
SplitImage = mat2cell(Image, 16 * ones(1, size(Image,1) / 16), 16 * ones(1, size(Image,2) / 16), size(Image,3));
3 Comments
Matt J
on 4 Mar 2013
MAT2CELL does use a for-loop implicitly, though I suspect the OP is excessively concerned about loops.
SplitImage=mat2tiles(Image,[16,16]);
nadia naji
on 4 Mar 2013
Matt J
on 4 Mar 2013
Glad it does what you want, though if speed was your goal, Jan's method is about 4 times faster.
Categories
Find more on Image Filtering and Enhancement in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!