1、小波阈值处理基本理论
所谓阈值去噪简而言之就是对信号进行分解,然后对分解后的系数进行阈值处理,最后重构得到去噪信号。该算法其主要理论依据是:小波变换具有很强的去数据相关性,它能够使信号的能量在小波域集中在一些大的小波系数中;而噪声的能量却分布于整个小波域内。因此,经小波分解后,信号的小波系数幅值要大于噪声的系数幅值。可以认为,幅值比较大的小波系数一般以信号为主,而幅值比较小的系数在很大程度上是噪声。于是,采用阈值的办法可以把信号系数保留,而使大部分噪声系数减小至零。小波阈值收缩法去噪的具体处理过程为:将含噪信号在各尺度上进行小波分解,设定一个阈值,幅值低于该阈值的小波系数置为0,高于该阈值的小波系数或者完全保留,或者做相应的“收缩(shrinkage)”处理。最后将处理后获得的小波系数用逆小波变换进行重构,得到去噪后的信号。
2、阈值函数的选取
小波分解阈值去噪中,阈值函数体现了对超过和低于阈值的小波系数不同处理策略,是阈值去噪中关键的一步。设w表示小波系数,t为给定阈值,sign(*)为符号函数,常见的阈值函数有:
硬阈值函数:(小波系数的绝对值低于阈值的置零,高于的保留不变)
软阈值函数:(小波系数的绝对值低于阈值的置零,高于的系数shrinkage处理)
式(3-8)和式(3-9)用图像表示即为:
值得注意的是:
1)硬阈值函数在阈值点是不连续的,在下图中已经用黑线标出。不连续会带来振铃,伪吉布斯效应等。
2)软阈值函数,原系数和分解得到的小波系数总存在着恒定的偏差,这将影响重构的精度
同时这两种函数不能表达出分解后系数的能量分布,半阈值函数是一种简单而经典的改进方案。见下图:
3、阈值的确定
选取的阈值最好刚好大于噪声的最大水平,可以证明的是噪声的最大限度以非常高的概率低于(此阈值是donoho提出的),其中根号右边的这个参数(叫做sigma)就是估计出来的噪声标准偏差(根据第一级分解出的小波细节系数,即整个det1绝对值系数中间位置的值),本文将用此阈值去处理各尺度上的细节系数,注意所谓全局阈值就是近似系数不做任何阈值处理外,其他均阈值处理。
4、阈值策略
5、一维信号的多级分解与重构
以下算法如果用简单的文字描述,可是:先将信号对称拓延(matlab的默认方式),然后再分别与低通分解滤波器和高通分解滤波器卷积,最后下采样,最后可以看出最终卷积采样的长度为floor(n-1)/2+n,如果想继续分解下去则继续对低频系数ca采取同样的方式进行分解。
6、matlab实现一维小波阈值去噪
1,核心库函数说明
1)wnoisest函数
作用:估计一维小波高频系数中的噪声偏差
这个估计值使用的是绝对值中间位置的值(估计的噪声偏差值)除以0.6745(medianabsolutedeviation/0.6745),适合0均值的高斯白噪声
2)wavedec函数
一维信号的多尺度分解,将返回诸多细节系数和每个系数的长度,在matlab中键入“docwavedec”具体功能一目了然
3)waverec函数
一维信号小波分解系数的重构,将返回重构后的信号在matlab中键入“docwaverec”具体功能一目了然,也可以键入“openwaverec”查看matlab具体是怎么做的。
4)wdencmp函数
这个函数用于对一维或二维信号的压缩或者去噪,使用方法:
1[xc,cxc,lxc,perf0,perfl2]=wdencmp(‘gbl’,x,‘wname’,n,thr,sorh,keepapp)
2[xc,cxc,lxc,perf0,perfl2]=wdencmp(‘lvd’,x,‘wname’,n,thr,sorh)
3[xc,cxc,lxc,perf0,perfl2]=wdencmp(‘lvd’,c,l,‘wname’,n,thr,sorh)
wname是所用的小波函数,gbl(global的缩写)表示每层都采用同一个阈值进行处理,lvd表示每层用不同的阈值进行处理,n表示小波分解的层数,thr为阈值向量,对于格式(2)(3)每层都要求有一个阈值,因此阈值向量thr的长度为n,sorh表示选择软阈值还是硬阈值(分别取为’s’和’h’),参数keepapp取值为1时,则低频系数不进行阈值量化处理,反之,则低频系数进行阈值量化。xc是消噪或压缩后的信号,[cxc,lxc]是xc的小波分解结构,perf0和perfl2是恢复和压缩l^2的范数百分比,是用百分制表明降噪或压缩所保留的能量成分。
3.代码实现
clear;
%获取噪声信号
loadleleccum;
indx=1:3450;
noisez=leleccum(indx);
%信号的分解
wname=‘db3’;
lev=3;
[c,l]=wavedec(noisez,lev,wname);
%求取阈值
sigma=wnoisest(c,l,1);%使用库函数wnoisest提取第一层的细节系数来估算噪声的标准偏差
n=numel(noisez);%整个信号的长度
thr=sigma*sqrt(2*log(n));%最终阈值
%全局阈值处理
keepapp=1;%近似系数不作处理
denoisexs=wdencmp(‘gbl’,c,l,wname,lev,thr,‘s’,keepapp);
denoisexh=wdencmp(‘gbl’,c,l,wname,lev,thr,‘h’,keepapp);
%作图
subplot(311),
plot(noisez),title(‘原始噪声信号’);
subplot(312),
plot(denoisexs),title(‘matlab软阈值去噪信号’);
subplot(313),
plot(denoisexh),title(‘matlab硬阈值去噪信号’);
西门子S7 1214C PLC的ModbusRTU通讯实例分析
根治iPod瑕疵,iPod fans的高招
台积电资本支出不下调 3nm明年开始试产
华硕发布新变形笔记本:平板笔记本二合一 触摸屏+触控笔
空气开关为什么会烧坏及维修方法
一维信号小波阈值去噪
小米4S手机拆解 做工及用料如何
80C51单片机实现专用寄存器位寻址的设计方案
AI大模型竞争白热化,算力优化才是“超车点”?
王思聪的“百万电脑”也迷信“AMD YES”?英特尔与AMD高端之争愈演愈烈
第七代小冰能做什么?
区块链泡沫是否合理 瑞波币火箭般蹿升一年443倍 人人网股价飙涨47.39%
区块链硬币或代币的想法可能是一个新的概念
华为实现14nm以上工艺的EDA工具
10.23|豪力士智能锁新品亮相上海世界五金大会,央视助阵,盛况空前
我国AI领域全球最具影响力机构前100有哪些机构?
特斯拉二季度营收同比增长41.6% 电池短缺造成巨大损失
双目立体匹配的四个步骤解析
PIC单片机对机器人的控制程序设计
给植物纹上“传感器纹身”,可随时测量农作物的用水量