【无标题】

第13章 小波分析用于图像去噪
数字图像的噪声主要来源于图像的获取(图像的数字化)和传输过程。图像传感器的工作情况受各种因素的影响,如图像获取中的环境条件和传感元器件本身的质量。例如,通过无线网络传输的图像可能会因为光或其他大气因素的干扰被污染。
在去噪领域中,小波理论由于其特殊的优点也受到了许多学者的重视,他们应用小波进行去噪,并获得了非常好的效果。具体说,小波去噪方法的成功主要得益于小波变换的时频性、多分辨率等。
本章基于此将结合MATLAB工具箱和具体实例系统介绍小波分析用于图像去噪的内容,利用多种方法和不同角度分析图像去噪方面的问题。本章的结构亦与前面章节中介绍的信号去噪一脉相承。
学习目标:
(1)了解图像处理和图像去噪方法
(2)熟练掌握MATLAB图像去噪函数
(3)熟练掌握小波变换去噪
(4)熟练掌握阈值法去噪
(5)熟练掌握小波包去噪
(6)熟悉二维小波工具箱界面去噪
13.1 图像处理概述
从本章开始将陆续介绍有关小波分析用于二维信号(即图像)处理方面的内容,因此,本节首先将各种图像处理方法的理论作系统描述。
13.1.1 常用图像格式
图像格式指的是存储图像采用的格式,不同的操作系统、不同的图像处理软件所支持的图像格式都有可能不同。在实际应用中经常会遇到的图像格式有JPEG、BMP、GIF、TIFF、PCX、PSD、PCD和WMF等。由于篇幅的限制,本节仅介绍其中的一部分。
1.JPEG格式
JPEG(Joint Photographic Experts Group)是对精致灰度或彩色图像的一种国际去噪标准,其全称为“连续色调静态图像的数字去噪和编码”,已在数字照相机上得到了广泛应用,当选用有损去噪方式时可以节省相当大的空间。
JPEG标准只是定义了一个规范的编码数据流,并没有规定图像数据文件的格式。CubeMicrosystems 公司定义了一种JPEG文件交换格式(JFIF-File Interchange Format)。JFIF图像是一种使用灰度标识,或者使用Y、Cb、Cr分量彩色表示的JPEG图像,它包含一个与JPEG兼容的头。一个JFIF文件通常包含单个图像,图像可以是灰度的(其中的数据为单个分量),也可以是彩色的。
2.BMP文件
BMP 文件是Microsoft Windows 所定义的图像文件格式,最早应用在微软公司的Microsoft Windows窗口系统中。BMP图像文件具有只存放一幅图像,能存储单色、16 色、256 色和真彩色 4 种图像数据,图像数据有去噪和非去噪两种处理方式,调色板的数据存储关系较为特殊,存储格式不是固定的而是与文件头的某些具体参数(如像素位 bbp、去噪算法等)密切相关的等特点。
BMP文件头数据结构含有BMP文件的类型、大小和打印格式等信息。在Windows中对其进行了定义,其定义如下:
TypedefstructtagBITMAPFILEHEADER{
WORDbftype;       /*位图文件的类型,必须为BMP
DWORDbfSize;       /*位图文件的大小,以字节为单位
WORDbfReserved1;     /*位图文件保留字,必须为0
WORDbfReserved2;     /*位图文件保留字,必须为0
DWORDbfoffBits;      /*位图阵列的起始位置,以相对于位图文件头的偏移量表示
}BITMAPFILEHEADER;
3.GIF文件
GIF(Graphics Interchange Format)图像文件格式是CompuServe 公司最先在网络中用于在线传输图像数据的。GIF图像文件经常用于网页的动画、透明等特技制作。该文件具有以下特点。
(1)文件具有多元化结构,能够存储多张图像,并可以进行多图像的定序或覆盖,交错屏幕绘图以及文本覆盖等功能。
(2)调色板数据有通用调色板和局部调色板之分。
(3)采用了LZW去噪法。
(4)图像数据一个字节存储一个像素点。
(5)文件内的各种图像数据区和补充区多数没有固定的数据长度和存储位置,为了方便程序寻找数据区,就以数据区的第一个字节作为标识符,以使程序能够判断读到哪种数据区。
(6)图像数据有顺序排列和交叉排列两种方式。
(7)图像最多只能存储256色图像。
GIF图像文件结构一般由表头、通用调色板、图像数据区以及4个补充区这7个数据单元组成。其中,表头和图像数据区是不可缺少的单元,通用调色板和其余的4个补充区是可选择的内容。
4.TIFF文件
TIFF(Tag Image File Format)图像文件格式是现有图像文件格式中最复杂的一种,它是由 Aldus 公司与微软公司开发设计的图像文件格式,提供了各种信息存储的完备手段。其主要特点如下。
(1)应用指针功能实现多幅图像存储。
(2)文件内数据没有固定的排列顺序,但规定表头必须在文件前端,标识信息区和图像数据区在文件中可以任意存放。
(3)可定制私人用的标识信息。
(4)能够接受除了一般图像处理 RGB 模式之外的 CMYK、YcbCr 等多种不同的图像模式。
(5)可存储多份调色板数据,其调色板的数据类型和排列顺序较为特殊。
(6)能够提供多种不同的去噪数据的方法。
(7)图像数据可分割成几个部分进行分别存档。
TIFF图像文件主要由表头、标识信息区和图像数据区3个部分组成。其中,文件内固定只有一个位于文件前端表头,表头由一个标志参数指出标识信息区在文件中的存储地址,标识信息区有多组用于存储图像数据区的地址。每组标识信息长度固定为12个字节,前8个字节分别代表信息的代号(2个字节)、数据类型(2个字节)和数据量(4个字节),最后4个字节用于存储数据值或标识参数。
13.1.2 图像类型
图像类型是指数组数值与像素颜色之间定义的关系,它与图像格式概念有所不同,在MATLAB图像处理工具箱中有4种类型的图像,下面分别介绍其基本情况。
1.二进制图像
在一幅二进制图像中,每一个像素将取两个离散数值(0或1)中的一个,从本质上说,这两个数值分别代表状态“开”或“关”。图13-1所示是一幅典型的二进制图像实例。
图13-1 典型的二进制图像实例
2.索引图像
索引图像是一种把像素值直接作为RGB调色板下标的图像。在MATLAB中,索引图像包含一个数据矩阵X和一个颜色映射矩阵map。其中,数据矩阵可以是unit8、unit16或逻辑类型的,颜色矩阵map是一个m×3的数据帧,其中每个元素的值均为[0,1]之间的双精度浮点类型数据,map矩阵的每一行分别标识红色、绿色和蓝色的颜色值。
索引图像可把像素值直接映射为调色板数据,每一个像素的颜色通过使用X的数值作为map的下标来获得,如值1指向map中的第一行,值2指向第二行,依次类推。
颜色映射通常与索引图像存储在一起,当装载图像时,MATLAB自动将颜色映射表与图像同时装载。图13-2显示了索引图像的结构,该图像中的像素用整数类型标识,这个整数将作为存储在颜色映射表中的颜色数据的指针。
(4)能够接受除了一般图像处理 RGB 模式之外的 CMYK、YcbCr 等多种不同的图像模式。
(5)可存储多份调色板数据,其调色板的数据类型和排列顺序较为特殊。
(6)能够提供多种不同的去噪数据的方法。
(7)图像数据可分割成几个部分进行分别存档。
TIFF图像文件主要由表头、标识信息区和图像数据区3个部分组成。其中,文件内固定只有一个位于文件前端表头,表头由一个标志参数指出标识信息区在文件中的存储地址,标识信息区有多组用于存储图像数据区的地址。每组标识信息长度固定为12个字节,前8个字节分别代表信息的代号(2个字节)、数据类型(2个字节)和数据量(4个字节),最后4个字节用于存储数据值或标识参数。
13.1.2 图像类型
图像类型是指数组数值与像素颜色之间定义的关系,它与图像格式概念有所不同,在MATLAB图像处理工具箱中有4种类型的图像,下面分别介绍其基本情况。
1.二进制图像
在一幅二进制图像中,每一个像素将取两个离散数值(0或1)中的一个,从本质上说,这两个数值分别代表状态“开”或“关”。图13-1所示是一幅典型的二进制图像实例。
图13-1 典型的二进制图像实例
2.索引图像
索引图像是一种把像素值直接作为RGB调色板下标的图像。在MATLAB中,索引图像包含一个数据矩阵X和一个颜色映射矩阵map。其中,数据矩阵可以是unit8、unit16或逻辑类型的,颜色矩阵map是一个m×3的数据帧,其中每个元素的值均为[0,1]之间的双精度浮点类型数据,map矩阵的每一行分别标识红色、绿色和蓝色的颜色值。
索引图像可把像素值直接映射为调色板数据,每一个像素的颜色通过使用X的数值作为map的下标来获得,如值1指向map中的第一行,值2指向第二行,依次类推。
颜色映射通常与索引图像存储在一起,当装载图像时,MATLAB自动将颜色映射表与图像同时装载。图13-2显示了索引图像的结构,该图像中的像素用整数类型标识,这个整数将作为存储在颜色映射表中的颜色数据的指针。
TLAB中则存储一个n×m×3的多维数据数组,其中数组中的元素定义了图像中每一个像素的红、绿、蓝颜色值。注意:RGB图像不使用调色板,每一个像素的颜色由存储在相应位置的红、绿、蓝颜色分量的组合来确定,图形文件格式把RGB图像存储为24位的图像,红、绿、蓝分量分别占用8位。因而图像理论上可以有224
 =16 777 216 种颜色,由于这种颜色精度能够再现图像有真实色彩,故称RGB图像为真彩图像。
图13-4所示为一幅典型的双精度RGB图像,在此图中,为了确定像素(2,3)的颜色,需要查看一组数据RGB(2,3,1:3)。假设(2,3,1)数据为0.517 6,(2,3,2)数值为0.160 8,(2,3,3)数值为0.062 7,则像素(2,3)的RGB 颜色为(0.517 6 红色,0.160 8 绿色,0.062 7 蓝色)。
图13-4 典型的双精度RGB图像实例
13.1.3 图像类型转换
在有些图像操作中,需要对图像的类型进行转换。比如要对一幅索引图像的彩色图像进行滤波,首先应该将其转换成RGB图像,此时在对RGB图像使用滤波器时,MATLAB将恰当地滤掉图像中的部分灰度值。如果不将索引图像进行转换,MATLAB则对图像调色板的序号进行滤波,这样得到的结果将没有任何意义。
下面对一些MATLAB图像处理工具箱中常用的类型转换进行介绍。
1.图像颜色浓淡处理(图像抖动)
dither函数通过抖动算法转换图像类型,其语法格式分别如下。
X=dither(RGB,map):通过抖动算法将真彩色图像RGB按指定的颜色图(调色板)map转换成索引色图像X。
X=dither(RGB,map,Qm,Qe):利用给定的参数Qm,Qe从真彩色图像RGB中产生索引色图像 X。其中,Qm 表示沿每个颜色轴反转颜色图的量化(即对于补色各颜色轴)的位数,Qe表示颜色空间计算误差的量化位数。如果Qe<Qm,则不进行抖动操作。
2.灰度图像转换为索引图像
gray2ind函数可以将灰度图像转换成索引图像,其语法格式如下。
[X,map]=gray2ind(I,n):按指定的灰度级数n和颜色图map,将灰度图像I转换成索引色图像X,n的默认值为64。
3.索引图像转换为灰度图像
ind2gray函数可以将索引图像转换为灰度图像,其语法格式如下。
I=ind2gray(X,map):将具有颜色图map的索引色图像I转换成灰度图像X,去掉了图像的色度和饱和度,仅保留了图像的亮度信息。输入图像可以是double或unit8类型,输出图像为double类型。
4.RGB图像转换为灰度图像
rgb2gray函数用于将一幅真彩图像(RGB)转换成灰度图像,其语法格式如下。
I=rgb2gray(RGB):将真彩色图像RGB转换成灰度图像I。
newmap=rgb2gray(map):将颜色图map转换成灰度图像I。
5.RGB图像转换为索引图像
rgb2ind函数用于将真彩图像转换成为索引图像,可采用直接转换、均匀量化、最小量化、颜色图近似4种方法。除直接转换方法外,其他方法在不指定选项nodither时自动进行图像抖动。其语法格式如下。
[X,map]=rgb2ind(RGB):直接将RGB图像转化为具有颜色图map的矩阵X。由于每个像素点具有一个值,转换后的颜色图可能很长。
[X,map]=rgb2ind(RGB,tol):用均匀量化的方法将 RGB图像转换为索引图像 X。map包括至少(floor(1/tol)+1)3个颜色,tol的范围从0.0~3.0。
[X,map]=rgb2ind(RGB,n):使用最小方差量化方法将 RGB图像转换为索引图像,map中包括至少n个颜色。
X=rgb2ind(RGB,map):通过将RGB中的颜色与颜色图map中最相近的颜色匹配,将RGB转换为具有map颜色图的索引图像。
6.索引图像转换为RGB图像
ind2rgb函数将索引图像转换成真彩图像,其语法格式如下。
RGB=ind2rgb(X,map):将矩阵X及相应的颜色图map转换成真彩图像RGB。实际实现时,就是产生一个三维数组,然后将索引图像的颜色图的颜色赋予三维数组。输入图像X可以是双精度类型或8位无符号类型,输出图像RGB为双精度类型。
7.通过阈值化方法将图像转换为二值图像
im2bw函数通过设置亮度阈值将真彩图像、索引图像以及灰度图像转换成二值图像。在转换过程中,如果输入图像不是灰度图像,首先将其转换为灰度图像,然后通过阈值化将灰度图像转换成二值图像。输出二值图像和输入图像之间的关系是在输入图像所有亮度小于给定值(level取值范围为[0,1])的像素点处均为0,其他均为1。其语法格式如下。
BW=im2bw(I,level):输入二值图像为I,level为给定的阈值。
8.通过阈值化方法从灰度图像产生索引图像
grayslice函数通过设定阈值将灰度图像转换成索引图像,其语法格式如下。
X=grayslice(I,n):将灰度图像I均匀量化为n个等级,然后转换为伪彩色图像X。
X=grayslice(I,v):按指定的阈值向量v(每一个元素都在0~1之间)对图像I的值域进行划分,然后转换成索引图像X。
注意:输入图像I可以是双精度类型或8位无符号类型。如果阈值数量小于256,则返回图像X的数据类型是8位无符号类型,X的值域为[0,n]或[0,length(v)];否则,返回图像X位双精度类型,值域为[0,n+1]或[1,length(v)+1]。
9.将矩阵转换为灰度图像
mat2gray函数用于将一个数据矩阵转换为一幅灰度图像,其语法格式如下。
I=mat2gray(X,[xmin xmax]):按指定的取值区间[xmin xmax]将数据矩阵X 转换为图像I,xmin 对应灰度0(最暗即黑),xmax 对应灰度1(最亮即白)。如果不指定区间[xmin xmax]时,MATLAB则自动将X矩阵中最小设为xmin,最大设为xmax。
注意:输入矩阵 X和输出图像 I都是双精度类型。实际上,mat2gray 函数与 imshow函数功能类似,这一点将在后面进行论述。
13.1.4 图像显示
图像的显示过程是将数字图像从一组离散数据还原为一幅可见图像的过程。严格地说,图像的显示在图像处理(尤其是图像分析过程)中并不是必须的,因为图像处理和分析过程都是基于图像数据的计算,以数字数据或决策的形式给出处理或分析的结果,其中间过程并不一定要求可视。
但是图像的显示是提高图像处理分析性能非常有用的手段,通过图像的显示,可以监视图像处理过程,并与处理分析交互地控制处理分析过程。
图像显示最重要的特性是图像的大小、光度分辨率、灰度线性、平坦能力和噪声特性等,这些显示特性将共同决定一个数字图像显示系统的质量及其在特定应用中的适用性等性能指标。
本小节主要介绍MATLAB软件图像显示工具。MATLAB及图像处理工具箱的显示功能非常强大,不仅可以用来显示各种类型的图像,还可以用多种方式显示图像及图像序列。
下面介绍几个常用的显示图像的函数。
1.imshow函数
当读者调用 imshow 函数显示图像时,将自动设置图形窗口、坐标轴和图像属性,以控制图像数据在MATLAB的解释方式。这些自动设置的属性包括图像对象的 CData 属性和CDdata-Mapping属性、坐标轴对象的Clim属性、图像窗口对象的Colormap属性。
在MATLAB中,imshow函数的语法如下:
imshow(I,n);
imshow(I,[low,high]);
imshow(BW);
imshow(…,display_option);
imshow(x,y,A,…);
imshowfilename;
h=imshow(…)。
根据读者使用参数的不同和MATLAB工具箱的设置,imshow函数在调用时除了完成前面提到的属性设置外,还可以设置其他的图形窗口对象和坐标轴对象的属性以定制显示效果、设置图像边框的隐藏属性等。
2.imread函数
A=imread(filename,fmt)
[X,map]=imread(...)
[...]=imread(filename)
[...]=imread(URL,...)
[...]=imread(...,Param1,Val1,Param2,Val4...)
13.2 小波用于图像去噪方法
噪声可以理解为“妨碍人们感觉器官对所接收的信源信息理解的因素”。例如一幅黑白图片,其平面亮度分布假定为f(x,y),那么对其接收起干扰作用的亮度分布R(x,y)即可称为图像噪声。
13.2.1 图像噪声概述
噪声在理论上可以定义为:不可预测的只能用概率统计方法来认识的随机误差。因此将图像噪声看成是多维随机过程是合适的,描述噪声的方法完全可以借用随机过程的描述,即用其概率分布函数和概率密度分布函数来描述。
但在很多情况下,这样描述方法是很复杂的,甚至不可能的,而实际应用往往也不必要,通常使用均值方差、相关函数等数值特征来描述,因为这些数值特征都可以从某些方面反映出噪声的特征。
噪声对图像信号幅度和相位的影响十分复杂,有些噪声和图像信号相互独立不相关,有些是相关的,噪声本身之间也可能相关。现实中的数字图像在数字化和传输过程中,常受到成像设备与外部环境噪声干扰等影响,成为含噪图像,去除或减轻在获取数字图像中的噪声称为图像去噪。
目前大多数数字图像系统中输入光图像都是采用先冻结再扫描方式将多维图像变成一维电信号,再对其进行处理、存储、传输等加工变换,最后往往还要再组成多维图像信号。而图像噪声也同样受到这样的分解和合成,在这些过程中电气系统和外界影响将使得图像噪声的精确分析变得十分复杂。
另外,图像只是传输视觉信息的媒介,对图像信息的认识理解是由人的视觉系统所决定的。不同的图像噪声,人的感觉(理解)程度是不同的,这就是所谓的人的噪声视觉特性课题。这方面虽早已进行研究,但终因人的视觉系统本身未搞清楚而未获得解决,所以现在还不能规定出确切的图像噪声干扰的客观指标,而只能进行一些主观评价研究。
尽管如此,图像去噪在数字水印、模式识别、X 射线影像分析、卫星遥感技术等领域都有广泛的应用,图像噪声在数字图像处理技术中的重要性已愈加明显。
图像处理中按照噪声与图像的数学关系进行分类,主要有加性噪声、乘性噪声、量化噪声和椒盐噪声。加性噪声和图像信号强度是不相关的,如图像在传输过程中引进的信道噪声和电视摄像机扫描图像的噪声,这类带有噪声的图像可看成为理想无噪声图像与噪声之和。
乘性噪声和图像信号是相关的,往往随图像信号的变化而变化,如飞点扫描图像中的噪声、电视扫描光栅、胶片颗粒等造成的噪声。任何A/D转化器都包括抽样、量化和编码3个部分,经量化得到的数字信号会引起量化误差,即量化噪声,量化噪声会导致量化后的数字信号恢复原信号产生失真,是数字图像的主要噪声源。减少这种噪声的最好办法就是采用按灰度级概率密度函数选择量化级的最优量化措施。如果图像灰度变化和噪声很小时,乘性噪声可近似地看作是加性噪声。
椒盐噪声如图像切割引起的即黑图像上的白点,白图像上的黑点噪声,在变换域引入的误差,使图像反变换后造成的变换噪声等。
噪声在大部分情况下属于加性噪声。人们对影响图像质量的噪声的生成原因及相应的模型作了大量研究,经常影响图像质量的噪声按其来源可分为以下3类。
(1)电子噪声。在阻性器件中,由于电子随机热运动而造成的电子噪声是3种模型中最简单的,一般常用零均值高斯白噪声做为其模型,它可用其标准差来完全表征。
(2)光电子噪声。由光的统计本质和图像传感器中光电转换过程引起,在弱光照的情况下常用具有泊松分布的随机变量作为光电噪声的模型,在光照较强时,泊松分布趋向于更易描述的高斯分布。
(3)感光片颗粒噪声。由于曝光过程中感光颗粒只有部分被曝光,而其余部分则未曝光,底片的密度变化就由曝光后的颗粒密集程度变化所决定,而其曝光颗粒的分布呈现一种随机性,在大多数情况下,颗粒噪声可用高斯白噪声作为有效模型。
通过以上分析可以看出,绝大多数的常见图像噪声都可用均值为零、方差不同的高斯白噪声作为其模型,因而为了简便和一般化,我们采用零均值的高斯白噪声作为噪声源。
13.2.2 图像去噪方法概述
传统的图像去噪方法主要有空间域方法和频率域方法。空间域中常常是参考图像自身,直接对图像的像素进行处理,主要有邻域平均法和中值滤波。频率域方法主要是基于经典滤波器理论的信号与噪声谱不重叠的观点,通过设置前置的图像噪声频率范围选取适当的频率带通滤波器进行滤波处理,如快速傅立叶算法(FFT)分析。
线性滤波方法会损伤图像的边缘信息,小波变换在图像去噪方法显示出很多优势,去噪的同时可以保留图像的边缘信息。基于小波变换的去噪方法主要有模极大值法和阈值去噪法。
1.邻域平均法
邻域平均法是一种局部空间域处理的算法。设一幅图像f(x,y)为N×N的阵列,处理后的图像为g(x,y),它的每个像素的灰度级由包含(x,y)领域的几个像素的灰度级的平均值所决定,即由下式得到处理后的图像:
式中:x,y=0,1,2,…,N−1;S是以点(x,y)为中心的邻域集合,M是S 内坐标点的总数。图像经过邻域平均法处理后会变得相对模糊,这是因为平均本来就是以图像的模糊为代价来换取噪声的减少的。
图像邻域平均法的处理效果与所用的邻域半径有关,半径愈大,则图像的模糊程度也愈大。图像邻域平均法算法简单,计算速度快,但是在降低噪声的同时使图像产生模糊,特别在边沿和细节处模糊得很厉害。
2.中值滤波
中值滤波于1971年由Turky提出,其基本原理是将邻域中的像素按灰度级排序,强迫其中间值为输出像素值。中值滤波处理的效果取决于邻域的空间范围和中值计算时模板所覆盖的像素数。中值滤波是一种空间域非线性滤波方法,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。中值滤波对干扰脉冲和椒盐噪声有良好的抑制作用,而且对图像边缘能较好保护。
3.屏蔽去噪法
屏蔽去噪法把低分辨率下的小波变换系数全部保留,高分辨率下的小波系数中,只有被确认为边沿附近的点才给予保留,其余都加以去除。
由于噪声的小波变换主要集中在小尺度各层次中,因此经上述处理后,噪声基本去除,而且边沿信息得以较好的保留。该方法的关键是如何识别边缘。
在一维的情况下,边缘在数据中的表现是阶跃性的跳变。当采用波形反对称的小波函数对其进行尺度为a=2j
 的小波变换时,在多个尺度下小波变换的值在跳变处表现出明显的峰值,其符号正负取决于此阶跃是正跳还是负跳变,而噪声的小波变换则随着尺度的加大而迅速减小。因此,把一部分尺度上对应于同一空间位置处的小波变换相乘,就能把边沿表现得更突出,并把噪声的表现削弱。该方法明显地把原始数据中主要边沿的位置表明。实际工作时可通过提取边缘再加以消除的方法得到空间屏蔽去噪器。把这个屏蔽去噪器与各尺度的小波系数相乘,得到新的小波系数。最后把各尺度得到的新的小波系数合起来作重构,就得到去噪后的结果。
4.模极大值法
当信号中混入了随机噪声时,通常会导致信号的奇异性,奇异性的大小由Lipschitz指数来度量。一般来讲,信号的Lipschitz指数是大于0的,噪声的Lipschitz指数
 (ε>0)小于0,随着尺度的增大,信号和噪声所对应的小波变换系数分别是增大和减小。
信号和噪声的小波变换模的极大值在不同尺度下的传播行为也不一样,利用这一特性可将有用信号从随机噪声中提取出来。模极大值法主要适于图像中混有白噪声且图像中含有较多奇异点的情况,计算速度非常慢,且不稳定。
5.小波阈值去噪法
一个含噪声的二维图像模型可以表示为e(i,j)=f(i,j)+n(i,j),其中f(i,j)为理想无噪声图像,n(i,j)为标准高斯白噪声,均值为零,方差为σ2
 。对e(i,j)作离散小波变换后得到的小波系数仍由两部分组成,一部分是信号对应的小波系数,另一部分是噪声对应的小波系数。
经过小波分解后,信号的系数要大于噪声的系数,于是可以找到一个合适的数λ作为阈值,当分解系数小于这个临界阈值时,认为这时的分解系数主要是由噪声引起的,予以舍弃;当分解系数大于这个临界阈值时,认为这时的分解系数主要是由信号引起的,就把这一部分直接保留下来(硬阈值方法)或者按照某一固定量向零收缩(软阈值方法),然后用得到的小波系数进行小波重构,即为去噪后的信号。
噪声和图像信号在小波变换下的特性为:噪声几乎处处奇异,且其具有负的 Lipschitz指数,即其奇异性小于零,在小波变换下噪声的能量随着尺度的增加迅速减小;而图像信号具有正的Lipschitz指数,即其奇异性大于零,在小波变换下图像信号的平均幅值不会随着尺度的增加而明显减小。
噪声在不同尺度上的小波变换是高度不相关的,信号的小波变换一般具有很强的相关性,相邻尺度上的局部模极大值几乎出现在相同的位置上,并且有相同的符号。图像信号和噪声的小波变换具有不同的奇异性是在小波变换域中区分信号和噪声的主要依据。通过小波变换,噪声的小波系数均匀分布于整个尺度空间,幅度相差不大,而图像信号的小波系数主要集中在几条亮线上。
图像的阈值去噪法实质上是对图像数据的行和列各做一维的小波变换,然后对所得的一维信号进行阈值去噪,同样可以选择Donoho的软、硬阈值函数进行去噪处理。
小波阈值去噪方法除了阈值函数的选取,另一个重要环节是对阈值的具体估计。如果阈值选取过小,去噪后的信号仍然有噪声的存在;相反,如果阈值选取过大,重要的图像特征又将被当作噪声被滤掉,引起偏差。
阈值门限主要由噪声方差的估计值和子带系数的能量分布共同确定。大部分情况下,需要从观测数据中估计噪声方差。
阈值的估计方法多种多样,常用的阈值估计方法包括:通用阈值、极大极小阈值、最小 Stein 无偏风险阈值(SURE)、贝叶斯阈值(Bayes)和GCV 阈值(Generalized Cross Validation)等。此外还有交叉验证法、均方差近似函数法、二次平方损失函数法、基于最大熵原理的小波去噪法等多种阈值估计方法。
最早的小波阈值去噪方法是Donoho在1994年提出的VisuShrink方法,是针对多维独立正态变量联合分布在维数趋向于无穷时得出的结论。该方法是基于最小最大估计得出的最优阈值。阈值选取为
 。其中,σn
 是噪声标准方差,M和N是图像像素的行和列。
Donoho证明了这种估计在信号属于Besov空间时,在大量风险函数下获得了近似理想的去噪风险。由于这种阈值与信号的长度N相关,当N较大时,阈值趋向于将所有的小波系数置零,往往产生“过扼杀”系数的现象,容易丢失有用的高频细节信息。
SUREShrink阈值估计方法是在SURE准则下得到的阈值,该准则是均方差准则的无偏估计,它是专门针对阈值函数得出的结论,且SURE阈值趋近于理想阈值。在实际应用中,由于SUREShrink阈值去噪方法产生较低误差,从而获得较为满意的去噪效果。SURE阈值倾向于“过保留”小波系数,容易造成去噪不完全。
另外一个常用的阈值是GCV阈值,这种阈值虽然是有偏的,但是这种准则得到的最优阈值也趋近于理想阈值,而且不需要对噪声方差进行估计。阈值分为全局阈值和局部阈值。全局阈值是指对同一分解上的小波系数使用统一的阈值,局部阈值是根据小波分解的每一层采用不同的阈值。局部阈值能更灵活地选取阈值,对不同信噪图像有很好的适应性,因而去噪效果优于全局阈值,但某些局部阈值计算复杂,不易于实现。本文选取局部阈值进行去噪。
6.小波包分析的信号去噪
小波包变换是一种时频分析的方法,提供了一种更为复杂,同时也更为灵活的分析手段。小波包分析是小波分析的推广,它能对小波分析没有细分的高频部分进行进一步分解,具有更为精确的局部分析能力,从而提高了时频分辨率。
小波包在中、高频方面优于小波变换,小波包变换应用于图像去噪处理是热门的研究。
从滤波器的角度,小波包变换的实现和离散小波变换没有本质区别,只是在原有的基础上按同样的方法对细节系数进行分解,所以两者的实现方法相同。
但是由于小波包分解是对近似系数和细节系数同时进行分解,使第N层的分解系数最多为2N 组,这种单纯地把所有的系数都进行分解对解决问题是没有帮助的,只会增加计算量,而小波包变换的基本思想是为了让信息能量集中,也就是在细节系数中寻找有序性,把其中的规律进一步地挑出来,所以必须对重构图像的分解系数进行优化选择。
小波包基库是由许多小波包基组成的,不同的小波包基具有不同的性质,能够反映信号的不同特征,所以我们希望根据不同分析信号的特征来选择一个最好的小波包基,用来表达信号特点。
选用最优基的目的是用尽量少的系数,反映尽可能多的信息。对一个信号进行一次小波包分解,可采用多种小波包基。小波包分析在确定最佳小波包基时所用的标准没有严格的理论作为保证,不同的问题所用标准不一致,我们需要根据具体分析的要求,选择一个最佳的小波包基,即最佳基(也叫最优树)。选择最佳基的标准是熵标准。
在小波包函数库建立好之后,对于一个给定的正交小波基的分解,一个长度为N的信号最多有2N
 种不同的分解方法,我们基于最小熵标准来找到一种最优的信号分解方法。
通常将小波包变换的理论和阈值法相结合应用到图像去噪中,小波包阈值去噪过程主要分为以下4个步骤。
(1)信号的小波包分解。选择一种小波包基并确定所需分解的层次,然后对信号进行小波包分解。
(2)最优小波包基的选择。
(3)小波包分解系数的阈值化。对于每一个小波包分解系数,选择一个恰当的阈值对小波包分解后的系数进行阈值量化处理。
(4)信号的小波包重构。对低频系数和经过处理后的高频系数进行小波包重构。
利用小波包进行去噪首先要选取小波包基和分解的层数。对称性好的小波不产生相位畸变,正则性好的小波易于获得光滑的重构曲线和图像。
13.2.3 图像去噪现有方法的优缺点
除了上面介绍的图像去噪方法,其他的图像去噪方法还有如多幅图像平均法、多小波理论法、SSNF相关法去噪和基于Contourlet变换的图像去噪法。
邻域平均法算法简单,计算速度快,但是邻域平均法是以图像的模糊为代价来换取噪声的减少,在降低噪声的同时使图像产生模糊,特别在边沿和细节处模糊得越厉害,邻域平均法只能抑制高斯噪声。
中值滤波对滤除脉冲干扰及图像扫描噪声最为有效,在抑制椒盐噪声的同时又能较好地保持图像特征细节,因而得到了广泛应用,但是中值滤波的方法对高斯噪声的抑制能力较弱,在对保留图像细节时的效果不好。对一些点、线、尖顶细节多的图像去噪不宜采用中值滤波。
邻域平均法和中值滤波的共同特点是:用同一种方式去处理图像中的每一个像素而不顾每个像素自身的特点,只对去除某一种特定类型的噪声有效。
模极大值法主要适于图像中混有白噪声且图像中含有较多奇异点的情况,能有效地保留信号的奇异点信息,去噪后的信号没有多余振荡。用模极大值法去噪后,小波变换系数仅剩下模极大值点处的值,而其余部分都被置为零;仅仅通过这有限个模极大值点直接重构图像,误差会很大;模极大值计算速度非常慢,且不稳定。
SSNF 相关法是利用相邻尺度小波系数的相关程度来进行去噪,即通过将相邻尺度同一位置系数的相关量来构成相关量图像,做适当的灰度伸缩后再同原来的小波图像进行比较,其中较大的相关量被视为对应于边缘等图像特征而被抽取出来,并作为原信号小波变换估计,然后经过反变换得到去噪后图像。SSNF相关法去噪由于需要迭代,计算非常复杂,实际应用很困难。
多幅图像平均法常用于摄像机的视频图像中,通过对同一景物连续摄取多幅图像并数字化,再对多幅图像平均,用以减少电视摄像机光电摄像管或CCD器件所引起的噪声,这种方法在实际应用中的难点在于如何把多幅图像配准起来,以便使相应的像素能正确地对应排列。
图像的阈值去噪法去噪效果比较好,去噪的同时能够保留图像的边缘和细节信息。
13.2.4 图像去噪质量的评价
图像质量评价的研究是图像信息学科的基础研究之一。对图像处理或图像通信系统,其信息的主体是图像,衡量这个系统的重要指标就是图像的质量。例如在图像编码中,就是在保持被编码图像一定质量的前提下,以尽量少的码字来代表图像,以便节省信道和存储容量。
而图像增强就是为了改善图像的主观视觉显示质量。再如图像复原,则用于补偿图像的降质,使复原后的图像尽可能接近原始图像质量。所有这些,都要求有一个合理的图像质量评价方法。
图像质量的含义包括两方面:一个是图像的逼真度,即被评价图像与原标准图像的偏离程度;另一个是图像的可懂度,是指图像能向人或机器提供信息的能力。尽管最理想的情况是能够找出图像逼真度和图像可懂度的定量描述方法,以作为评价图像和设计图像系统的依据。但是,由于目前对人的视觉系统性质还没有充分理解,对人的心理因素还找不出定量分析方法,因而用得较多、最具权威性的还是图像的主观评价方法。
图像的主观评价就是通过人来观察图像,对图像的优劣作主观评定,然后对评分进行统计平均,就得出评价的结果。这时评价出的图像质量与观察者的特性及观察条件等因素有关。
为保证主观评价在统计上有意义,选择观察者时既要考虑有未受过训练的“外行”观察者,又要考虑有对图像技术有一定经验的“内行”观察者。另外,参加评分的观察者至少要有20名,测试条件应尽可能与使用条件相匹配。
在图像质量的主观评价方法中又分两种评价计分方法,就是国际上通行的5级评分的质量尺度和妨碍尺度,如表13-1所示,它是由观察者根据自己的经验,对被评价图像做出质量判断。在有些情况下,也可以提供一组标准图像作为参考,帮助观察者对图像质量做出合适的评价。一般来说,对非专业人员多采用质量尺度,对专业人员则使用妨碍尺度为宜。
表13-1 妨碍尺度和质量尺度的5级评分
尽管主观质量的评价是权威的方式,但是在一些研究场合,或者由于实验条件的限制,也希望对图像质量有一个定量的客观描述。
图像质量的客观评价由于着眼点不同而有多种方法,主要的评价标准有归一化均方误差、修正的均方误差、超方超阈量化误差、逼真度测量和峰值信噪比(PSNR)。对于彩色图像逼真度的定量表示是一个十分复杂的问题。在实际应用中,峰值信噪比是图像处理中最常用的图像质量评价标准。
峰值信噪比(PSNR)的定义为:对于一幅M×N大小、量化级为0~255图像的峰值信噪比定义为:
式中:fi,j
 和ei,j
 分别为含噪声图像和去噪后图像在(i,j)点处的灰度值。
13.3 MATLAB去噪函数
基于上一节介绍的原理,MATLAB小波工具箱主要针对阈值选取开发出了去噪函数,本节将作以介绍。
13.3.1 基于去噪函数进行图像去噪
对二维图像信号的去噪方法同样适用于一维信号,尤其是对于几何图像更适合。二维模型可以表述为:
其中,e(i,j)是标准偏差不变的高斯白噪声。二维信号用二维小波分析的去噪步骤有 3步,如下。
(1)二维信号的小波分解。选择一个小波和小波分解的层次N,然后计算信号s到第N层的分解。
(2)对高频系数进行阈值量化。对于从1到N的每一层选择一个阈值,并对这一层的高频系数进行软阈值量化处理。
(3)二维小波的重构。根据小波分解的第N层的低频系数和经过修改的从第一层到第N层的各层高频系数计算二维信号的小波重构。
在这3个步骤中,重点是如何选取阈值和阈值的量化。
这里先介绍去噪处理两个非常有用的函数ddencmp和wdencmp。
(1)信号去噪函数ddencmp,其调用格式为:
[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)
[THR,SORH,KEEPAPP]=ddencmp(IN1,'wv',X)
[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wp',X)
其中:X是输入原始信号;THR是阈值;SORH指定选取软阈值上(‘s’)或硬阈值(‘h’);KEEPAPP为保留近似系数;CRIT为熵名;IN1为den;IN2:'wv'为小波变换或'wp'为小波包变换;X是图像。
(2)函数wdencmp,其调用格式为:
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('gbl',X,'wname',N,THR,SORH,KEEPAPP)
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',X,'wname',N,THR,SORH)
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',C,L,'wname',N,THR,SORH)
其中:gbl代表阈值是全局阈值;lvd代表阈值是在各层大小不同的数值;X是输入图像;wname是选取的小波基;N是分解层数;KEEPAPP=1 时将小波分解的低频系数不作任何处理,KEEPAPP=0时对小波分解的低频系数也进行阈值量化处理;XC返回的是经过原信号X进行去噪处理后的信号;CXC返回的是XC结构;LXC返回的是XC结构。
【例13.1】利用ddencmp函数中小波变换方法对受染图像进行去噪处理。MATLAB代码设置如下:
load woman
%下面进行噪声的产生
init=300000;
rand('seed',init);
Xnoise=X+18*(rand(size(X)));
%显示原始图像及它的含噪声的图像
colormap(map);
image(wcodemat(X,192));
title('原始图像')
axis square
结果如图13-5所示。
figure
image(wcodemat(Xnoise,192));
title('含噪声的图像');
axis square
结果如图13-6所示。
图13-5 原始图
图13-6 含噪图
%用db4小波对图像信号进行二层的小波分解
[c,s]=wavedec2(Xnoise,2,'db4');
%下面进行图像的去噪处理
%使用ddencmp函数来计算去噪的默认阈值和熵标准,使用wdencmp函数来实现图像的去噪
[thr,sorh,keepapp]=ddencmp('den','wv',Xnoise);
[Xdenoise,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,s,'db4',2,thr,sorh,keepapp);
%显示去噪后的图像
figure;
image(Xdenoise);
title('去噪后的图像');
axis square
结果如图13-7所示。
图13-7 去噪图
输出结果从上述3个图像的比较可以看出,MATLAB中的ddencmp和wdencmp函数可以有效地进行去噪处理。
13.3.2 基于小波变换进行图像去噪
由于图像所含的噪声主要是白噪声,而且主要集中在图像的高频部分,所以我们可以通过全部滤掉图像中的高频部分实现图像的去噪。具体去噪过程可按照下面例子进行。
【例13.2】利用小波分析对受染图像进行图像去噪处理。MATLAB代码设置如下:
load wmandril;
%画出原始图像
image(X);
colormap(map);
title('原始图像');
axis square
结果如图13-8所示。
%产生含噪图像
init=2000;
randn('seed',init)
x=X+randn(size(X));
%画出含噪图像
figure;
image(x);
colormap(map);
title('含噪声图像');
axis square;
结果如图13-9所示。
图13-8 原图
图13-9 含噪图
%下面进行图像的去噪处理
%用小波函数db4对x进行2层小波分解
[c,s]=wavedec2(x,2,'db4');
%提取小波分解中第一层的低频图像,即实现了低通滤波去噪
a1=wrcoef2('a',c,s,'db4');
%画出去噪后的图像
subplot(211);
image(a1);
title('第一次去噪图像');
axis square;
%提取小波分解中第二层的低频图像,即实现了低通滤波去噪,相当于把第一层的低频图像经过再一次的低频滤波处理
a2=wrcoef2('a',c,s,'db4',2);
%画出去噪后的图像
subplot(212);
image(a2);
title('第二次去噪图像');
axis square;
结果如图13-10所示。
图13-10 去噪图
从上面的输出结果可以看出,第一次去噪已经滤去了大部分的高频噪声,但从去噪图像与原始图像相比可以看到,第一次去噪后的图像中还是含有不少的高频噪声;第二次去噪是在第一次去噪的基础上,再次滤去其中的高频噪声。从去噪的结果可以看出,它具有较好的去噪效果。
13.3.3 基于阈值法进行图像去噪
由于原始图像中只有较少的高频噪声,如果按照上一个例子把高频噪声全部滤掉的方法将损坏图像中固有的高频有用信号。因此,下例采用小波分解系数阈值量化方法进行去噪处理。
【例13.3】利用阈值法进行图像去噪。MATLAB代码设置如下:
clear
clc
load facets;
%画出原始图像
image(X);
colormap(map);
title('原始图像');
axis square
结果如图13-11所示。
%产生含噪声图像
init=200000;
randn('seed',init)
x=X+30*randn(size(X));
%画出含噪声图像
figure;
image(X);
colormap(map);
title('含噪声图像');
axis square
结果如图13-12所示。
图13-11 原始图
图13-12 含噪图
%下面进行图像的去噪处理
%用小波函数db4对x进行2层小波分解
[c,s]=wavedec2(x,2,'db4');
%提取小波分解中第一层的低频图像,即实现了低通滤波去噪
%设置尺度向量n
n=[1,2];
%设置阈值向量p
p=[9,20];
%对3个方向高频系数进行阈值处理
nc=wthcoef2('h',c,s,n,p,'s');
nc=wthcoef2('v',c,s,n,p,'s');
nc=wthcoef2('d',c,s,n,p,'s');
%对新的小波分解结构[nc,s]进行重构
xx=waverec2(nc,s,'db4');
%画出重构后图像的波形
figure;
image(X);
colormap(map);
title('去噪后的图像');
axis square
结果如图13-13所示。
图13-13 去噪图
二维图像在小波域中去噪方法的基本思想与一维情况一样,在阈值选择上,可以使用统一的全局阈值,可以分作3个方向,分别是水平方向、竖直方向和对角方向,这样就可以把在所有方向的噪声分离出来,通过作用阈值抑制其成分。
13.3.4 基于小波包分析进行图像去噪
小波分析之所以在信号处理中有着强大的功能,是基于其分离信息的思想,分离到各个小波域的信息除了与其他小波域的关联,使得处理的时候更为灵活。
全局阈值化方法作用的信息粒度太大,不够精细,所以很难同时获得高的去噪比和能量保留成分,在作用的分层阈值以后,性能明显提高,因为分层阈值更能体现信号固有的时频局部特性。
但是小波分解仍然不够灵活,分解出来的小波树只有一种模式,不能完全地体现时频局部化信息。而去噪的核心思想既是尽可能去除各小波域系数之间的信息关联,最大限度地体现时频局部化的信息。
因此,实际的去噪算法多采用小波包算法,而小波树的确定则是根据不同的信息论准则,以达到分解系数表达的信息密度最高。
下面我通过一个例子来说明小波包分析在图像去噪中的应用,并给出性能参数以便于同基于小波分析的去噪进行比较。
【例13.4】利用ddencmp函数中小波包分析对受染图像进行去噪处理。MATLAB代码设置如下:
load woman
%下面进行噪声的产生
init=300000;
rand('seed',init);
Xnoise=X+18*(rand(size(X)));
subplot(211);
%显示原始图像及它的含噪声的图像
colormap(map);
image(wcodemat(X,192));
title('原始图像')
axis square
subplot(212)
image(wcodemat(Xnoise,192));
title('含噪声的图像');
axis square
结果如图13-14所示。
%用db4小波对图像信号进行二层的小波分解
[c,s]=wavedec2(Xnoise,2,'db4');
        %下面进行图像的去噪处理,使用ddencmp函数中自带小波包算法来计算去噪的默认阈值和熵标准
[thr,sorh,keepapp]=ddencmp('den','wp',Xnoise);
%使用wdencmp函数来实现图像的压缩
[Xdenoise,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,s,'db4',2,thr,sorh,keepapp);
%显示去噪后的图像
figure;
image(Xdenoise);
title('去噪后的图像');
axis square
结果如图13-15所示。
图13-14 结果图
图13-15 去噪后图像
【例13.5】利用小波包分析对一个给定的染噪信号进行去噪处理。MATLAB代码设置如下:
load facets;
%下面进行噪声的产生
init=300000;
rand('seed',init);
x=X+18*(rand(size(X)));
%显示原始图像及它的含噪声的图像
colormap(map);
image(wcodemat(x,192));
title('原始图像')
axis square
结果如图13-16所示。
figure
image(wcodemat(x,192));
colormap(map);
title('含噪声的图像');
axis square
%下面进行图像的去噪处理
%设定阈值和熵标准
thr=10;
sorh='s';
crit='shannon';
keepapp=0;
%使用wdencmp函数来实现图像的压缩
[Xdenoise,treed,perf0,perfl2]=wpdencmp(x,sorh,3,'db4',crit,thr,keepapp);
%显示去噪后的图像
结果如图13-17所示。
图13-16 原图
图13-17 含噪图
figure;
image(Xdenoise);
colormap(map);
title('去噪后的图像');
axis square
结果如图13-18所示。
%对图像进行平滑处理以增强去噪效果
for i=2:250
for j=2:250
temp=0;
for m=1:3
for n=1:3
temp=temp+Xdenoise(i+m,j+n);
end
end
temp=temp/9;
x2(i,j)=temp;
end
end
figure;
image(x2);
colormap(map);
title('平滑后的图像');
axis square
结果如图13-19所示。
图13-18 去噪图
图13-19 平滑图像
【例13.6】利用小波包分解,设置阈值,对一个给定的染噪图像进行去噪处理。MATLAB代码设置如下:
load wmandril;
%下面进行噪声的产生
init=300000;
rand('seed',init);
x=X+10*(rand(size(X)));
%显示原始图像及它的含噪声的图像
subplot(211);
colormap(map);
image(wcodemat(x,192));
title('原始图像')
axis square
subplot(212);
image(wcodemat(x,192));
colormap(map);
title('含噪声的图像');
axis square
结果如图13-20所示。
%小波包分解
T=wpdec2(x,1,'sym4');
%下面进行图像的去噪处理
%设定阈值
thr=18;
%对小波包分解系数进行软阈值量化
NT=wpthcoef(T,0,'s',thr);
%对低频系数进行重构
Xdenoise=wprcoef(NT,1);
%显示去噪后的图像
figure;
image(Xdenoise);
colormap(map);
title('去噪后的图像');
axis square
结果如图13-21所示。
图13-20 结果图
3-21 去噪后图
13.4 MATLAB二维小波工具箱去噪
前面的章节曾经向读者介绍过如何利用小波工具箱的界面来进行对图像的操作,本节主要介绍关于图像去噪的工具箱。
13.4.1 二维离散小波界面式去噪
本小节将向读者介绍利用小波工具箱的二维离散小波变换去除图像的噪声。
打开二维小波分析工具。首先,在窗口中键入wavemenu,弹出小波工具箱主界面。下面向读者介绍二维离散小波分析工具分析真实世界噪声图像的具体操作步骤。具体操作步骤如下。
(1)打开二维小波分析工具。首先,在窗口中键入wavemenu,弹出小波工具箱主界面,然后单击Wavelet 2-D按钮。
(2)下载信号源。选择File→Load→Signal命令,在弹出的对话框中选择woman.mat文件,它的路径为toolbox/wavelet/wavedemo,单击OK按钮。这样图像就被下载到了此工具中,如图13-22所示。
图13-22 图像源
(3)执行2级小波系数分解。在图13-22所示的界面中选择db4小波进行2级分解。同时单击Analyze按钮,经过短暂的计算后,工具显示分解图,如图13-23所示。
图13-23 分解系数图
(4)执行不同级数上的小波系数去噪。在界面的右方,从Decomposition at level 下拉列表中选择1,如图13-24所示。这里,界面工具右下方提供了2种模式选项,如图13-25所示。
图13-24 多级小波和模式选项
注意:图13-23与图13-24右下方的变化。
(5)去噪。单击De-noise按钮(在Analyze按钮的下面),二维小波降噪窗出现,如图13-25所示。
图13-25 去噪图
(6)选择阈值。在右上方的thresh下选择如图13-26所示的阈值参数。
(7)图像去噪。单击De-noised按钮,弹出去噪窗口,如图13-26所示。
图13-26 去噪图像
(8)显示统计值。单击Residual按钮,弹出去噪后的图像与原始图像的误差统计值,如图13-27所示。
图13-27 误差统计值
13.4.2 二维小波包界面式去噪
本小节将采用二维小波包图形工具来对一个噪声图像进行去噪。
(1)启动小波工具箱。方法同上一小节一样。
(2)启动二维小波包的主界面。单击Wavelet Packets 2-D按钮。
(3)下载图像源。选择 File→Load Signal命令,在弹出的对话框中选择 wgatlin.mat文件,它的路径为toolbox/wavelet/wavedemo,单击OK按钮。这样图像就被下载到了此工具中,如图13-28所示。计算时采用shannon熵标准。
(4)小波包分析。在图13-28右边可以对图像进行设置。选择db4小波,并且分解层数设置为3,选择的熵类型为shannon。单击Analyze按钮,执行对图像分解,显示在窗口中,如图13-29所示。
图13-28 加载图像
图13-29 图像分析
(5)计算最佳树。在图13-29中的右上方单击Best Tree按钮,得到如图13-30所示的最佳树。
(6)选择阈值进行去噪。单击De-noise按钮,弹出如图13-31所示的二维小波包去噪窗口。
图13-30 最佳树
图13-31 去噪
(7)再单击De-noise按钮可以看到去噪图像,如图13-32所示。
图13-32 去噪图像图
说明:图13-32中的左图即是原图像,右图即是去噪图像,两图都在同一个显示框中。
(8)显示统计值。单击Residuals按钮,弹出去噪后的图像与原始图像的误差统计值,如图13-33所示。
图13-33 误差统计值
通过MATLAB小波工具箱来进行图像去噪操作简单方便。同时,在这一节中读者可以对一种噪声图像通过小波变换和小波包变换两种小波方法来进行去噪处理,比较发现两种方法的优劣。
13.5 小波图像去噪实例
本节将通过实例来向读者演示小波方法去噪的算例,希望可以对这方面感兴趣的研究人员提供一些编程方法。
【例13.7】利用小波变换方法进行图像去噪处理。
MATLAB代码设置如下:
clear
clc
load woman
%下面进行噪声的产生
init=300000;
rand('seed',init);
img=X+18*(rand(size(X)));
%显示原始图像及它的含噪声的图像
colormap(map);
image(wcodemat(X,192));
title('原始图像')
axis square
结果如图13-34所示。
figure
image(img);
colormap(map);
title('含噪声的图像');
axis square
结果如图13-35所示。
图13-34 原始图
图13-35 含噪图
levels=2;
[xx,yy]=size(img);
HH=img((xx/2+1):xx,(yy/2+1):yy);
delt_2=(std(HH(:)))^2;
T_img=img;
%分解层数
for i=1:levels
temp_x=xx/2^i;
temp_y=yy/2^i;
belt=1.0*(log(temp_x/(2*levels)))^0.5;
HL=img(1:temp_x,(temp_y+1):2*temp_y);
delt_y=std(HL(:));
T_1=belt*delt_2/delt_y;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
T_HL=sign(HL).*max(0,abs(HL)-T_1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
T_img(1:temp_x,(temp_y+1):2*temp_y)=T_HL;
Sub_T(3*(i-1)+1)=T_1;
%LH
LH=img((temp_x+1):2*temp_x,1:temp_y);
delt_y=std(LH(:));
T_2=belt*delt_2/delt_y;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
T_LH=sign(LH).*max(0,abs(LH)-T_2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
T_img((temp_x+1):2*temp_x,1:temp_y)=T_LH;
Sub_T(3*(i-1)+2)=T_2;
%HH
HH=img((temp_x+1):2*temp_x,(temp_y+1):2*temp_y);
delt_y=std(HH(:));
T_3=belt*delt_2/delt_y;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
T_HH=sign(HH).*max(0,abs(HH)-T_3);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
T_img((temp_x+1):2*temp_x,(temp_y+1):2*temp_y)=T_HH;
Sub_T(3*(i-1)+3)=T_3;
end
figure
image(T_img);
colormap(map);
title('去噪图像');
axis square
结果如图13-36所示。
图13-36 去噪图
13.6 本章小结
近年来,小波变换在去噪处理中的应用一直是人们研究的一大热点,取得了令人瞩目的成果。因为它在时域和频域都具有很好的局部化性质,可以将信号所携带的信息分解到任意细节加以分析,并且信号和噪声在小波变换的细节信息具有截然不同的特性。因此可将其用于信号与图像去噪,以更为准确地区分信号与噪声,在最大限度地去除噪声的同时,尽可能保留有效信号,对图像进行分析和去噪处理。
本章首先介绍了图像处理方面的概述,随后介绍了图像去噪的小波方法以及MATLAB去噪函数和算例,最后介绍了二维小波工具箱去噪方法和实例。希望对此感兴趣的爱好者可以从中有所收获!

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

___Y1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值