i've an image of size 185x256 and i've divided the image into discrete blocks having block rows 16 and block columns 16. when i access the blocks in a loop it says index exceeds matrix dimension...
显示 更早的评论
the code is as follows:
in the following image it has 11 rows and 16 columns grayImage http://imageshack.us/photo/my-images/17/tanklb.jpg/
grayImage=rgb2gray(Imread('tank.jpg'));
whos grayImage
[rows columns numberOfBands]=size(grayImage);
blockSizeR = 16;% Rows in block.
blockSizeC = 16; % Columns in block.
wholeBlockRows = floor(rows / blockSizeR);
wholeBlockCols = floor(columns / blockSizeC);
fprintf('\nSize of whole block is %d %d\n\n',wholeBlockRows,wholeBlockCols);
blockNumber=1;
for row = 1 : blockSizeR : rows
for col = 1 : blockSizeC : columns
row1 = row;
row2 = row1 + blockSizeR - 1;
row2 = min(rows, row2);
% Determine starting and ending columns.
col1 = col;
col2 = col1 + blockSizeC - 1;
col2 = min(columns, col2); % Don't let it go outside the image.
% Extract out the block into a single subimage.
oneBlock = grayImage(row1:row2, col1:col2);
glcm=graycomatrix(oneBlock,'NumLevels',16);
disp(glcm);
subplot(16,16,blockNumber);
imshow(oneBlock);
caption2 = sprintf('Block #%d\n of %d', blockNumber,256);
title(caption2, 'FontSize', fontSize);
%drawnow;
blockNumber = blockNumber + 1;
end
end
i has total of 11 rows and 16 columns i.e 185x256 when i calculate the GLCM
i got the error as
Index exceeds number of subplots.
can u tell me how to solve this error...
which line of code should i add to the above code so that it can work well...
i've to only deal with the size 185x256..i dont want to use the function imresize...
1 个评论
Image Analyst
2013-4-10
You could solve this a lot faster than waiting for us if you learn the concepts here: http://blogs.mathworks.com/videos/2012/07/03/debugging-in-matlab/
采纳的回答
更多回答(1 个)
Walter Roberson
2013-4-10
0 个投票
Your code does not define "rows" or "columns"
6 个评论
pammy
2013-4-10
Walter Roberson
2013-4-10
At the command prompt give the command
dbstop if error
and then run your program. When it stops with the error, please show us which line it is stopping on, and a copy of the error message, and please show the values of row, col, and blockNumber
pammy
2013-4-10
Walter Roberson
2013-4-10
What subplot(11,16,blockNumber) ? Your code only shows subplot(16,16,blockNumber)
If you have altered your code to use wholeBlockRows then remember that only counts whole rows, and does not take into account that there might be a partial row (as there is in this situation.)
pammy
2013-4-11
Walter Roberson
2013-4-11
subplotrows = ceil(rows / blockSizeR);
subplotcols = ceil(columns / blockSizeC);
then use
subplot(subplotrows, subplotcols);
类别
在 帮助中心 和 File Exchange 中查找有关 Signal Attributes and Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!