im2col error in size
2 次查看(过去 30 天)
显示 更早的评论
Hi this is my code:
R=rand(162,72);
r=im2col(R,[2 2],'sliding');
R1=col2im(r,[2 2],size®,'sliding');
the size of R is [162 72];
when I use line 1 it is OK. It gives me a a matrix r with size of r=[4 11431]
but at line 2 to obtain R, when I want to convert them to the original matrix via col2im, it give me this error:
"To RESHAPE the number of elements must not change."
Can anybody help me please and tell me what is the problem?
0 个评论
采纳的回答
Image Analyst
2012-7-16
What are you really trying to do? im2col() and col2im() are confusing functions that are probably going to be deprecated soon. How did you ever stumble upon those? Can't you do what you want to do with reshape() or blockproc() or something?
3 个评论
Image Analyst
2012-7-16
编辑:Image Analyst
2012-7-16
I'm glad you explained that because now I can recommend nlfilter() as the proper way to do what you want to do. My advice is to not use reshape() but to use nlfilter(), or alternatively blockproc() if you don't have the Image Processing Toolbox.
更多回答(1 个)
Sean de Wolski
2012-7-16
Because you are using a 'sliding' block with im2col the number of elements in r is much bigger than the number in R. Compare:
numel(R)
numel(r)
What you have works with 'distinct' blocks as you would expect:
R=rand(162,72);
r=im2col(R,[2 2],'distinct');
R1=col2im(r,[2 2],size(R),'distinct');
5 个评论
Image Analyst
2012-7-17
That won't happen if you don't do that im2col/col2im stuff and use nlfilter instead.
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!