Python中Matlab imfilter的等价函数

2024-06-24 13:09:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道MATLAB的conv2corr2的等价函数是scipy.signal.correlatescipy.signal.convolve。但是函数imfilter具有处理数组外部边界的属性。就像symmetricreplicatecircular。Python能做到吗


Tags: 函数signal属性scipy数组convolve等价replicate
2条回答

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

为了添加一些可靠的代码,我希望python中的imfilter(A, B)等价于简单的二维图像和过滤器(内核)。我发现下面给出的结果与MATLAB相同:

import scipy.ndimage
import numpy as np
scipy.ndimage.correlate(A, B, mode='constant').transpose()

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

scipy.ndimage.correlate(A, B, mode='nearest').transpose()

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

有关更多选项,请参见文档here

编辑1:

MATLAB提供了更多的选项,如here所述。具体来说,如果我们想使用'conv'选项,我们有MATLAB代码(例如):

imfilter(x, f, 'replicate', 'conv')

这与python等价:

scipy.ndimage.convolve(x, f, mode='nearest')

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

相关问题 更多 >