Opencv学习笔记(三)线性及非线性滤波

本文深入探讨了图像处理中的滤波技术,包括方框滤波、均值滤波、高斯滤波、中值滤波和双边滤波。介绍了各种滤波器的工作原理,如卷积核的使用,以及它们在抑制噪声和平滑图像方面的应用。

大纲

1.滤波综述
2. 方框滤波
3. 均值滤波
4. 高斯滤波
5. 中值滤波
6. 双边滤波

一、滤波综述
图像的滤波指的是在尽量保证图像细节特征的的情况下对图像中的噪声进行抑制,又因为图像的能量大部分集中在低频或者中频的区域(图像大部分区域是连贯的,波动不大,频率),而高频部分则大多为边缘信息(图像变换快)或者是噪声。所以滤波器分为两种,低通滤波高通滤波,前者的作用就是保证低频区域的稳定,尽量去除噪声,但也不可避免的带来边缘信息的丧失,所以也称作“平滑”或者“模糊”;后者则着重于增强图像的边缘信息,对于噪声的抑制则较弱,所以也叫做“锐化”。本次要介绍的几个滤波器都是着重于抑制图像的噪声,可以算是低通滤波器,且都为邻域算子滤波即通过卷积核和源图像卷积,给定像素周围像素值决定此像素最终值。

二、方框滤波与均值滤波
方框滤波是将一个全为1的卷积核与源图像进行卷积,像素加权得到,而均值滤波则是在此基础进行了归一化,规避了溢出的风险。这中方法是用待求像素周围矩形区域像素的均值来代替该值(这样点上教材上是说待求点本身不介入均值运算,但网上各类代码及卷积核介绍都是将待求点也介入,倾向于后者正确),因为典型的噪声就是灰度值的急剧变化,而图像区域一般是连续的,通过这样方式就可以平滑噪声,但同时也造成了边缘信息的丧失。卷积核如下:

在这里插入图片描述
当a为1时,就是方框滤波;当a=元素数目时,就是均值滤波。
opencv中方框滤波函数原型如下:

boxFilter( InputArray src, OutputArray dst, int ddepth,Size ksize, Point anchor = Point(-1,-1),bool normalize = true,int borderType = BORDER_DEFAULT );

第一个参数为输入图像,通道数不限,滤波函数对通道都是单独处理的,但深度需要为CV_8U,CV_16U,CV_16S,CV_32F,CV_64F之一;
第二个参数为输出图像,需要和输入图像同类型同大小;
第三个参数为输出图像的深度,选填-1则为保持原深度,当输出结果可能溢出时换用其他值;
第四个参数为卷积核的大小,Size类型,一般选用奇数长正方形区域;
第五个参数为锚点,即被平滑的点(均值代替的点),默认值(-1,-1)表示为卷积核中心;
第六个参数为归一化选项,如果选1则变成了均值滤波;
第七个参数为边缘填充选项,有默认值BORDER_DEFAULT;

均值滤波函数原型:

blur( InputArray src, OutputArray dst,Size ksize, Point anchor = Point(-1,-1),int borderType = BORDER_DEFAULT );

参数介绍与方框滤波一致。

二、高斯滤波
高斯滤波也是通过卷积核与原图像卷积,像素加权得到,但与均值滤波不同的是卷积区域内像素的权值不再相同,而是满足二维正态(高斯)分布,离中心越近权值越大,离中心越远权值越小,这样可以有效抑制服从正态分布的噪声。二维高斯分布数学公式如下:
f ( x , y ) = 1 2 π ( σ x 2 + σ y 2 ) e − ( x − μ x ) 2 2 σ x 2 − ( y − μ y ) 2 2 σ y 2 f(x,y)=\frac{1}{\sqrt{2\pi(\sigma_x^2+\sigma_y^2)}}e^{-\frac{(x-\mu_x)^2}{2\sigma_x^2}-\frac{(y-\mu_y)^2}{2\sigma_y^2}} f(x,y)=2π(σx2+σy2) 1e2σx2(xμx)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值