gaussian_filter( )函数(高斯滤波)

本文详细介绍了高斯滤波的概念和应用,通过实例展示了对一维和二维数据进行高斯滤波的过程。高斯滤波是一种平滑处理,通过使用高斯函数确定周围点的权重,使得处理点的模糊效果增强。文中给出了Python中实现一维和二维高斯滤波的函数,并解释了如何调整参数以改变滤波强度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对一个数进行高斯滤波(模糊)可以理解成将该数取附近矩形窗口所有值的加权平均值,距离处理数越近的点权重越大,距离处理点越远的点权重越小。因此如果取的矩形窗口越大,那么对处理点的模糊效果越强烈。

上图,对数值2进行高斯滤波(模糊),取该数附近3×3阶矩形窗口(左图)。如果待处理点2直接取周围点的平均值,就会变成1(右图)。在数值上,这是一种平滑化,在图形上,就相当于产生模糊效果,让中间点失去细节。

因为数值和图像都是连续的,越靠近待处理点的点关系越密切,越远离待处理点的点关系越疏远,像上图那样直接使用简单平均是不合理的。用加权平均更合理,即距离越近的点权重越大,距离越远的点权重越小。之所以把这种滤波方式叫做高斯滤波,是因为权重值是由高斯函数决定

一维高斯分布函数:G(x)=\frac{1}{\sqrt{2\pi}\sigma }e^{-\frac{x^2}{2\sigma ^2}}   

二维高斯分布函数:G(x,y)=\frac{1}{2\pi \sigma^2 }e^{-\frac{x^2+y^2}{2\sigma ^2}}

1 一维高斯滤波 

存在如下一组数据,现对4进行高斯滤波,选取4附近的1×3矩形窗口,即[3 4 2]进行加权求和。

[3 4 2 5 8 1 6]

假定4的坐标是0,那么它附近的矩形窗口的坐标是[-1 0 1]。 一维高斯分布函数可以决定一维数据周围点的权重值,假设\sigma=1,分别将坐标代入一维高斯分布函数得到权值矩阵[0.2419 0.3989 0.2419],这3个点的权值总和等于0.8827,如果要计算这3个点的加权平均,必须让他们的权重之和=1,因此权值矩阵还要分别除以0.8827,得到最终的权重矩阵[0.2740 0.4519 0.2740]。将每个点乘以对应的权值,将所有值相加(0.822+1.8076+0.548=3.1776)就是待处理值4的高斯模糊值。像4一样,对3 4 2 5 8 1 6每个数据都进行这样的操作,就是对这个数据进行了高斯滤波。

需要注意的是开头3和结尾6,要么不进行高斯滤波(常用),要么补零。

python中,一维高斯滤波器的函数:

gaussian_filter1d(input, sigma)

input:输入一维数据;sigma: 高斯函数里面的\sigma\sigma越大滤波越厉害;返回一个和input形状一样的数据。

2 二维高斯滤波

现对下图一中的4进行高斯滤波,选取4附近的3×3矩形窗口,对[[14 15 16],[24 25 26],[34 35 36]]进行加权求和。假定25的坐标是(0,0),那么它附近的矩形窗口的坐标是[[(-1,1) (0,1) (1,1)],[(-1,0) (0,0) (1,0)],[(-1,-1) (0,-1) (1,-1)]]。 二维高斯分布函数可以决定二维数据周围点的权重值,假设\sigma=1.5,分别将坐标代入一维高斯分布函数得到权值矩阵(图二),9个点的权值总和等于0.4787147,如果要计算这9个点加权平均,必须让他们的权重之和=1,故权值矩阵还要分别除以0.4787147,得到最终的权重矩阵(图三)。将每个点乘以对应的权值(图四),将所有值相加(24.9999)就是待处理值25的高斯模糊值。

python中,多维高斯滤波器的函数:

gaussian_filter(input, sigma)

input:输入矩阵;sigma: 高斯函数里面的\sigma\sigma越大滤波越厉害;返回一个和input形状一样的数据。

参考:高斯滤波gaussian_filter()_wanghua609的博客-CSDN博客_gauss_filter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值