一.为什么要去噪
图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等;所以前端的滤波没做好的话,会给后端的图像处理带来很多的麻烦,其实它最终的反应是图像在显示器上给人的视觉效果,我们要针对不同的应用达到最大优化。
二.怎么去噪
纵观网上论述,有各种去噪算法,现就我所知的就如下一一介绍。
2.1经典滤波算法
经典滤波算法有三种,均值滤波,中值滤波,wiener维纳滤波。
2.1.1均值滤波
均值滤波是中简单实用的线性滤波,基本思想是给目标像素一个包含其周围临近像素的模板,用模板中的像素平均值替代原像素值。一般来说,为了使得输出图像仍能保持在原灰度范围内,像素领域与模板的乘机需要除以9,以3x3领域为例,假设当前的待处理像素为f(m,n),那么最简单额一种均值滤波模块为
对上式加以修正,得到加权平均滤波器,如下:
假设一副为MxNde数字图像f(x,y),经过平滑滤波后所得的数字图像为g(x,y),那么它的每个像素点的灰度值由几个包含(x,y)的预定领域的像素的灰度级平均值来决定。如下所示:
式中,S是(x,y)像素点的不包含(x,y)这一像素点的预定领域,k是在S内坐标点的总数。
如果让某一图像经过一低通滤波器,就相当于是对图像进行均值滤波处理,这种滤波处理主要是通过把哪些突变点的灰度都分散在与其相邻点中,以达到平衡滤波效果。一般来说,经过均值滤波处理后图像得到平滑,同时噪声也得到抑制,但是对于极限像素值,这种与周围像素灰度值相差较大的像素,均值滤波比较敏感,会使图像边缘变得模糊。
2.1.2中值滤波
基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。matlab程序如下:
1 I = im2double(imread(‘E:/0.jpg‘)); 2 I = rgb2gray(I); 3 I1 = imnoise(I,‘salt & pepper‘); 4 I2 = medfilt2(I1); 5 I3 = imnoise(I,‘gaussian‘); 6 I4 = medfilt2(I3);
2.1.3wiener维纳滤波
使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。恢复图像f1(x,y)与原始图像f(x,y)之间的均方误差MSE的值最小的目标。最小均方误差MSE定义如下:
对误差进行平方运算,使得大误差的分量远小于小误差分量,通过选择min MSE可以限制滤波输出的主要误差,同时可以使用其他的最优准则来进行分析(例如平均误差)。但这些准则将使得分析的过程变得更为复杂,而且效果也不是那么好。
2.2形态学滤波
数学形态学主要包括膨胀,腐蚀,开运算,闭运算四个基本运算,其它的运算形式都可以由这四个基本运算通过不同的组合方式推导得到。在这四个基本运算中,结构元素贯穿其中,它是指一定尺寸的背景图像,没有固定的大小,也没有固定的形态,是根据输入图像和所需信息的形状特征,在形态变换算法设计时一并设计出来的。结构元素的选取直接关系到输入图像的处理结果。
对于二值图像,可以消除物体周围的噪声块;而利用闭运算,可以消除物体内部的噪声孔。对于灰度图像,在实际应用中开运算和闭运算分别用来消除较小尺寸的亮细节和暗细节。因此,将两种运算结合起来,可以很好的滤除亮区和暗去中的各类噪声,另外,结构元素与两种滤波相结合对图像细节的保护更有优势。腐蚀滤波的MATLAB程序如下:
1 %% imdilate膨胀 2 clc 3 clear 4 5 A1=imread(‘.\images\dipum_images_ch09\Fig0906(a)(broken-text).tif‘); 6 info=imfinfo(‘.\images\dipum_images_ch09\Fig0906(a)(broken-text).tif‘) 7 B=[0 1 0 8 1 1 1 9 0 1 0]; 10 A2=imdilate(A1,B);%图像A1被结构元素B膨胀 11 A3=imdilate(A2,B); 12 A4=imdilate(A3,B); 13 14 subplot(221),imshow(A1); 15 title(‘imdilate膨胀原始图像‘); 16 17 subplot(222),imshow(A2); 18 title(‘使用B后1次膨胀后的图像‘); 19 20 subplot(223),imshow(A3); 21 title(‘使用B后2次膨胀后的图像‘); 22 23 subplot(224),imshow(A4); 24 title(‘使用B后3次膨胀后的图像‘); 25 27%imdilate图像膨胀处理过程运行结果如下:
关于形态学滤波的几种matlab程序请参考链接 http://www.cnblogs.com/tornadomeet/archive/2012/03/20/2408086.html
2.3小波变换
小波变换相对的来说比较复杂,傅里叶变换是用一系列不同频率的正余弦函数去分解原函数,变换后得到是原函数在正余弦不同频率下的系数。小波变换使用一系列的不同尺度的小波去分解原函数,变换后得到的是原函数在不同尺度小波下的系数。不同的小波通过平移与尺度变换分解,平移是为了得到原函数的时间特性,尺度变换是为了得到原函数的频率特性。小波变换步骤:
1.把小波w(t)和原函数f(t)的开始部分进行比较,计算系数C。系数C表示该部分函数与小波的相似程度。
2.把小波向右移k单位,得到小波w(t-k),重复1。重复该部知道函数f结束.
3.扩展小波w(t),得到小波w(t/2),重复步骤1,2.
4.不断扩展小波,重复1,2,3.
详情请参考如下链接
http://www.cnblogs.com/tiandsp/archive/2013/04/12/3016989.html
http://blog.sina.com.cn/s/blog_4b9b714a0100cuzo.html
2.4双边滤波
双边滤波器是什么?双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。之所以可以达到此去噪效果,是因为滤波器是由两个函数构成。一个函数是由几何空间距离决定滤波器系数。另一个由像素差值决定滤波器系数。
程序和公式详情请参考如下链接:
http://blog.csdn.net/abcjennifer/article/details/7616663
2.5guide filter导向滤波
导向滤波网上讨论比较少,不过它是目前滤波算法当中滤波效果比较好的,速度快。
三.总结
针对各种滤波算法的讨论后,可知目前导向滤波的效果比较好,但这些都只是经过matlab验证,与实际的工程应用,还得根据综合情况来验证。