我正在尝试使用colfilt执行滑动邻域操作。我基本上是在运行一些函数的同时,在图像上运行2X2窗口:
f = @(x,y) (func(diff(x:x+1,y:y+1),s(x:x+1,y:y+1)));
e = colfilt(img, [2 2], 'silding', f);其中diff和s与img大小相同(以各种方式计算的响应)。func是一个在diff和s上执行一些计算的函数。
我一直收到这个错误:
Matrix dimensions must agree.
Error in colfilt (line 133)
if all(block>=size(a)), % Process the whole matrix at once.
Error in create_e (line 14)
e = colfilt(img, [2 2], 'silding', f);任何想法都将不胜感激。非常感谢。
发布于 2015-11-30 16:00:04
我认为你想要使用一个不同的函数nlfilter,或者你需要调整你的函数,因为你似乎假设你的函数的输入是一个2乘2的数组。
colfilt将每个块重塑为nElementsInBlock-by-1数组,并将它们排列在nElementsInBlock-by-nBlocks数组中,以便您可以在单个步骤中计算函数(例如,峰度)。
nlfilter在滑动窗口上应用函数,将每个块作为n×m数组传递给用户定义的函数。
https://stackoverflow.com/questions/33988793
复制相似问题