摘要
数字图像处理是一门新兴技术,随着计算机硬件的发展,其处理能力的不断增强,数字图像的实时处理已经成为可能。由于数字图像处理的各种算法的出现,图像处理学科在飞速发展的同时逐渐向其他学科交叉渗透。数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。这种处理技术已经在各个领域上都有了比较广泛的应用。图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作
关键词:MATLA、仿真、 噪声、 滤波
图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等;目前比较经典的图像去噪算法主要有以下三种:均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。在信息化的社会里,图像在信息传播中所起的作用越来越大。所以,消除在图像采集和传输过程中而产生的噪声,保证图像受污染度最小,成了数字图像处理领域里的重要部分。
本文主要分析邻域平均法、中值滤波法、维纳滤波法及模糊小波变换法的图像去噪算法。首先介绍图像处理应用时的常用函数及其用法;其次详细阐述了四种去噪算法原理及特点;最后运用Matlab软件对一张含噪图片(含高斯噪声或椒盐噪声)进行仿真去噪,通过分析仿真结果得出:
一.均值滤波是典型的线性滤波,对高斯噪声抑制是比较好的;
二.中值滤波是常用的非线性滤波方法,对椒盐噪声特别有效;
三.维纳滤波对高斯噪声有明显的抑制作用;
1.1均值滤波的仿真
本实验选用平均法对含有高斯噪声的图片进行去噪,并用Matlab软件仿真。首先给图像加入均值为0,方差为0.02的高斯噪声,选择3×3模板去噪从仿真结果可以看出:邻域平均法实现起来很方便,适用于消除图像中的颗粒噪声,但需要指出这种方法既平滑了图像信号,同时使图像的细节部分变得模糊。由以上处理后的图像可以看到:邻域平均法消弱了图像的边缘,使图像变得有些模糊。如图1-1所示,均值滤波对高斯噪声的抑制是比较好的,但对椒盐噪声的抑制作用不好,如图1-2所示,椒盐噪声仍然存在,只不过被削弱了而已。为了改善均值滤波细节对比度不好、区域边界模糊的缺陷,常用门限法来抑制椒盐噪声和保护细小纹理,用加权法来改善图像的边界模糊,用选择平均的自适应技术来保持图像的边界。
1.2中值滤波的仿真
本节选用中值滤波法对含有高斯噪声的图像进行去噪,并用Matlab软件仿真。给图像加入均值为0,方差为0.02的高斯噪声,分别选择3×3模板、5×5模板和7×7模板进行去噪而对于高斯噪声来说,如图1-3所示,虽然也有一些去噪效果,但效果不佳。由此可知,中值滤波法运算简单,易于实现,而且能较好地保护边界,但有时会失掉图像中的细线和小块区域。并且采用窗口的大小对滤波效果影响很大,窗口越大,图像去噪效果越好,但代价是模糊的程度越大。
1.3维纳滤波的仿真
从仿真结果可以看出:维纳滤波对高斯白噪声的图像滤波与邻域平均法比较, 滤波效果好,它比线性滤波器具有更好的选择性,可以更好地保存图像的边缘和高频细节信息。虽然,维纳滤波在大多数情况下都可以获得满意的结果,尤其对含有高斯噪声的图像。另外维纳滤波对于椒盐噪声去除效果却不尽人意,几乎没有效果。它不能用于噪声为非平稳的随机过程的情况,对于向量情况应用不方便。因此,维纳滤波在实际问题中应用不多。 从仿真结果可以看出:为验证本文算法的滤波效果,对加入不同噪声的图像进行了滤波测试。从视觉来看,自适应模糊小波变换算法在保持细节和去噪两方面效果最好。在平滑高斯噪声和有脉冲噪声的图像去噪效果都很显著。本算法相对于其它几种算法其效果都有明显的改进,既能够很好地消除噪声,又能够较好地保持图像边缘细节,而且算法简单,易于实现。目前使用比较广泛。
可以看出,不同的滤波器常对特定的噪声有较好的滤波效果,由于噪声种类众多,产生原因复杂,有时图像会受到不同噪声的影响,仅用一种滤波器不能获得全面的滤噪效。为此常用不同的空域噪声滤波器结合起来,发挥他们各自的优点,在图像去噪的研究上也仍旧有着巨大的进步空间。
Matlab图像去噪仿真结果如下图所示:
参考程序:
一丶
A = imread('C:\Users\qiang_000\Desktop\dog.jpg');%读入彩色图片
B=rgb2gray(A);%把彩色图片转化成灰度图片,256级
B_gaosi=imnoise(B,'gaussian');%加入高斯噪声
h=fspecial('average',3);%fspecial函数用于预定义滤波器
A_junzhi=uint8(round(filter2(h,B)));%进行均值滤波
A_zhongzhi=medfilt2(B_gaosi,[7,7]);%进行中值滤波
A_weina=wiener2(B_gaosi,[7,7]);%进行维纳滤波
subplot(2,3,1);imshow(B);title('原灰度图像');
subplot(2,3,2);imshow(B_gaosi);title('加入高斯噪声后的图像');
subplot(2,3,3);imshow(A_junzhi);title('均值滤波后的图像');
subplot(2,3,4);imshow(A_zhongzhi);title('中值滤波后的图像');
subplot(2,3,5);imshow(A_weina);title('维纳滤波后的图像');
二、
A=imread('C:\Users\qiang_000\Desktop\dog.jpg');%读入彩色图片
B=rgb2gray(A);%把彩色图片转化成灰度图片,256级
B_jiaoyan=imnoise(B,'salt & pepper');
h=fspecial('average',3);%fspecial函数用于预定义滤波器
A_junzhi=uint8(round(filter2(h,B)));
%进行均匀滤波,filter2函数用于图像滤波,此处h是滤波参数(均值),B是要处理的图像,round为最近的整数,unit8为函数类型
A_zhongzhi=medfilt2(B_jiaoyan,[7,7]);
%进行中值滤波,窗口越大处理效率越明显,但图像会越来越模糊,7*7的窗口比较合适
A_weina=wiener2(B_jiaoyan,[7,7]);
subplot(2,3,1);imshow(B);title('原灰度图像');
subplot(2,3,2);imshow(B_jiaoyan);title('加入椒盐噪声后的图像');
参考文献:
[1] 杨群生,陈敏等.基于模糊技术的随机噪声消除算法[J].华南理工大学学报,2000,28(8):82-87.
[2] 杨晋生,蔡靖等.一种具有鲁棒性的基于小波变换的滤波方法[J].电子与信息学报,2002,24(3):413-417.
[3] 张磊,潘泉,张洪才等.小波域滤波阈值参数的选取[J].电子学报,2001,29(3):400-402.