'imfilter'和'conv2'之间的差异[MATLAB]

use*_*227 4 matlab edge-detection

我用这两个函数来找到刻度上的边.你有一个输入图像,你将一个掩码(例如prewitt)应用于输入图像,并获得结果图片.

mypic = imread('examplepic.jpg')
hy = fspecial('prewitt')
yimfilter = imfilter(mypic,hy) % Using imfilter
yconv2 = conv2(mypic,hy) % Using conv2
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Jim*_*lay 9

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

还有其他差异:imfilter的"复制"选项,imfilter可以对任意数量的维度(不仅仅是2)进行卷积,依此类推,但我不认为你是在问这个问题.