首页 > 解决方案 > 如何将二项式 1-2-1 过滤器应用于 2D numpy 数组?

问题描述

我正在尝试将二项式 1-2-1 过滤器应用于 Python 中形状为 (800, 800) 的二维数据数组,使其平滑并且数据中的任何噪声都消失了,但一般圆形特征随着减少图中显示的值被保留。我知道这篇文章及其答案:如何将二项式低通滤波器应用于 NumPy 数组中的数据? 但是,我在那篇文章中找到的方法似乎主要适用于一维数据,而我想过滤一个二维数组。对于在 2-DI 上有效的方法,我确信我做得不对,但我不知道正确的方法是什么。

#Gives binomial coeffs for convolution with data when we want to apply a binomial 1-2-1 low-pass filter n times
coeffs=np.asarray([0.25, 0.5, 0.25])
for _ in range(n):
    coeffs = convolve(coeffs, np.asarray([0.25, 0.5, 0.25]))    
return coeffs

尝试1:

bicoeffs=binomcoeffs(450)
filtered_p=lfilter(bicoeffs, [1.0], psfc, axis=0) 

#Results in filtered data that does not look right at all.

尝试2:

bicoeffs=binomcoeffs(450)

[ylen, xlen]=np.shape(psfc)

test3=np.zeros((ylen, xlen))
for xi in np.arange(xlen):
test3[:, xi]=convolve(psfc[0:799, xi], bicoeffs, mode='valid') 

任何关于我做错了什么的意见将不胜感激。

原始数据

尝试 1 结果

尝试 2 结果

标签: pythonarraysnumpy

解决方案


推荐阅读