环境下基于小波变换的图像去噪环境下基于小波变换的图像去噪环境下基于小波变换的图像去噪环境下基于小波变换的图像去噪刘智华中师范大学教育信息技术工程研究中心,湖北武汉(430079)E-mail:liuzhi38865999@163.com摘摘摘摘要要要要::::图像消噪是信号处理中的一个经典问题,传统的消噪方法多采用平均或线性方法进行,但是其消噪效果不好,随着小波理论的不断完善,它以自身良好的时频特性在图像消噪领域受到越来越多的关注,本文将以MATLAB为平台介绍以小波变换去除图像噪声的基本方法,并且在MATLAB中小波分析工具箱所提供的GUI上分析和验证滤波效果。关键词:关键词:关键词:关键词:MATLAB,小波变换,图像去噪,GUI中图分类号:TP391.41.引言近年来,小波分析技术在图像处理应用上取得了一些新的进展。小波分析是泛函分析、傅里叶分析、样条理论、调和分析以及数值分析等多个学科的相互交叉、相互融合的结晶。小波变换属于时频分析的一种,它是一种多尺度信号分析方法,是分析非平稳信号的强有力工具【1】。它克服了傅里叶变换固定分辨率的缺点,既能分析信号的整个轮廓,又可以进行信号细节的分析。一般说来,小波变换在图像处理中的应用主要包括以下几个方面:图像分析、图像去噪、图像压缩、图像融合等。MATLAB是美国MathWorks公司出品的商业数学软件[3],用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和SIMULINK两大部分。MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。此外MATLAB提供了丰富的数学函数库和种类繁多且功能强大的工具箱。本文将阐述如何使用MATLAB的小波分析工具箱进行图像去噪处理的技术和方法。2.小波变换2.1基本原理在数学上,小波定义卫队给定函数局部化的新领域,小波可由一个定义在有限区域的函数来构造,称为母小波,(motherwavelet)或者叫做基本小波【2】。一组小波基函数,)(xΨ)(xΨ,可以通过缩放和平移基本小波来生成:{})(,xbaΨ)(xΨ(1)⎟⎠⎞⎜⎝⎛−Ψ=Ψabxaxba1)(,其中,为进行缩放的缩放参数,反映特定基函数的宽度,为进行平移的平移参数,指定沿ab轴平移的位置。当的情况下,一维小波基函数序列定义为:iabaj==和2(2))2(2)2,ixxjjji−Ψ=Ψ−−(其中,为平移参数,为缩放因子,函数以小波为基的连续小波变换定义为函数ij()xf)(xΨ和的内积:()xf()xji,Ψ(3)dxabxaxffbaWbaf⎟⎠⎞⎜⎝⎛−Ψ=Ψ=∫+∞∞−1)(,),(,与时域函数对应,在频域上则有:(4))()(.ωωωaeajbaΨ=Ψ−可以看出,当减小时,时域宽度减小,而频域宽度增大,而且的窗口中心向增a()xba,Ψω大方向移动。这说明连续小波的局部是变化的,在高频时分辨率高,在低频时分辨率低,这便是它优于经典傅里叶变换的地方。总体说来,小波变换具有更好的时频窗口特性。2.2基于小波变换的图像分解与重构二维离散小波主要解决二维多分辨率分析问题,如一幅二维离散图像,二小波变换可{}),(nmc以将它分解为各层各个分辨率上的近似分量。,水平方向细节分量,垂直方向细节分量jcAJcH,对角线方向细节分量,其二层小波图像分解过程如图1所示:jcVjcD其二层小波图像重构过程正好与此相反如图2所示,基于小波变换的图像处理,是通过对图像分解过程中所产生的近似分量与细节分量系数的调整,使重构图像满足特定条件,而实现图像处理。3.编程实现图像消噪常用的图像去噪方法是小波阈值去噪法,它是一种实现简单而效果较好的去噪方法,阈值去噪),(nmc1cA1cH1cV1cD1cV1cH1cD2cA2cH2cV2cD图1小波图像分解过程Figure1Waveletimagedecompositionprocess图2小波图像重构过程Figure2Waveletimagerestructionprocess方法的思想很简单,就是对小波分解后的各层稀疏模大于和小于某阈值的系数分别进行处理,然后利用处理后的小波系数重构出去噪后的图像。在阈值去噪中,阈值函数体现了对小波分解稀疏的不同处理策略以及不同的估计方法,常用的阈值函数有硬阈值和软阈值函数,硬阈值函数可以很好的保留图像边缘等局部特征,但图像会出现伪吉布斯效应,等视觉失真现象,而软阈值处理相对较平稳,但可能会出现边缘模糊等失真现象,为此人们又提出了半软阈值函数。小波阈值去噪方法处理阈值的选取,另一个关键因素是阈值的具体估计,如果阈值太小,去噪后的图像仍然存在噪声,相反如果阈值太大,重要图像特征又将被滤掉,引起偏差。从直观上讲,对给定的小波系数,噪声越大,阈值就越大。图像信号的小波去噪步骤与一维信号的去噪步骤完全相同,只使用二维小波分析工具代替了一维小波分析工具,如果用固定阈值形式,则选择的阈值用代替了一维信号中的。2mn这三步是:1)二维信号的小波分解。选择一个小波和小波分解的层次N,然后计算信号S到第N层的分解。2)对高频系数进行阈值量化,对于从一到N的每一层,选择一个阈值,并对这一层的高频系数进行软阈值化处理。3)二维小波的重构,根据小波分解的第N层的低频系数和经过修改的从第一层到第N层的高频系数,来计算二维信号的小波重构。下面就通过具体实例来说明利用小波分析进行图像去噪的问题。编写二维小波去噪程序,对给定图像进行去噪:clear;%清理工作空间loadwbarb;%装载原始图像subplot(221);%新建窗口image(X);%显示图像colormap(map);%设置色彩索引图title('原始图像');%设置图像标题axissquare;%设置显示比例,生成含噪图像并图示init=2055615866;%初始值randn('seed',init);%随机值XX=X+8*randn(size(X));%添加随机噪声subplot(222);%新建窗口image(XX);%显示图像colormap(map);%设置色彩索引图title('含噪图像');%设置图像标题axissquare;%用小波函数coif2对图像XX进行2层分解[c,l]=wavedec2(XX,2,'coif2');%分解n=[1,2];%设置尺度向量p=[10.28,24.08];%设置阈值向量,对高频小波系数进行阈值处理%nc=wthcoef2('h',c,l,n,p,'s');%nc=wthcoef2('v',c,l,n,p,'s');nc=wthcoef2('d',c,l,n,p,'s');X1=waverec2(nc,l,'coif2');%图像的二维小波重构subplot(223);%新建窗口image(X1);%显示图像(map);%设置色彩索引图title('第一次消噪后的图像');%设置图像标题axissquare;%设置显示比例,再次对高频小波系数进行阈值处理%mc=wthcoef2('h',nc,l,n,p,'s');mc=wthcoef2('v',nc,l,n,p,'s');%mc=wthcoef2('d',nc,l,n,p,'s');X2=waverec2(mc,l,'coif2');%图像的二维小波重构subplot(224);%新建窗口image(X2);%显示图像colormap(map);%设置色彩索引图title('第二次消噪后的图像');%设置图像标题axissquare;%设置显示比例程序运行结果如下图所示:比较上图中几幅图像,可见第一次去早滤除了大部分的高频噪声,但与原图比较,依然有不少的高频噪声,第二次去噪在第一次的去噪基础上,再次滤除高频噪声,去噪效果较好,但图像的质量比原图稍差。4.应用GUI进行图像去噪MATLAB7.X小波分析工具箱集成了小波分析的许多研究成果,不仅提供了丰富的工具函数,而且还提供了一个可视化的小波分析工具,是一个很好的算法研究、工程设计和仿真应用的平台特别适合图像处理的研究[3]。下面就介绍如何使用GUI来处理图像信号。在启动MATLAB7.X后,在ComandWindow窗口中键入wavemenu,在Windows窗口就会出现如图4所示的小波分析工具箱主菜单窗口(WaveletToolboxMainMenu)。图3小波去噪程序运行结果Figure3Runningresultsofwaveletdenoising分解图像的过程是是应用离散小波变换(DWT)进行的,而重构过程则是逆离散小波变换过程(IDWT),在小波分析菜单中选择二维小波分析(Wavelat2-D),打开后如图5所示的界面:图4小波分析主菜单Figure4Mainmenuofwaveletanalysis图5图像分解与重构的界面Figure5Maininterfaceofimagedecompositionandreconstruction如上图所示,在显示模式(Viewmode)中可以选择小波分解后非图像显示方式,一种是方块图(square)方式,它将分解后的图像以方块叠加的形式显示,另一种是树(Tree)模式,它将分解后的图像以树的层次显示,这两种方式只是形式不同,他们都能完全表征图像的信息,在界面的右上角选择基本小波为db,尺度数Level选择3,图像分解方式选择方块(square)模式,选择好参数后,点击Analyze图像分析过程如图5所示:在左上方是原始图像,下面是分解后合成的图像,右下方是分解的低频系数和所有的水平、垂直、对角线和高频系数。在右上方,单击分解后的某一子图像,子图像被选中后,图5中图像操作(Operationsonselectedimage)选择栏就变得有效,这里我们选择其中的重构(Reconstruct)按钮,将图像系数进行重构,于是在图5的右上方显示重构后的图像。接下来对待处理图像进行去噪处理,在GUI中分析小波haar、尺度数Level选择2,由于去噪方法有很多选择,我们这里选择尺度未知的白噪声(unscalewhitenoise)和固定的软阈值(fixedformthresholding),窗口右边的滑动条用来指示和调整相应各层次的阈值,按照在第三节小波去噪程序中的参数设计,这里相应的选择阈值分别为10.28与24.08,并且选择软阈值(Softthreshold)类型,两次去噪后如图6右上方图像所示。从图6中可以看出,中间标题为Histogramofresiduals对应的是原始图像中引入的噪声信号,近似于高斯分布,两次去噪之后,噪声的分布变得分散,说明去噪效果比较好,滤波后图像与用小波函数编程后的图像效果是相同的,第三节中小波去噪的试验结果得到了验证。在进行完上面的去噪处理后,可以保存去噪处理后的图像信号,在图6主菜单中选择【File】-〉图6小波图像去噪主界面Figure6Maininterfaceofwaveletimagedenoising【SaveDe-noiseImage】以denoise.mat保存,并将其装载到MATLAB工作空间中:去噪后图像信息如下所示:load'E:\