Python或它的任何模块都有MATLAB的conv2函数的等价物吗?更具体地说,我感兴趣的是与MATLAB中的conv2(A, B, 'same')
执行相同计算的东西。
发布于 2010-09-16 23:25:30
看起来scipy.signal.convolve2d就是你要找的。
发布于 2016-07-13 15:27:16
虽然其他答案已经提到了scipy.signal.convolve2d
作为等价物,但我发现使用mode='same'
时结果确实不同。
Matlab的conv2
会在图像的底部和右侧产生伪像,而scipy.signal.convolve2d
在图像的顶部和左侧会产生相同的伪像。
查看这些链接以查看显示行为的图表(没有足够的声誉直接发布图像):
Upper left corner of convoluted Barbara
Lower right corner of convoluted Barbara
下面的包装器可能不是很有效,但在我的例子中,通过将输入数组和输出数组都旋转180度解决了这个问题:
import numpy as np
from scipy.signal import convolve2d
def conv2(x, y, mode='same'):
return np.rot90(convolve2d(np.rot90(x, 2), np.rot90(y, 2), mode=mode), 2)
发布于 2010-09-16 21:55:38
scipy.ndimage.convolve
它是在n维空间中实现的。
https://stackoverflow.com/questions/3731093
复制