4

我使用这两个功能来查找比例尺上的边缘。您有一个输入图像,您将蒙版(例如 prewitt)应用于输入图像,并获得结果图片。

mypic = imread('examplepic.jpg')
hy = fspecial('prewitt')
yimfilter = imfilter(mypic,hy) % Using imfilter
yconv2 = conv2(mypic,hy) % Using conv2

这两者之间的理论区别是什么?我知道我有不同的输出,但有什么区别?

谢谢

4

2 回答 2

9

conv2 输出整个二维卷积,这意味着 yconv2 会比 mypic 大。另一方面,默认情况下,imfilter 会修剪卷积的边缘,以便 yimfilter 与 mypic 的大小相同。你可以让 imfilter 像 conv2 一样离开整个卷积,但这不是它的默认行为。

还有其他区别:imfilter 的“复制”选项,imfilter 可以对任意数量的维度(不仅仅是 2)进行卷积,等等,但我认为您不是在问这个问题。

于 2011-10-26T23:31:15.720 回答
0

好吧,imfilter默认情况下使用相关性,而不是卷积。如果你打电话

yimfilter = imfilter(mypic,hy,'conv')

然后yconv2yimfilter将是一样的。至于相关和卷积之间的区别,如果您使用一维卷积/相关掩码,您可以很容易地看到它。输出将是相同的,只是移动了一行/列(取决于掩码的方向)。

顺便说一句,如果你打电话

yimfilter = imfilter(mypic,hy)
yfilter2 = filter2(hy,mypic)

你会发现yimfilteryfilter2是一样的,因为filter2也使用了相关性。

于 2016-05-27T09:53:30.193 回答