is there a way so that we extract a particular block from an 8x8 image?

i've an image of size 8x8 blocks i.e total of 64 blocks.
i want to extract or show only few blocks...
how can i do so?
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);
% Extract out the block into a single subimage.
oneBlock = grayImage(row1:row2, col1:col2);
% Specify the location for display of the image.
subplot(6,8, blockNumber);
imshow(oneBlock);
end
end
the above code shows all the 64 blocks..
what should i do, so that only block 10 and block 34 is show rather than all the blocks..
if there is a way tell me how to do it..

댓글 수: 5

Do you want the blocks numbered going down the rows or across the columns? e.g., is block 34 the 2nd one across on the 5th row, or the 2nd one down in the 5th column ?
across the rows....
Ambiguous. Down the rows first (in a single column), before advancing to the next column? Or across the columns first (in a single row) before advancing to the next row. Why can't you just do a little math to figure out row1, row2, col1, and col2? Alternatively put in a counter and don't extract the block until the counter is what you want.
Raman
Raman 2013년 3월 11일
편집: Raman 2013년 3월 11일
how can can i do so? can u help me sir by writing few lines of code plz..
reply plz
can anyone help me plz....

댓글을 달려면 로그인하십시오.

 채택된 답변

Walter Roberson
Walter Roberson 2013년 3월 12일
편집: Walter Roberson 2013년 3월 12일
blockrows =8; blockcols = 8;
[blockcol, blockcol] = ind2sub( [blockcols, blockrows], BlockNumber]
colstart = (blockcol-1) * blockSizeC + 1;
rowstart = (blockrow - 1) * blockSizeR + 1;
oneBlock = grayImage(rowstart : rowstart + blockSizeR - 1, colstart : colstart + blockSizeC - 1);

댓글 수: 3

for row = 1 : blockSizeR : rows
for col = 1 : blockSizeC : columns
blockrows =8; blockcols = 8;
[blockrow, blockcol] = idx2subs( [blockcols, blockrows], BlockNumber]
colstart = (blockcol-1) * blockSizeC + 1;
rowstart = (blockrow - 1) * blockSizeR + 1;
oneBlock = grayImage(rowstart : rowstart + blockSizeR - 1, colstart : colstart + blockSizeC - 1);
subplot(6,8, blockNumber);
imshow(Block);
end
end
Undefined function 'idx2subs' for input arguments of type 'double'.
i got this as error when i modified the above code sir.
is the code that i modified is correct or having mistakes?
Sorry, should have been ind2sub() rather than idx2subs()
Do not enclose this in a "for" loop. The above is the complete code to extract by block number. For example to extract block #34, use those lines of code with BlockNumber = 34
thank you so much it works....
:)

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by