i've an image of size 204x204. after dividing the the image into overlapping blocks,then m using mat2cell i got the following error

1 次查看(过去 30 天)
I=imread('lina.jpg');
whos I;
fun=@(block_struct) mean2(block_struct.data(:));
B=blockproc(I,[6 6],fun,'bordersize',[3 3]);
C=mat2cell(B,[6 6],[6 6]);
error: =>
Input arguments, D1 through D2, must sum to each dimension of the input matrix size, [0 0].'
error in mat2cell
can u tell what is my mistake n plz rectify it...as soon as

采纳的回答

Walter Roberson
Walter Roberson 2013-2-12
In your call
C=mat2cell(B,[6 6],[6 6]);
the second argument must add up to size(B,1), and the third argument must add up to size(B,2).
Also, somehow, your B has come out empty, size 0 x 0, perhaps because you did not use the blockproc options 'TrimBorder', false
  2 个评论
Walter Roberson
Walter Roberson 2013-2-12
No it is not correct.
C = mat2cell(B, [6 6 6 6 6 6 ... 6], [6 6 6 6 .... 6], size(B,3));
where the first group of 6's has enough 6's to add up to size(B,1) and the second group of 6's has enough 6's to add up to size(B,2)

请先登录,再进行评论。

更多回答(1 个)

Jan
Jan 2013-2-12
The dimensions in your MAT2CELL call do not match the size of the input B, which seems to be empty.
  4 个评论
Image Analyst
Image Analyst 2013-2-12
mat2cell does not do overlapping blocks/tiles. They are adjacent (touching) but NOT overlapping. You have to decide what you want: tiling with overlapping or tiling without overlapping.
Walter Roberson
Walter Roberson 2013-2-12
When blockproc() is called with Bordersize, and with TrimBorder set to false, and if the fun returns something the same size as the data structure member passed into the fun, then the returned array will consist of adjacent tiles expanded out of the overlapping data.
1 2 3 | 4 5 6 7 8 9 | 10 11 12 || 7 8 9 | 10 11 12 13 14 15 | 16 17 18 || 13 14 15 | 16 17 18 19 20 21 | 22 23 24 ||
In the above, the single-| mark the logical edges of the core of the tiles, with the overlap region to the left and right of there; the double-|| mark the logical edges of what was returned by fun and thus the places at which mat2cell should be used to break up the array. The bars have just been added for education purposes here and do not exist in the array; the array itself would look like
1 2 3 4 5 6 7 8 9 10 11 12 7 8 9 10 11 12 13 14 15 16 17 18 13 14 15 16 17 18 19 20 21 22 23 24

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by