小波调研(三):小波阈值去噪分析

小波阈值去噪分析

数据挖掘流程

传统的去噪方法根据噪声能量一般集中于高频,而信号频谱分布于一个有限区间的特点,用傅里叶变换将含噪信号变换到频域,然后采用低通滤波器进行滤波。但基于傅里叶变换的去噪方法不能将有用信号的高频部分和由噪声引起的高频干扰加以有效地区分,存在着保护信号局部性和抑制噪声之间的矛盾。而小波变换可以很好的保存信号的尖峰和局部突出部分。小波去噪的发展可以归纳为三种方法:

(1)Mallat提出的小波系数模极大值去噪法

(2)徐长发等人提出的基于小波系数的空域相关性去噪算法

(3)Donoho与Johnstone提出的小波阈值收缩去噪法。

由于小波阈值法是其它两种方法的发展,具有一定的优势性。因而在此选择应用广泛的小波阈值去噪分析。

算法原理

小波阈值去噪原理

小波阈值去噪的基本思想是将信号通过Mallat算法处理过的小波变换后,选择产生的小波系数。因为信号经小波分解后小波系数较大,噪声的小波系数较小,并且噪声的小波系数要小于信号的小波系数。通过选取一个合适的阈值,大于阈值的小波系数被认为是有信号产生的,应予以保留,小于阀值的则认为是噪声产生的,置为零从而达到去噪的目的。

1.1.2 小波阈值收缩法

小波阈值收缩法的基本步骤为:

(1)分解:选定一种层数为N的小波对信号进行小波分解。

(2)阈值处理过程:分解后通过选取一个的阈值,用阈值函数对各层系数进行量化。

(3)重构:用处理后的系数重构信号。

其中分解和重构均为一般的小波变换,这里不具体分析,这里主要分析阈值处理过程。

小波阈值函数的选取

小波分解阈值去噪中,阈值函数体现了对超过和低于阈值的小波系数不同处理策略,是阈值去噪中关键的一步。设w表示小波系数,T为给定阈值,sign(*)为符号函数,常见的阈值函数有:

硬阈值函数:小波系数的绝对值低于阈值的置零,高于的保留不变,见下左图

小波调研(三):小波阈值去噪分析

 

软阈值函数:小波系数的绝对值低于阈值的置零,高于的系数shrinkage处理,见下右图

小波调研(三):小波阈值去噪分析

小波调研(三):小波阈值去噪分析

 

硬阈值法获得的重构信号具有更好的逼近性,但有附加振荡。软阈值获得的重构信号具有更好的光滑性,但误差相对较大。

小波阈值的确定

去噪选取的阈值最好刚好大于噪声的最大水平,可以证明的是噪声的最大限度以非常高的概率低于小波调研(三):小波阈值去噪分析(此阈值是Donoho提出的),其中根号右边的这个参数(叫做sigma)就是估计出来的噪声标准偏差(根据第一级分解出的小波细节系数,即整个det1绝对值系数中间位置的值)。

Matlab的算法实现

Matlab调用的基本方式

 

在Matlab中,一维小波阈值去噪主要使用以下常用命令:

wnoisest函数 估计一维小波高频系数中的噪声偏差

wavedec函数 一维信号的多尺度分解

waverec函数 一维信号小波分解系数的重构

wdencmp函数 用于对一维或二维信号的压缩或者去噪

gbl(global的缩写)表示每层都采用同一个阈值进行处理,

lvd表示每层用不同的阈值进行处理,

N表示小波分解的层数,

THR为阈值向量,

对于格式(2)(3)每层都要求有一个阈值,因此阈值向量THR的长度为N,

SORH表示选择软阈值还是硬阈值(分别取为`s`和`h`),

参数KEEPAPP取值为1时,则低频系数不进行阈值量化处理,反之,则低频系数进行阈值量化。

XC是消噪或压缩后的信号,[CXC,LXC]是XC的小波分解结构,

PERF0和PERFL2是恢复和压缩L^2的范数百分比, 是用百分制表明降噪或压缩所保留的能量成分。

1.2.2Matlab脚本使用实例

以下是一维小波阈值去噪的具体过程和结果(完全分解图)

小波调研(三):小波阈值去噪分析

小波调研(三):小波阈值去噪分析

 

Matlab小波工具箱使用实例

选择App中Multiple 1-D中的Multivariate Denoising里面的Demo。

小波调研(三):小波阈值去噪分析

 


 

写在最后:这是我之前做的一些技术初步调研,主要目的是了解和展示一些技术,并进行了一些个人总结,其中必然有疏漏。其中引用了不少论文,百科和他人博客,但因为时间太久大都忘了出处,如果侵权提示后删除