第10章 小波分析用于信号去噪


噪声可以理解为妨碍人的视觉器官或系统传感器对所接收信源信息进行理解或分析的各种因素。一般来说,实际信号在采集、获取以及传输的过程中,往往要受到噪声的污染,成为影响视觉质量的含噪信号。
在小波去噪中,小波系数模型非常重要,只有在成功的小波系数模型上,才可能提出成功的小波去噪方案。小波系数模型主要分为层间模型、层内模型和混合模型。其中:层间模型主要是考虑跨尺度系数之间关系的模型;层内模型主要考虑层内系数的统计分布,以及相邻系数之间的关系;而混合模型是综合考虑了层间和层内小波系数关系的模型。
本章从实践角度出发,首先介绍去噪的基本原理与方法;其次,介绍有关MATLAB小波工具箱中的去噪函数,并且将不惜篇幅地列举去噪的算例供读者参考;最后,介绍语音信号的去噪原理与实例。
学习目标:
(1)了解小波去噪的原理和方法
(2)熟练掌握MATLAB中小波去噪函数
(3)熟练掌握一维小波工具箱对信号去噪
(4)掌握语音信号去噪的方法
10.1 信号去噪原理
在去噪领域中,小波理论由于其特殊的优点受到了许多学者的重视,他们应用小波进行去噪,并获得了非常好的效果。
10.1.1 小波去噪概述
噪声可以理解为妨碍人的视觉器官或系统传感器对所接收信息进行理解或分析的各种因素。一般噪声是不可预测的随机信号,它只能用概率统计的方法去认识。噪声主要在信号的获取(量化)和传输中产生。
声音信号和图像信号的输入、采集、处理的各个环节以及输出结果的全过程都不可避免地会受到噪声的影响。固有噪声包括影像系统的结构噪声、光源噪声、模拟电路噪声、光电转换和模/数转换过程中产生的电器系统噪声等,它们都是以高斯分布的白噪声的形式存在。
一个含噪声的一维信号模型可以表示为
 ,其中,s(t)为原始信号,f(t)为含噪声的信号,e(t)为噪声。小波去噪模型的基本依据是:
(1)信号和噪声的小波系数在不同尺度上有着不同的特征表现;
(2)对于空间不连续函数,大部分行为集中在小波空间的一小部分子集内;
(3)噪声污染了所有的小波系数,且贡献相同;
(4)噪声向量是高斯形式,它的正交变换也是高斯形式。
我们可以将噪声看成是一个普通的信号,对它进行小波分析。如果它是一个平稳、零均值的白噪声,则它的小波分解系数是不相关的,并且高频系数的幅值随着分解层次的增加而很快地衰减,同时高频系数的方差也很快地衰减;如果是一个高斯噪声,则其小波分解系数是独立的,也是高斯分布。
当对噪声e进行小波分解时,它同样会产生高频系数,所以,一个含噪声信号的高频系数分量是有用信号f和噪声信号e的高频系数的叠加。Grossmann证明白噪声的方差和幅值随着小波变换尺度的增加会逐渐减小,而信号的方差和幅值与小波变换的尺度变化无关。
根据白噪声和信号的不同小波变换特性,就可以对信号进行降噪处理。用小波进行信号的去噪可以很好地保存有用信号中的尖峰和突变部分,而去噪的关键就是对小波系数的量化处理。
长期以来,在信号处理方面,人们所使用的最基本的数学工具就是傅立叶变换。但是,傅立叶变换是一种全局的变换,无法表述信号的时频双域局部特性,只能反映信号的整体特征。而在不少实际问题中,人们所关心的却是信号在局域范围中的特征,例如:音乐和语音信号中,人们关心的是在什么时刻演奏什么音符,发出什么音节;对人工地震波的记录,人们关心的是在什么位置出现了什么反射波;对图像处理中的边沿识别,关心的是信号的突变位置等。小波变换正是弥补这一不足的强有力的工具。
小波变换理论是近20年中才发展起来的一个数学分支,目前它仍然是国际上极为活跃的研究领域。小波变换的分析窗口大小(窗口面积)固定但其形状可改变,小波变换是时间窗和频率窗都可改变的时频局部化分析方法,对不同的频率在时域上的取样步长是可调节的,即在低频时小波变换的时间分辨率较差,而频率分辨率较高;在高频时小波变换的时间分辨率较高,而频率分辨率较低。这种自适应性正符合低频信号变化缓慢而高频信号变化迅速的特点。
小波变换在时域和频域同时具有良好的局部化性质,不仅可将图像的结构和纹理分别表现在不同分辨率层次上,而且具有检测边沿(局域突变)的能力,因此,利用小波变换在去除噪声时,可提取并保存对视觉起主要作用的边沿信息。
而传统的傅立叶变换去噪方法在去除噪声和边沿保持上存在着矛盾,原因是傅立叶变换方法在时域不能局部化,难以检测到局域突变信号,在去除噪声的同时,也损失了图像边沿信息。
由此可见,与傅立叶变换去噪方法相比,小波变换去噪方法具有明显的优越性。它的成果已被广泛应用于图像处理、语声人工合成、地震勘探、大气湍流、天体识别以及机器视觉等众多领域。具体说来,小波去噪的成功主要在于小波变换有如下特点。
(1)低熵性。小波系数的稀疏分布使图像变换后的熵降低。
(2)多分辨率特性。由于采用了多分辨率的方法,所以可以非常好地刻画信号的非平稳特征,如边缘、尖峰、断点等,可在不同分辨率下根据信号和噪声分布特点进行去噪。
(3)去相关性。因小波变换可对信号去相关,且噪声在变换后有白化趋势,所以小波域比时域更利于去噪。
(4)选基灵活性。由于小波变换可以灵活选择基,也可根据信号特点和去噪要求选择多带小波、小波包、平移不变小波等,对不同相应场合,可以选择不同的小波母函数。
小波分析是时频分析方法,具有良好的时频局部性,并且有快速算法(Mallat算法)加以实现。这样,小波变换理论就为噪声消除问题提供了一个新的思路,其应用也日渐广泛。
10.1.2 基于模极大值去噪法
从理论上讲,去噪的原理是:信号的Lipschitz指数是大于0的,噪声的Lipschitz指数
 可能小于0。因此,随着尺度的增大,信号和噪声所对应的小波变换系数分别是增大和减小。
