Assuming your image size is a multiple of 8:
img = imread('C:\somewhere\someimage.bmp');
numblockheight = size(img, 1) / 8;
numblockwidth = size(img, 2) / 8;
assert(all(mod([numblockwidth, numblockheight], 1) == 0), 'Image size is not a multiple of 8')
imageblocks = mat2cell(img, ones(1, numblockheight) * 8, ones(1, numblockwidth) * 8, size(img, 3))
And to save all these:
destinationfolder = 'C:\somewhere';
for col = 1:size(imageblocks, 2)
for row = 1:size(imageblocks, 1)
imwrite(imageblocks{row, col}, fullfile(destinationfolder, sprintf('block%03d_%03d.bmp', row, col)));
end
end
Best Answer