本文记录Matlab中的imfilter函数在Python下的对应函数,同时完美处理matlab卷积中对于边界的处理;文章引自ShuqiaoS博主,在此表示感谢,并加以验证和方法修改以及内容补充。
原文链接:https://blog.youkuaiyun.com/ShuqiaoS/article/details/110389141?spm=1001.2014.3001.5502
首先给出结论:
Matlab | Python |
---|---|
imfilter中的’conv’ | scipy.ndimage.convolve |
imfilter中的’conv’ | scipy.ndimage.convolve |
imfilter中的’corr’ | scipy.ndimage.correlate |
imfilter中的’replicate’选项 | 上述函数中的mode='nearest’选项 |
n×n的核 | 相同的核 |
n×1的核 | 将数值放于n × n 的核的第n / 2 + 1 列(注意起始下标id=0),其余位置为0 |
1×n的核 | 将数值放于n × n 的核的第n / 2 行,其余位置为0 |
其中,可以用命令scipy.ndimage.filters.convolve
和scipy.ndimage.filters.correlate
,也可以用scipy.ndimage.convolve
和scipy.ndimage.correlate
,这两个命令是等价的
Conv
核尺寸为n×n时
下面的例子中,输入为:
核函数为:
Matlab命令:
imfilter(img, kernel, 'conv', 'replicate')
对应Python命令:
scipy.ndimage.filters.convolve(input, kernel, mode=