Python中Matlab imfilter的等效函数

Sam*_*uel 9 python matlab scipy

我知道的同等功能 conv2corr2MATLAB的是scipy.signal.correlatescipy.signal.convolve.但是该函数imfilter具有处理数组边界外部的属性.像symmetric,replicatecircular.Python能做到这一点

小智 6

只是为了添加一些可靠的代码,我想要imfilter(A, B)在python中等效于简单的2D图像和滤镜(内核)。我发现以下给出与MATLAB相同的结果:

import scipy.ndimage
import numpy as np
scipy.ndimage.correlate(A, B, mode='constant').transpose()
Run Code Online (Sandbox Code Playgroud)

对于给定的问题,这将起作用:

scipy.ndimage.correlate(A, B, mode='nearest').transpose()
Run Code Online (Sandbox Code Playgroud)

请注意,由于某种原因,MATLAB返回了预期答案的转置。

有关更多选项,请参见此处的文档。

编辑1:

有通过MATLAB给出记录更多的选择这里。具体来说,如果我们希望使用该'conv'选项,则可以使用MATLAB代码(例如):

imfilter(x, f, 'replicate', 'conv')
Run Code Online (Sandbox Code Playgroud)

这与python等效:

scipy.ndimage.convolve(x, f, mode='nearest')
Run Code Online (Sandbox Code Playgroud)

请注意'replicate',MATLAB 'nearest'中的python 与SciPy中的相同。


Sam*_*uel 3

使用函数 scipy.ndimage.filters.correlatescipy.ndimage.filters.convolve