根据不同尺度间小波变换模极大值变化的规律,去除幅度随尺度的增加而减小的点,保留幅度随尺度增加而增加的点,然后再由保留的模极大值点用交替投影法进行重建,从而达到去噪的目的。
1992年,Mallat提出用奇异点模极大值法检测信号的奇异点,根据有用信号与噪声在奇异性上存在差异,采用多分辨率理论,由粗及精地跟踪各尺度 j 下的小波变换极大值来消除噪声。
10.1.3 小波阈值去噪
噪声在的小波分解有以下特性:如果信号 n(t)是一个平稳、零均值的白噪声,则其小波分解系数是不相关的;如果信号 n(t)是一个高斯白噪声,则其小波分解系数是独立的,也是高斯分布的;如果信号 n(t)是一个有色、平稳、零均值的高斯噪声序列,则其小波分解系数也是高斯序列。
对每一尺度,其系数也是一个有限、平稳的序列。Donoho提出的小波阈值去噪方法是工程中应用最广泛的方法,其基本思想是:一个含噪声的一维信号模型可以表示为f(t)=s(t)+n(t),其中,s(t)为原始信号,n(t)是方差为σ2
 的高斯白噪声,服从N(0,σ2
 )。
由于小波变换是线性变换,对f(t)作离散小波变换后得到的小波系数仍由两部分组成:一部分是信号对应的小波系数,另一部分是噪声对应的小波系数。基于有用信号和噪声在经小波变换后具有不同的统计特性:有用信号的能量对应着幅值较大的小波系数,噪声能量则对应着幅值较小的小波系数,并分散在小波变换后的所有系数中。
一般来讲,经过小波分解后,信号的系数要大于噪声的系数,于是可以找到一个合适的数λ作为阈值,当分解系数小于这个临界阈值时,认为这时的分解系数主要是由噪声引起的,予以舍弃;当分解系数大于这个临界阈值时,认为这时的分解系数主要是由信号引起的,就把这一部分直接保留下来(硬阈值方法)或者按照某一固定量向零收缩(软阈值方法),然后用得到的小波系数进行小波重构,即为去噪后的信号。
Donoho提出的硬阈值函数为:
软阈值函数为:
其中:
 分别为经去噪处理前后的小波变换系数s,ign(.)为符号函数,阈值λ取为
 是对噪声水平的估计值,M是信号的长度。
