均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度值g(x,y),即g(x,y)=1/m ∑f(x,y), m为该模板中包含当前像素在内的像素总个数。这样的方法可以平滑图像,速度快,算法简单。但是无法去掉噪声,这能微弱的减弱它[14]。
中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。在图像处理中,中值滤波常用来保护边缘信息,是经典的平滑噪声的方法,该方法法对消除椒盐噪音非常有效,在光学测量条纹图象的相位分析处理方法中有特殊作用,但在条纹中心分析方法中作用不大[14]。
双边滤波器(英语:Bilateral Filter)是使图像平滑化的非线性滤波器,与传统的图像平滑化算法不同,双边滤波器除了使用像素之间几何上的靠近程度之外,还多考虑了像素之间的光度、色彩的差异, 使双边滤波器能够有效的将图像上的噪声去除,同时保存图像上的边缘讯息。
a.原图 b. 高斯滤波
c. 均值滤波 d. 中值滤波结果 e. 双边滤波结果
图3.1各滤波器对比
根据以上几幅图,可以看出高斯滤波和均值滤波模糊了边界,而中值滤波和双边滤波则能够较好的保存图像的边界信息。为此,选择双边滤波器进行实验。
3.3双边滤波原理
在文献Bilateral Filtering for Gray and Color Images[15]中,详尽的解释了双边滤波。双
11
边滤波方法(Bilateral filtering)是基于Gsuss滤波方法提出的,主要是针对Gauss滤波中将Gauss权系数直接与图像信息作卷积运算进行图像滤波的原理,将滤波权系数优化成Gauss函数和图像亮度信息的乘积,优化后的权系数再与图像信息作卷积运算,这样就能在滤波的同时考虑到图像信息中的图像边缘信息,使图像在正常Gauss滤波后很模糊的边缘信息得以保持清晰,并且图像边缘更加平滑。此方法对于彩色和灰度图像的滤波均适用,具有很强的适用性。双边滤波与高斯滤波器相比,对于图像的边缘信息能过更好的保存。其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘。
零均值加性高斯噪声图像模型:
(1)
式中,f表示无噪声图像,n是服从零均值高斯分布的噪声,g是噪声图像;g ( x, y )表示图像g在位置(x,y)上的像素值。滤除噪声图像g中的噪声n,重建无噪声图像f。双边滤波器采用局部加权平均的方法获取复原图像的像素值:
(2)
公式中,Ss,y 表示中心点(x,y)的(2N+1)*(2N+1)大小的领域。实 际上,公式(2)右边就是中心像素点邻域内像素亮度值的加权平均。对该邻域内的每一个像素点g(i,j)由两部分因子的成绩组成,分别是下面的空间距离和灰度距离。
空间距离:是当前目标点与中心点的欧式距离。空间域的高斯函数其数学形式为:
(3)
其中(xi,yi)为当前点的位置,(xc,yc)为中心点的位置,sigma是空间域标准差。 灰度距离:是当前目标点灰度与中心点灰度想差的绝对值。值域高斯函数其数学形式为:
(4)
其中gray(xi,yi)为当前点灰度值,gray(xc,yc)为中心点灰度值,sigma为值域标准差。 双边滤波中加入了对点灰度信息的权重:在邻域内,灰度值越是接近中心点灰度值的点的权重更大,而灰度值相差大的点权重越小。此权重大小,则由值域高斯函数来确定。两者权重系数相乘,可以得到最终的卷积模板。因为双边滤波需要每个中心点邻域的灰度信息以确定其系数,所以它的速度与比一般的滤波慢很多,并且计算量增长速度为核大小的平方。空间域sigma选取可以参考OpenCV参考文档所写:“对应高斯参数的 Gaussian sigma (标准差),如果为零,则标准差由下面的核尺寸计算: sigma = (n/2 - 1)*0.3
12
+ 0.8,其中 n=param1 对应水平核,n=param2对应垂直核”。
而对值域sigma来说,Sigma越大,边缘越模糊,极限情况为simga无穷大,值域系数近似相等(忽略常数时,将近为exp(0)= 1),与高斯模板(空间域模板)相乘后可认为等效于高斯滤波。sigma越小,边缘越清晰,极限情况为simga无限接近0,值域系数近似相等(接近exp(-∞) = 0),与高斯模板(空间域模板)相乘后,可近似为系数皆相等,等效于源图像。
3.4实现双边滤波
选择使用的双边滤波器[16],由于要确保图像细节的完整,sigma的值不可以过大导致模糊失真,所以选择sigma小值,通过一次滤波后观察是否需要继续进行下一次。
%读入图像,设定名字为test I=imread('test.bmp'); %改变图像精度才能进行后续操作 I=im2double(I);
%设定w和sigma,为双边滤波做准备 w = z; sigma = [x y];
%进行多次双边滤波,双边滤波函数见[4] I1=bfilter2(I,w,sigma); I2=bfilter2(I1,w,sigma); I3=bfilter2(I2,w,sigma); I4=bfilter2(I3,w,sigma); I4=bfilter2(I4,w,sigma); I4=bfilter2(I4,w,sigma); I4=bfilter2(I4,w,sigma); I4=bfilter2(I4,w,sigma);
3.5小结
本章实现了双边滤波,下图中显示为原图与双边滤波1、2、3次后眼睛部位的对比。在sigma为[3 0.1]可以清晰看见原图中眼睫毛在一次滤波后便被滤出了大部分,之后2、3次中几乎不见眼睫毛了,对于要进行漫画化必须强化边缘的实验是不允许的。
13
a.0次
b.1次
c.2次 d.3次
a.0次
b.1次
图3.2
c.2次 d.8次
所以在对sigma的取值判断中,将值设定为[240 0.05]进行操作,可以看到在0.05下眼睫毛是有所保存,但是对图像的去噪效果降低了,为了突出重点所以只能进行多次双边滤波,对每次的结果进行比较选择确定次数以达到需要的效果。
14

