正交小波变换去噪文档.doc

正交小波变换去噪文档.doc

ID:53240502

大小:1.79 MB

页数:28页

时间:2020-04-02

上传者:简单2019
正交小波变换去噪文档.doc_第1页
正交小波变换去噪文档.doc_第2页
正交小波变换去噪文档.doc_第3页
正交小波变换去噪文档.doc_第4页
正交小波变换去噪文档.doc_第5页
资源描述:

《正交小波变换去噪文档.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

基于正交小波变换的图像去噪的研究与实现随着计算机科学和图像处理技术的迅速发展,数字图像在医学成像、模式识别等方面取得了广泛应用。但是,现场采集的数字图像一般都包含噪声,而且有些图像的噪声非常严重,因此,需要对数字图像进行去噪处理,便于更高层次的图像分析与理解。本系统利用正交小波变换和软阈值方法对数字图像的去噪进行了研究与实现。本系统主要包含正交小波变换、软阈值去噪与小波反变换部分,其中,正交小波反变换是指对包含噪声的数字图像进行正交小波变换,得到小波系数;软阈值处理是指对小波系数进行软阈值处理,去除噪声;正交小波反变换是指对去噪后的小波系数进行正交小波反变换,得到去噪图像。此外,为了减弱图像边缘失真的问题,最后进行了滤波处理。应用本系统方法对BMP灰度噪声图像进行了处理,由于正交小波变换去噪容易造成去噪后的图像边缘出现失真,在经过正交小波去噪后又进行了均值滤波处理,经过对比实验显示,算法实现了较好的去噪效果。1 系统开发环境硬件配置:硬盘:80GB内存:512MB操作系统:WindowsXP开发工具:VisualC++6.02 系统设计2.1构架概述本系统主要实现利用离散小波对数字图像进行去除噪声。首先导入待处理的256色位图,然后利用加噪算法为初始图像加入随机噪声,最后利用本系统的核心算法——小波去噪算法实现图像噪声的去除。系统流程如图1所示。 图1程序流程图2.2 读取图像模块读写BMP图像文件可以用DIB函数来实现,但是其得到的数据不便于后面小波去噪的相关处理,所以本系统重新编写函数读取和显示BMP图像数据。利用BMP的文件格式和CFile类的知识,建立一个打开BMP位图的函数,在函数中,先利用CFile类的成员函数Open打开文件,然后利用成员函数Read将BMP位图的各个部分的数据读入内存。再修改Viusual C++中的OnDraw函数,利用SetPixel函数把读到内存中的数据显示在屏幕上。需要注意的是,由于BMP数据是从下向上排列的,所以显示是从最低行开始的。2.3 加噪模块从内存中循环取得BMP图像的各点像素值,然后利用随机函数产生随机数,为各点的像素值加上加入一个随机数,最后将改动后的数据复制到内存中。2.4 去噪模块2.4.1 小波滤波器选择小波变换具有很大的灵活性,在理论上可以有无数个小波基可供选择,同时这也为小波变换的应用提出了一个难题,那就是如何正确选择小波基。由于小波变换是将原始图像与小波基函数以及尺度函数进行内积运算,1989年Daubechies基于离散滤波器迭代的方法构造了紧支集的规范正交小波基,因而内积运算转换为信号和离散滤波器的卷积运算,小波变换中的小波基的选择转换为正交镜像滤波器组的选择。Haar小波是所有正交紧支撑小波中唯一具有对称性的小波,Haar小波的支撑极短,其高通和低通滤波器均只有两拍,可以节省计算量,所以本系统选择Haar小波基作为正交小波变换的小波基。Haar小波的滤波器系数可有资料查得为:Lo_D[20]={0.7071,0.7071,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}Hi_D[20]={-0.7071,0.7071,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}2.4.2 Mallat算法Mallat以多分辨分析为基础提出了著名的快速小波算法——Mallat算法。小波理论获得突破性进展,使得小波分析成为近年来迅速发展起来的新兴学科并得到广泛应用。设是中的正交小波基,则对于任意的,有如下展开:(1)其中:(2)由于式1是一无穷基数,其系数d,需要按照式子2来计算,但对于来说,其一般不具有初等解析表达式。在实际的图像处理过程中,输入信号一般以数值方式给出,所以通过式2直接求取比较复杂。因此需要一种离散算法,用于找出一种新的式子来代替式2。 当时,充分逼近,因此,任取,可选到充分大的,使得在上的投影:(3)记的正交投影算子为,则上式可以表示为:(4)在数学上,为了方便的进行表示,可假定,并认为,因此,关于的分解,可以近似的认为是关于的分解。因为:(5)有:(6)其中,这样的分解是唯一的。事实上,因为,所以存在着,_使得成立。其中。显然:(7)其中为向及投影的正交投影算子。且,。记:(8) 则有:(9)一般地:,(10)若记为的如下算子():(11)把分解为和的分解过程称为有限正交小波分解,对于数字图像处理来说,这一分解形式特别有用。我们可以把定义为待分解的数字信号,则分解过程完全是离散的。同样,也可以从和出发来重构,因而通过模拟化可得到。若是数字信号,则这一模拟过程可以省略。记的共扼算子分别为,即有:(12)由于: (13)所以:(14)即为由和来重构的算法,重构过程也可由式15表示:(15)Mallat二维塔式快速小波变换的分解过程如图2所示,重构过程如图3所示。表示每两行中抽取一行表示每两列中抽取一列(,分别为低通和高通滤波器)图2二维小波分解示意图 表示每两行中插入一行表示每两列中插入一列(,分别为低通和高通滤波器)图3二维小波重构示意图Mallat算法通过一组分解滤波器H(低通滤波器LPF)和G(高通滤波器HPF)对信号进行滤波,然后对输出结果进行下二采样(指隔一取一)来实现小波分解,分解的结果是产生长度减半的两个部分,一个是经低通滤波器产生的原始信号的平滑部分,另一个则是经高通滤波器产生的原始信号细节部分。重构时使用一组h和g合成滤波器对小波分解的结果滤波,再进行上二采样(相邻两点间补零)来生成重构信号。多级小波分解通过级联的方式进行,每一级的小波变换都是在前一级分解产生的低频分量上的继续,重构是分解的逆运算。低频分量上的信息比较丰富,能量集中;高频分量上的信息分量多为零,细节信息丰富,能量较少。图像经过二维小波分解后,可以得到四幅子图像,,和)。它们分别表示在尺度上的水平低通-垂直低通子图像,水平带通-垂直低通子图像,水平低通-垂直带通子图像,水平带通-垂直带通子图像。可以对子图像再次小波分解,得到尺度上的四幅子带图像,类似的可以对图像再次分解,以此类推,可以得到图像的多级小波分解,得到不同分辨的子带图像。图4是图像的三级小波分解表示水平低通-垂直低通子图像,表示水平低通-垂直带通子图像,表示水平低通-垂直低通子图像,水平带通-垂直带通子图像(下标表示不同的分辨率)。 LL3HL3HL2LH3HH3HL1LH2HH2水平高通-垂直低通LH1HH1水平低通-垂直高通水平高通-垂直高通图4图像三级小波分解示意图图像经过小波变换后,能够获得良好的空间一频率多分辨率表示,小波变换具有以下主要特征:(1)不仅保持原图像的空间特性,而且很好的提取了图像的高频信息。在低频处有很好的频率特性,在高频处有很好的空间选择性;(2)小波分量有方向选择性,分为水平、垂直、斜向,这些特性都和人类的视觉特性相吻合;(3)能量主要集中在低频子带图像;(4)低通模糊子图具有很强的相关性,水平子带图像在水平方向相关系数大,而垂直方向小;垂直子带图像在垂直方向相关系数大,而水平方向小:斜子带图像在垂直方向和水平方向相关系数都小。2.4.3 阈值处理函数选取Donoho[8]将阈值处理函数分为软阈值和硬阈值,设是小波系数的大小,是施加阈值后的小波系数大小,是阈值。(1)硬阈值(hardthresholding)当小波系数的绝对值小于给定阈值时,令其为0,而大于阈值时,保持其不变,即 (16)(2)软阈值(softthresholding)当小波系数的绝对值小于给定阈值时,令其为0,大于阈值时,令其都减去阈值,即(17)(a)信号(b)硬阈值(c)软阈值图5两种阈值处理函数示意图硬阈值函数在处是不连续的,容易造成去噪后的图像在奇异点附近出现明显的Pseudo-Gibbs现象。因此,本系统选用软阈值函数作为阈值处理函数。2.4.4 阈值的选取阈值的选择是离散小波去噪中最关键的一步。在去噪过程中,小波阈值起到了决定性作用:如果阈值太小,则施加阈值后小波系数将包含过多的噪声分量,达不到去噪的效果;反之,如果阈值太大,则去除了有用的成分,造成失真.所以对阈值的估计非常重要。目前,所使用的阈值包括全局阈值和局部适应阈值,各种各样的阈值公式也曾出不穷,考虑到算法实现的复杂程度以及去噪的效果,本系统采用了Donoho和Johnstone统一阈值[9]。其中,为噪声标准方差,为信号的尺寸或长度。这是在正态高斯噪声模型下,针对多维独立正态变量联合分布,在维数趋向无穷时的研究得出的结论,即大于该阈值的系数含有噪声信号的概率趋于零。这个阈值由于同信号的尺寸对数的平方根成正比,所以当较大时,阈值趋向于将所有小波系数置零。此时小波滤噪器退化为低通滤波器。 然而,在实际环境中,图像中的噪声标准方差是不能知道的,因此在选取阈值时,要对用估计方法来确定噪声标准方差。其中较常用的估算方法多采用公式18:(18)其中是小波分解尺度,是MATLAB中求中值得运算命令。这种计算方法比较复杂,去噪效果也不能令人满意。本系统采用一种简单有效的阈值估计方法,在图像进行正交小波分解的第一级,取小波系数中的HH部分,以它的标准方差的估计值,再利用Donoho和Johnstone统一阈值计算出阈值。2.4.5 均值滤波模板的选取均值滤波方法,是指对待处理的当前像素,选择一个模板,该模板为其近邻的若干像素组成,用模板中像素的均值来替代原图像素值。考虑到图像数据分布的平衡性,模板选用3*3模板。3系统实现本系统分为的实现分为读取图像,加入图像噪声,去除噪声等部分,其界面如图6所示。图6图像去噪系统界面3.1 读取图像模块图像读取模块的显示界面如图7所示。 图7读取图像模块界面要利用正交小波变换对图像进行处理,首先要将BMP图像文件读取出来并存入数组中,其中最关键的是读取各点的像素值。实现这一功能的主要函数是OpenBMP()。OpenBMP()函数的功能是通过文件操作将BMP文件的文件头、信息头以及像素信息一次读入。其代码如下:BYTE*OpenBMP(CStringfileName,long*width,long*height){……file.Read(&bmpFileHead,sizeof(BITMAPFILEHEADER));file.Read(&bmpInfo,sizeof(BITMAPINFOHEADER));BYTE*RGBQUAD=newBYTE[1024];file.Read(RGBQUAD,1024);*width=bmpInfo.bmiHeader.biWidth;*height=bmpInfo.bmiHeader.biHeight;longlFileSize=bmpFileHead.bfSize-bmpFileHead.bfOffBits;pData=(BYTE*)newchar[lFileSize]; if(!pData)returnNULL;file.ReadHuge(pData,lFileSize);file.Close();returnpData;}函数先打开文件,打开成功后先读入BMP文件头,再读入BMP信息头,然后读入调色板,将文件头中的BMP文件的位图宽度和高度值分别赋给变量width和height,以便后面的处理。最后根据读入的文件结构大小为pData分配内存,利用ReadHuge()函数将像素信息读入pData,已备下一步进行正交小波变换。3.2 加噪模块加噪模块的显示界面如图8所示。图8加噪模块界面由于读入内存的BMP图像为无噪图像,所以进行去噪处理必须认为加入随机噪声,此功能由RandomNoise(BYTE*Image)函数实现。其代码如下:voidCLiftingschemeView::RandomNoise(BYTE*Image){ ……for(j=0;j0;loop--){ww=www>>(loop-1);hh=hhh>>(loop-1);tmp=newdouble[ww*hh]; tmp=RealReconstruct(Hi_R,Hi_R0,Hi_R_l,Lo_R,Lo_R0,Lo_R_l,Image,www,hhh,loop);for(i=hhh-hh;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