python ndimage.gaussian_filter_python – 仅沿一个轴平滑2D数组

这篇博客探讨了如何使用scipy.ndimage库中的gaussian_filter1d函数,仅沿2D数组的一个轴(例如x轴)进行平滑处理。博主展示了如何应用1D滤波器,包括均匀滤波器和汉明窗,并通过代码示例解释了如何创建非1D版本的滤波器以实现单轴平滑。文章提供了不同滤波效果的可视化展示。
摘要由CSDN通过智能技术生成

该脚本非常适用于平滑1D功能,并且它们还为两个轴上的2D平滑提供代码(即模糊图像).

但是,我想将此函数应用于2D数据集,但仅沿一个轴(x方向).我可以循环执行此操作,方法是检查y中的每个切片,应用1D卷积,然后重建阵列.但这似乎是糟糕的编码技术.

因此,我想知道如何在2D中做到这一点?我想我需要制作一个2D内核,权重只沿一个方向变化,但我不知道该怎么做,或者使用哪个卷积函数(numpy.convolve,scipy.signal.convolve,scipy.ndimage.filters .convolve1d等)

解决方法:

也许最简单的选择是使用scipy.ndimage.filters中的一个1D过滤器:

from scipy import ndimage

from scipy.misc import lena

img = lena()

# a uniform (boxcar) filter with a width of 50

boxcar = ndimage.uniform_filter1d(img, 50, 1)

# a Gaussian filter with a standard deviation of 10

gauss = ndimage.gaussian_filter1d(img, 10, 1)

你也可以使用这样的过滤器的非1D版本:ndimage.gaussian_filter(img,(0,10))(即,对于你不想平滑的轴,将过滤器宽度设置为0).

import numpy as np

kern = np.hanning(50) # a Hanning window with width 50

kern /= kern.sum() # normalize the kernel weights to sum to 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值