OpenCv图像处理——高斯滤波

高斯滤波原理

以某一像素为中心,在它的周围选择一个局部邻域,把邻域内像素的灰度按照高斯正态分布曲线进行统计,分配相应的权值系数,然后将邻域内所有点的加权平均值代替原像素值。

其中k, l是根据所选邻域大小确定。

维高斯函数图:

                    

正态分布曲线为钟形形状表明:中心原点越,高斯函数取值越大。正态分布常被用来进行权值分配。理解高斯滤波可以参考理解均值滤波的方法,均值滤波是把卷积核里面的每一个像素的权值都设置为1,而高斯滤波则是距离核中心越近的像素所占的权重越高。如上图所示的那样中心权重最高,以中心扩散权重一次减小。高斯函数有一个参数叫做标准差\sigma,标准差越小分布越集中,生成高斯模板的中心系数值远远大于周围系数值,高斯图像越尖。反之越大分布越分散,生成高斯模板中不同系数值差别不大,高斯图像越平缓。

高斯模板特点

按照正态分布曲线的统计,模板上不同位置赋予不同的加权系数值
 
标准差 \sigma 影响 高斯模板生成的关键参数。
 
\sigma 值越大 ,生成高斯模板中不同系数值差别不大,类似均值模板,对图像的平滑效果较明显。

代码实现:

import cv2


lena_noise = cv2.imread("lenaNoise.png")

lena_Gaus_r11 = cv2.GaussianBlur(lena_noise, (11, 11), 0, 0)  # 图像  卷积核大小   x方向的方差  y方向的方差
lena_Gaus_r5 = cv2.GaussianBlur(lena_noise, (5, 5), 0, 0)    # 需要注意卷积核大小必须为奇数

cv2.imshow("lena_noise", lena_noise)
cv2.imshow("lena_Gaus_r11", lena_Gaus_r11)
cv2.imshow("lena_Gaus_r5", lena_Gaus_r5)

cv2.waitKey()
cv2.destroyAllWindows

运行结果:

       

                                  带噪声的lena                                                                           卷积核大小为11的高斯滤波

                       卷积核大小为5的高斯滤波

可以看出卷积核越大,噪声被过滤的越彻底,但是图像的质量也会变得模糊。


参考文献:[1]蔡利梅,王利娟. 数字图像处理使用MATLAB分析与实现[M]. 北京:清华大学出版社,2019.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值