【发布时间】:2014-10-19 04:01:56
【问题描述】:
我正在尝试使用 colfilt 函数通过图像运行自定义过滤器。这个过滤器基本上在图像中运行一个 nxn 窗口,并将中心像素替换为其最小和最大和的一半。代码是这样的:
colfilt(image, 3, "sliding", @(x) (min(x(:))+max(x(:)))/2)
但是,我收到了这个错误:
error: col2im: can't resize B in matrix sized (A_SIZE - BLOCK_SIZE +1)
error: called from:
error: /usr/share/octave/packages/image-2.2.1/col2im.m at line 143, column 9
error: /usr/share/octave/packages/image-2.2.1/colfilt.m at line 152, column 9
如果我用 nfilter 替换函数,如下所示
nlfilter(image, [n n], @(x) (min(x(:))+max(x(:)))/2)
它工作正常,但它太慢了,所以我认为第一个选项必须更好。
有谁知道如何让它工作?
提前致谢。
【问题讨论】:
-
看起来您分配
colfilt的结果的矩阵的大小应该是 A - blocks_size 的大小(在你的情况下为 3)+ 1 = A - 2 的大小和它没有这样的尺寸。 -
但我没有将结果分配给任何变量
-
你 - 不是,但是 colfilt 调用了 col2im 并且确实如此。原始图像的尺寸是多少?尝试不仅使用
3,还使用[3 3] -
我在一个 6x6 的假矩阵上测试它。原始图像为 512x512。我对
[3 3]有同样的错误
标签: matlab image-processing octave threshold