i do have a code, but it doesn't work quickly for 8*8. works perfectly for 32 and higher block sizes. it doesn't return the blocks either.
function y=segment1(f)rgbImage = f;imshow(rgbImage);set(gcf, 'units','normalized','outerposition',[0 0 1 1]);drawnow;[rows columns numberOfColorBands] = size(rgbImage);blockSizeR =8;blockSizeC =8;wholeBlockRows = floor(rows / blockSizeR);blockVectorR = [blockSizeR * ones(1, wholeBlockRows), rem(rows, blockSizeR)];wholeBlockCols = floor(columns / blockSizeC);blockVectorC = [blockSizeC * ones(1, wholeBlockCols), rem(columns, blockSizeC)];if numberOfColorBands > 1 ca = mat2cell(rgbImage, blockVectorR, blockVectorC, numberOfColorBands);else ca = mat2cell(rgbImage, blockVectorR, blockVectorC);endplotIndex = 1;numPlotsR = size(ca, 1);numPlotsC = size(ca, 2);for r = 1 : numPlotsR for c = 1 : numPlotsC fprintf('plotindex = %d, c=%d, r=%d\n', plotIndex, c, r); subplot(numPlotsR, numPlotsC, plotIndex); rgbBlock=ca{r,c}; imshow(rgbBlock); [rowsB columnsB numberOfColorBandsB] = size(rgbBlock); caption = sprintf('Block #%d of %d\n%d rows by %d columns', plotIndex, numPlotsR*numPlotsC, rowsB, columnsB); drawnow; plotIndex = plotIndex + 1; endendend
Best Answer