下面介绍关于阈值去噪的方法。
通常叠加性高斯白噪声是最常见的噪声模型,受到叠加性高斯白噪声“污染”的观测信号可以表示为:
其中:di
 为含噪信号,fi
 为“纯净”采样信号,zi 为独立同分布的高斯白噪声N(0,1)(用符号可表示为zi
 ~N(0,1),ε为噪声水平,信号长度为N。
为了从含噪信号 di
 中还原出真实信号 fi
 ,可以利用信号和噪声在小波变换下的不同特性,通过对小波分解系数进行处理来达到信号和噪声分离的目的。
在实际工程应用中,有用信号通常表现为低频信号或是一些比较平稳的信号,而噪声信号则通常表现为高频信号,所以我们可以先对含噪信号进行小波分解(如进行三层分解):
其中:cAi
 为分解的近似部分,cDi
 为分解的细节部分,i=1,2,3,则噪声部分通常包含在cD1
 、cD2
 、cD3
 中,用门限阈值对小波系数进行处理,重构信号即可达到去噪的目的。总结去噪过程,可以分成以下3个步骤:
(1)利用小波变换将实际自然图像变换为小波域;
(2)对小波系数运用非线性收缩规则进行处理;
(3)将阈值化处理后的小波系数进行小波反变换得到去噪图像。
由此可以看出:这3个步骤中,第二步是小波收缩去噪的关键,即小波收缩去噪的关键是小波收缩阈值和小波函数的选取。
10.1.4 平移不变量法
平移不变量小波去噪法是在阈值法基础上作出的改进。采取阈值法去噪时,当信号具有突变的不连续点或当信号具有较低的信噪比时,小波变换去噪就有可能表现出伪吉布斯(Pseudo-Gibbs)现象,即在应有信号电平上出现随机的正脉冲和负脉冲,并且它的大小与信号不连续点的位置紧密相连,由于一个信号中可能包含几个不连续点,它们之间会相互干扰,也即对于一个不连续点的最佳平移可能是另一个不连续点的最差平移。
因此,我们不采用单一平移,而是通常采用n次循环平移,对平移后的信号用阈值法进行去噪处理,然后再对每次平移去噪后的结果进行平均,即所谓“平移-去噪-平均”的平移不变量小波去噪法。
例如,当采用Haar小波时,位于n/2处的不连续点就不会表现出伪吉布斯现象,而位于n/3处的不连续点则会明显地表现出Pseudo-Gibbs现象,可以通过预先的平移使原来不在n/2位置的奇异点平移到n/2位置,抑制Pseudo-Gibbs现象的产生,然后再通过反向的平移恢复到同原始信号一样的排列次序,从而达到去噪的目的。
对于一个信号f(t)(0≤t≤N-1),定义Fn
 为平移n 位的平移算子:Fn
 (f(t))=f(t+n) mod(N),其中n为平移量。由于Fn
 是一一对应的,所以得:
设信号阈值去噪过程为一个分析运算T,通过平移过程可以表示为:
其中,
 为原始信号f经过平移不变法去噪后的信号。
10.1.5 其他方法
阈值法的原始信号的恢复效果主要依赖于阈值的选取,如果阈值选取过大,就会消去信号的部分信息;阈值选取过小则会保留过多噪声。
针对硬阈值函数和软阈值函数的缺点,这些方法的共同特点是:在软、硬阈值函数之间作一个折中:当小波系数小于阈值时,不是简单地置零(硬阈值方法)或者按照固定向量向零收缩(软阈值方法),而是平滑地减少为零。
第一种方法是对含噪信号作小波变换之后,计算相邻尺度间各点小波系数的相关性,根据相关性的大小区别小波系数的类型,从而进行取舍,然后直接重构信号。
定义1 设
 ,则称CWj,k
 为尺度j上k点处的相关系数。
由于信号在各尺度之间具有一定的相关性,而噪声无此特性,因此尺度空间上的相关运算削弱了噪声,增强了信号的边缘。
为了使得相关系数与小波系数具有可比性,我们定义归一化相关系数。
定义2 设
 为归一化相关系数,其中
归一化相关系数
 具有相同的能量。
相关去噪的核心环节是通过比较
 的绝对值的大小来抽取信号的边缘信息,
 作比较是合理的。
余下的是噪声对应的小波系数,这样经过若干次迭代之后,小波系数的能量会低于某一门限,此时则认为信号已经被完全提取出来了。
10.1.6 阈值的选取
小波方法去噪分为小波分解、对分解后的高频系数进行阈值量化处理、信号的重构 3个步骤。去噪效果的好坏取决于以下几个环节:小波基的选择、小波分解层数的确定、阈值函数及阈值估计方法的选取。其中,最重要的环节是如何选取阈值函数和如何对阈值进行量化。由于噪声是一种随机的信号,其方差是未知的,实际去噪过程中必须首先对阈值进行估计,基于样本估计的阈值的选取,其原理为对信号做估计,确定一个统一的阈值,然后保留超出这个阈值的系数而截掉小于阈值的系数。
通常有4种可供选择的阈值估计方法,如下。
(1)固定阈值(sqtwolog):阈值λ=2 ln(M),M为信号的长度。
(2)基于史坦(Stein)的无偏似然估计原理(SURE)的自适应阈值选择(rigrsure):对一个给定的阈值t,得到它的似然估计,再将非似然t最小化,就得到了所选的阈值。
(3)启发式阈值(heursure):是前两种阈值的综合,是最优预测变量阈值选择。
(4)极大极小阈值(minimaxi):采用的也是一种固定的阈值,它产生一个最小均方误差的极值,而不是无误差。在统计学上,这种极值原理用于设计估计器。因为被去噪的信号可以看作与未知回归函数的估计式相似,这种极值估计器可以在一个给定的函数集中实现最大均方误差最小化。
将高斯白噪声作为一种信号进行去噪实验发现,选用minimaxi和SURE阈值规则进行去噪,只将部分系数置0,保留了大约3%的系数;而选用sqtwolog和heusure规则进行去噪,所有的小波系数都被变为0,去噪比较完全。
可见,minimaxi和SURE阈值规则比较保守,当含噪声信号的高频信息有很少一部分在噪声范围内时,这两种阈值非常有用,可以将微弱的信号提取出来;而sqtwolog和heusure规则去噪比较完全,在去噪时显得更为有效,但是很容易把有用的高频信号误认为噪声而去除掉。
从整体和局部的关系上又分为全局阈值去噪与分层阈值去噪两种方式。阈值全局处理就是对各级小波分解得到的高频系数采用同一阈值进行滤波,而阈值分层处理则对小波分解的每一层基于一个阈值进行滤波。从理论上分析,分层阈值根据各层系数的特征进行阈值选取,更能灵活处理含噪信号中的噪声。
信噪比(SNR)和最小均方误差(MSE)是判断去噪效果的依据。为了得到最好的去噪效果,不但要选择合适的小波函数,还要确定最佳的分解层数并选取合适的阈值。对某一信噪比的含噪声信号,我们分别改变所取的小波函数、分解层数和阈值取法,通过大量的对比仿真实验找到最好的去噪方法。然后再对不同信噪比的含噪声信号进行去噪,进一步改进去噪方法,使去噪方法具有通用性。
10.1.7 现有方法的优缺点
模极大值法主要适于信号中混有白噪声且含有较多奇异点的情况,该方法去噪后能很好地保留反映信号特征的奇异点信息,去噪后的信号没有多余震荡,能得到较高的信噪比,但是计算复杂且速度非常慢。平移不变量法适用于信号中含有若干不连续点的情况,去噪效果较好,但是计算速度非常慢。
Donoho的软、硬阈值去噪方法在实际中得到广泛的应用,而且也取得了较好的效果。但是硬阈值函数在λ处是不连续的,这种不连续性导致重构信号容易出现伪吉布斯现象,出现许多不期望的震荡,失去原始信号的光滑性;而软阈值函数虽然整体连续性好,但估计值与实际值之间总存在恒定的偏差,并且软阈值函数的导数不连续,具有一定的局限性。神经网络去噪的方法由于需要很多次迭代,计算过程比其他方法都要复杂,应用起来比较困难。
在工程中最常用的去噪方法是阈值去噪法,阈值法的原始信号的恢复效果主要依赖于阈值的选取,如果阈值选取过大,就会消去信号的部分信息;阈值选取过小则会保留过多噪声。
10.1.8 小波去噪的基本原理
小波去噪的基本原理可归纳为如下3个模型。
1.层内模型
目前最经常使用的层内系数模型是广义高斯分布模型,这是对自然信号在同一层内的小波系数分布进行统计得到的规律,Laplace分布和高斯分布是它的两个特例。
Hansen等人利用与自然信号对应的小波系数近似地服从Laplace分布的特点,在小波系数是独立同分布的假设下,得到了利用带噪声信号小波系数来估计原信号的公式,并用于去噪,收到了非常好的效果。稍微复杂些的模型则将信号小波系数看成是独立的,但非同分布的。
事实上,由于小波变换的去相关作用,相邻小波系数之间并无明显的关系,但是小波系数的绝对值或平方值却是符合Markov场的分布。Mihcak等人由此提出小波系数的层内混合模型,在此模型中,原信号小波系数被看作是一个双随机过程,其方差局部高度相关,但在给定方差时,则成为相互独立且均值为零的高斯分布;而Chang等人则打破空间位置的限制,从小波系数值邻域来考察方差的相关性,从而得到了具有很强局部适应性的阈值萎缩方法。
2.层间模型
层间模型描述的是跨尺度小波系数之间的关系。较早但相对粗糙的模型是由 Shapiro提出的,以这种模型为基础的零树编码方法已经在图像编码中得到了广泛的应用。
这种模型的主要特点是认为在小尺度中,较小的小波系数,其子孙很有可能也较小;而Baraniuk等人则通过隐式马氏链的转移矩阵将这种关系量化起来。在小波去噪中,这个特征可以用来区分图像边缘和由噪声引起的伪边缘。
3.混合模型
混合模型主要综合了上述两种模型,它既考虑了层间系数之间的相关性,又顾及了层内系数的关系,由于小波系数层实际上对应一个尺度,所以这种模型也被称为空间——尺度混合模型。Liu等人通过设定一个阈值T,并将大于T的系数称为重要(Significant)的。由此根据其父波是否重要将小波系数分成Gsig
 和Ginsig
 两类,并假定Gsig
 服从指数分布,Ginsig
 则服从方差局部高度相关的高斯分布,最后得到新的混合模型,其与隐式马氏树(Hidden Markov Tree,HMT)模型相比,新模型考虑了层内系数之间的关系;而与层内模型相比,则能更好地揭示信号特征在跨尺度下的行为。
另外,Baraniuk等人将小波系数分成几种状态(如小和大),并通过考察小波系数状态在层内和层间的变化,提出了独立状态模型(Independent Model,IM)、隐马氏链模型(Hidden Markov Chain,HMC)和隐马氏树模型(HMT)3 种模型,并统称为小波马尔可夫模型。前两者实际上属于层内模型,而后一种则属于层间模型。
10.1.9 各种小波变换在小波去噪中的应用
小波变换包括单小波变换、小波包变换、多小波变换、平移不变量(Translation Invariant,TI)单小波变换、平移不变量小波包变换和平移不变量多小波变换等。
一般来说,小波变换能够很好地表征一大类信号,但是当信号的高频信息(细小边缘或纹理)较多时,小波变换的倍频特征将使得高频部分不能得到很好的分解和表示,而小波包变换则能对高频部分进行任意细的分割,由于这样可以更好地刻画这一类信号,因而对这类图像或信号,小波包变换要比小波变换好。
但是,当信噪比较低时,小波包变换在搜索小波基时会受到噪声信号的影响,即在噪声主宰区域,小波包算法由于会去更好地匹配噪声,从而导致小波基的搜索,在一定程度上只是为了描述噪声信号,反而不利于小波去噪。
小波阈值去噪法虽然表现了非常好的噪声和信号区分能力,但是由于缺乏平移不变性,因此使得最后得到的去噪版本出现失真,主要体现为振铃效应和Pseudo-Gibbs效应。为此,Donoho和Coifman 通过一种循环平移(Cycle-Spinning)的方法,提出了平移不变量小波变换,很好地解决了这个问题,从而使得TI小波去噪方法得到了很多应用。
另外,使用TI小波变换还有一个优点,就是小波系数的个数不会随着层数衰减,从而能够保持某些去噪方法的渐进特性,例如,用GCV准则确定的阈值不会过度偏离理想阈值。Chen等人结合小波包和平移不变小波的特点,提出了一种利用平移不变量小波包去噪的方法,并给出了相应的阈值公式。
因为小波变换和小波包变换均是基于同一个母小波,所以在表征多种特征的信号时,有时效率并不是很高,而在这一点上,多小波通过几个母小波之间的互补,则可以更好地胜任这一工作,从而可避免一些特征模糊化的现象,实验效果也很好地体现了这一点。
而Tien等人则更进一步,利用平移不变量多小波变换来进行去噪,因为平移不变量小波变换实际上是一种冗余的分解方式,所以计算量不可避免要比小波变换大得多。针对这一点,Paul等人做了有益的尝试,构造出了接近于平移不变量的小波变换。
从算法的简繁程度和最后的去噪效果综合考虑,上述任何一种方法都不绝对具有优势,而带噪信号的具体特征才是使用何种变换的决定因素。
10.2 MATLAB函数去噪
基于上一节介绍的原理,MATLAB小波工具箱主要针对阈值选取开发出了去噪函数,本节将作以介绍。
10.2.1 一维小波分析进行信号去噪
这里先介绍去噪处理两个非常有用的函数wden和wdencmp。
(1)信号去噪函数wden,其调用格式为:
[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,'wname')
[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,'wname')
其中:X是输入原始信号;TPTR 指定阈值选取规则;SORH 指定选取软阈值(‘s’)或硬阈值(‘h’);SCAL是阈值尺度改变的比例;N为小波分解层数;XD返回的是经过原信号X进行去噪处理后的信号;CXD返回的是XD结构;LXD返回的是XD结构。
这里,SCAL有如下3种选择。
①SCAL=‘one’,表示基本模式。一般地,可以忽略必须估计的噪声层次。在小波分解的细节层中,主要包含的是噪声系数,其绝对标准偏差比较稳定。这种稳定的估计值在信号分析中是相当重要的。这是因为,一方面如果第一层的系数中含有有用信号的高频信息,且其本身是很规则的,那么这种高频信息在几个高频层中能够集中地显现出来;另一方面,可以避免信号本身的截短效应,折中截短效应是在计算信号的边缘时所产生的无用信息。当这个无用信息被认为是一个非白噪声时,则必须在每个不同的小波分解尺度上估计噪声的层次,并以此来变换阈值尺度。
②SCAL=‘sln’,表示非白噪声的基本模式,且在每个不同的小波分解层次上都估计噪声的层次,以此来变换阈值的尺度。
③SCAL=‘mln’,表示对不同分解层次的小波进行独立的噪声估计。
另外一种更普遍的函数wdencmp,它可以直接对一维信号或二维信号进行去噪或压缩处理。
(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结构。
下面例举两个算例。
【例10.1】利用小波分析对受染信号进行去噪处理。MATLAB代码设置如下:
t=0:1000;
s=cos(0.03*t);
subplot(3,1,1);
plot(s);
title('原始信号');
%加噪
load noissin;
ns=noissin;
subplot(3,1,2);
plot(ns);
title('受染信号');
%去噪
xd=wden(ns,'minimaxi','s','one',4,'db3');
subplot(3,1,3);
plot(xd);
title('去噪信号');
结果如图10-1所示。
图10-1 去噪处理
【例 10.2】对某公司用电情况进行评估,对其电网电压进行监测。在采样过程中监测设备出现了一些故障,致使所采信号受到噪声污染。现在利用小波分析对污染信号进行去噪处理以恢复原始信号。MATLAB代码设置如下:
clc;clear;
%加载信号
load leleccum;
%采样点
s=leleccum(300:2000);
%画出原始信号
subplot(2,2,1);
plot(s);
title('原始信号');
%用db4小波对原始信号进行3层分解并提取系数
[c,l]=wavedec(s,3,'db4');
a3=appcoef(c,l,'db4',3);
d3=detcoef(c,l,3);
d2=detcoef(c,l,2);
d1=detcoef(c,l,1);
%对信号进行强制性去噪处理
dd3=zeros(1,length(d3));
dd2=zeros(1,length(d2));
dd1=zeros(1,length(d1));
c1=[a3 dd3 dd2 dd1];
s1=waverec(c1,l,'db4');
subplot(2,2,2);
plot(s1);
grid;
title('强制去噪后的信号');
%用默认阈值对信号进行去噪处理
%用ddencmp函数获得信号的默认阈值
[thr,sorh,keepapp]=ddencmp('den','wv',s);
s2=wdencmp('gbl',c,l,'db4',3,thr,sorh,keepapp);
subplot(2,2,3);
plot(s2);
grid;
title('默认阈值去噪后的信号');
%用给定的软阈值进行去噪处理
softd1=wthresh(d1,'s',10);
softd2=wthresh(d2,'s',10);
softd3=wthresh(d3,'s',25);
c2=[a3 softd3 softd2 softd1];
s3=waverec(c2,l,'db4');
subplot(2,2,4);
plot(s3);
grid;
title('给定软阈值去噪后的信号');
结果如图10-2所示。
小波分析进行去噪处理一般有下述3种方法。
(1)默认阈值去噪处理。该方法利用函数ddencmp生成信号的默认阈值,然后利用函数wdencmp进行去噪处理。
(2)给定阈值去噪处理。在实际的去噪处理过程中,阈值往往可通过经验公式获得,且这种阈值比默认阈值的可信度高。在进行阈值量化处理时可用函数wthresh。
(3)强制去噪处理。该方法是将小波分解结构中的高频系数全置为0,即滤掉所有高频部分,然后对信号进行小波重构。这种方法比较简单,且去噪后的信号比较平滑,但是容易丢失信号中的有用成分。
图10-2 结果图
10.2.2 阈值选取规则
(1)在MATLAB的小波工具箱中提供了一个生成阈值的函数,其调用格式为:
Y=wthresh(X,SORH,T)
其中:X代表输入信号;SORH指定选取软阈值上(‘s’)或硬阈值(‘h’);T设置阈值;Y返回的是输入分解系数的软、硬阈值。
注:硬阈值对应于最简单的处理方法,而软阈值具有很好的数学特性,并且所得到的理论结果可用。
下面介绍在进行信号去噪处理时选取阈值的一般规则。
(2)MATLAB小波工具箱提供了一个函数thselect,其调用格式为:
THR=thselect(X,TPTR)
其中:X指输入信号;TPTR指选定规则;THR指阈值。
注:TPTR有如下4种选项。
①TPTR=‘rigrsure’是一种基于Stein的无偏似然估计原理的自适应阈值选择。给定一个阈值t,得到它的似然估计,再将非似然t最小化,就可以得到选的阈值。
②TPTR=‘sqtwolog’所采用的是一种固定的阈值形式,它所产生的阈值为sqrt(2*log(length(X)))。
③TPTR=‘heursure’是前两种阈值的综合,所选择的是最优预测变量阈值。如果信噪比很小,而SURE估计有很大的噪声,在这种情况下,就需采用这种固定的阈值形式。
④TPTR=‘minimaxi’也是一种固定的阈值选择形式,它所产生的是一个最小圴方差的极值,而不是无误差。在统计学上,这种极值原理常用来设估计器。因为被去噪信号可以看作是与未知回归函数的估计式相似,这种极值估计器可在给定的函数中实现最大均方误差最小化。
【例10.3】生成阈值。MATLAB代码设置如下:
%生成阈值
clear;
y=linspace(-1,1,100);
thr=0.3;
yhard=wthresh(y,'h',thr);
ysoft=wthresh(y,'s',thr);
subplot(3,1,1);
plot(y);
title('原始信号')
axis tight
subplot(3,1,2);
plot(yhard);
title('硬阈值信号')
subplot(3,1,3);
plot(ysoft);
title('软阈值信号')
结果如图10-3所示。
图10-3 阈值
【例10.4】计算阈值。MATLAB代码设置如下:
y=randn(1,1000);
thr1=thselect(y,'rigrsure')
thr2=thselect(y,'sqtwolog')
thr3=thselect(y,'heursure')
thr2=thselect(y,'minimaxi')
thr1=
2.9280
thr2=
3.7169
thr3=
3.7169
thr2=
2.2163
因为信号y是一个标准高斯白色噪声,所以希望每一种方法都能粗略地将所有系数剔除。对于 Stein的无偏似然估计(SURE)和极大极小(minimaxi)原理的阈值选择规则,仅保存了约3%的系数,而另外两种阈值选择规则将所有的系数都变成了零。
同样地,对噪声进行小波分解时也会产生高频系数。所以一个信号的高频系数向量是原始信号和噪声信号的高频系数的叠加。由于SURE和minimaxi阈值选取规则较为保守(仅将部分系数置为零),因此在信号的高频信息有很少一部分在噪声范围内时,这两种阈值非常有用,可以将弱小的信号提取出来。
另外两种阈值选取规则在去噪时更为有效,但是也可能将有用信号的高频部分当做噪声信号去除掉。
10.2.3 对非平稳信号的去噪
在实际的工程应用中,大多数信号可能包含着许多尖峰或突变,而且噪声信号也并不是平衡的白噪声。对这种信号进行去噪处理时,由于传统的傅立叶变换完全是在频率域中对信号进行分析,它不能给出信号在某个时间点上的变换情况,因此分辨不出信号在时间轴上的任何一个突变。但小波分析能同时在时、频域内对信号进行分析,所以它能有效地区分信号中的突变部分和噪声,从而实现对非平衡信号的去噪。
下面再来分析一个实例,考察小波分析对非平稳信号的去噪作用。
【例 10.5】产生一个含噪声的矩形波信号,请分别用小波分析和傅立叶分析实行信号噪声的去除。MATLAB代码设置如下:
clc;clear;
%设置信噪比
snr=4;
init=20111;     %设置随机数初值
%产生原始信号和含白色噪声信号
[xrefs,s]=wnoise(1,11,snr,init);
xref=xrefs(1:2000);
x=s(1:2000);
%用小波进行三层分解
xd=wden(x,'heursure','s','one',3,'sym4');  %进行去噪处理
figure(1);
plot(xref);
title('原始信号')
%利用FFT进行去噪
xxref=fft(xref);     %对原始信号进行FFT变换
xxref=abs(xxref);
xx=fft(x);     %对含噪声信号进行FFT变换
absxx=abs(xx);
结果如图10-4所示。
%画频谱图
figure(2)
subplot(211);
plot(xxref);
title('原始信号的谱图')
subplot(212)
plot(absxx);
title('含噪信号的谱图')
%进行低通滤波
indd2=200:1200;
xx(indd2)=zeros(size(indd2));
xden=ifft(xx);     %进行FFT反变换
xden=real(xden);    %提取实数部分
xden=abs(xden);
结果如图10-5所示。
figure(3);
subplot(211)
plot(xd)
title('小波去噪后的信号');
subplot(212)
plot(xden);
title('用傅立叶分析去噪')
图10-4 原始信号
图10-5 FFT变换后的频谱图
结果如图10-6所示。
图10-6 两种去噪声法对比
注:从图10-6中明显看出,小波去噪的效果要明显强于用傅立叶分析方法去噪的效果。
10.2.4 小波包分析进行信号去噪
在前面的章节中已经详细介绍了小波包分析,其信号去噪的思想和在小波分析中基本相同。不同之处在于:小波包提供了一种更为复杂、更为灵活的分析手段,因为小波包分析对上一层的低频部分和高频部分同时实行分解,具有更加精确的局部分析能力。
对信号进行小波包分解时,可以采用多种小波包基,通常根据分析信号要求从中选择最好的一种小波包基,即最优基。最优基的选择标准是熵标准。在MATLAB的小波工具箱中可通过besttree函数进行最优基的选择。
应用小波包分析对信号进行去噪处理是一个最基本的功能。小波包阈值去噪过程主要分为4个步骤,如下。
(1)信号的小波包分解。选择一种小波包基并确定所需分解的层次,然后对信号进行小波包分解。
(2)最优小波包基的选择。
(3)小波包分解系数的阈值化。对于每一个小波包分解系数,选择一个恰当的阈值对小波包分解后的系数进行阈值量化处理。
(4)信号的小波包重构。对低频系数和经过处理后的高频系数进行小波包重构。
利用小波包进行去噪首先要选取小波包基和分解的层数。对称性好的小波不产生相位畸变,正则性好的小波易于获得光滑的重构信号。
【例10.6】利用小波包分析对一个给定的染噪信号进行去噪处理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

___Y1

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

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

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

打赏作者

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

抵扣说明:

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

余额充值