我想在 python 中找到一个应用 2d 滤镜或 3d 滤镜的函数。该函数应接收过滤函数和数据。
像Matlab中的函数filter2
和imfilter
,
或者像 python 中的函数 scipy.ndimage.gaussian_filter()
,它可以处理 N 维但仅适用于高斯滤波器(我希望滤波器作为参数)
我想我可以编写一个使用多维卷积 (scipy.ndimage.convolve()
) 应用过滤器的函数,但我对 1d 过滤器没有成功。
我用于一维过滤的代码:
signal.convolve(signal, filter_, mode='same', method='auto')
,它给出了与函数 signal.filtfilt(filter_, 1, signal, padlen=len(信号)-1)
。
是否有应用 N 维滤镜的函数? 如果没有,我该如何使用卷积函数?
谢谢!
最佳答案
scipy.ndimage.generic_filter(input, function, size, footprint)
会有帮助。
这是文档 scipy.ndimage.generic_filter和用法tutorial .
您可以使用footprint
或size
来设计过滤范围。例如,size = 3
或 footprint = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
设置以当前点为核心的3*3*3数组。 function
将其作为一维数组并返回所需的标量。您可以将 function(array)
定义为您的自定义过滤器。
通用过滤器将遍历 input
并默认使用 mode = 'reflect
处理边界。
关于python - 如何在 python 中应用 2d 和 3d 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59801475/