如何在 python 中应用 2d 和 3d 过滤器
Posted
技术标签:
【中文标题】如何在 python 中应用 2d 和 3d 过滤器【英文标题】:how to apply 2d and 3d filters in python 【发布时间】:2020-05-05 04:12:10 【问题描述】:我想在 python 中找到一个应用 2d 过滤器或 3d 过滤器的函数。该函数应该接收过滤函数和数据。
就像 Matlab 中的函数 filter2
和 imfilter
,
或者像python中的函数scipy.ndimage.gaussian_filter()
,它可以处理N维但仅适用于高斯过滤器(我希望过滤器成为一个参数)
我想我可以编写一个使用多维卷积 (scipy.ndimage.convolve()
) 应用过滤器的函数,但是对于一维过滤器我没有成功。
我用于一维过滤的代码:
signal.convolve(signal, filter_, mode='same', method='auto')
,它给出的结果与函数 signal.filtfilt(filter_, 1, signal, padlen=len(signal)-1)
不同。
是否有应用 N-D 滤镜的功能? 如果没有,我该如何使用卷积函数?
谢谢!
【问题讨论】:
【参考方案1】: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 中应用 2d 和 3d 过滤器的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 VSCode 和 python 使用 blender 将 2D 小部件与 3D 模型集成
Python 中值滤波器应用于 3D 数组以产生 2D 结果
如何在 python 中用两个 2D 数组初始化一个 3D 数组?