小波学习笔记——阈值去噪法

发布时间:2023-03-02 09:00

阈值去噪法是指首先对含噪信号进行小波分解,对小波系数进行阈值处理,即对于大于(或小于)某阈值的小波系数进行处理,再利用处理后的结构重构原信号。

其中最关键的是阈值函数的选取和阈值T的估计

有三种方法:

法一:小波变换后,在小尺度上具有较高的中心频率,因此小尺度的变换值集中反映了信号高频部分的能量,基于此来估计噪声方差。

法二:用前两个尺度的小波系数相乘得到修正的小波系数,进而估计噪声方差。

法三:图像中噪声方差的估计,平坦的地方进行统计噪声方差。噪声的模拟,可以采用高斯噪声,或者均匀噪声、椒盐噪声等其他噪声。

阈值函数的选取:

1.硬阈值函数

2.软阈值函数

缺点:硬阈值在T点时,函数不连续,用该函数重构信号时会产生震荡;软阈值函数虽然连续性好,但是存在恒定偏差,直接影响重构信号的性质。

3.由软、硬阈值折中法构造

阈值的估计:

1.通用阈值

2.分级阈值

3.Sure阈值

4.GCV阈值

5.Bayes Shrink阈值

MATLAB阈值去噪命令:

一维信号去噪函数[XD,CXD,LXD]=WDEN(X,TPTR,SORH,SCAL,N,\'wname\')
%输入参数:X为原始带噪信号。TPTR为阈值选择准则的字符串:‘rigrsure\'用Stein\'s无偏估计的原理进行的自适应阈值;\'heursure\'是启发式方法;\'sqtwolog\'通用阈值方法,阈值为sqrt(2lnN);\'minimaxi\'最大最小阈值法
%SORH选择\'s\'为软阈值函数,选择\'h\'为硬阈值函数
%SCAL定义多种方法的阈值重新调节:\'one\'表示没有重新调节;\'sln\'表示基于第一层系数进行噪声估计来重新调节;\'mln\'层层独立进行噪声估计来重新调节。
%N为小波分解层数
%‘wname’为小波函数

图像阈值去噪法的MATLAB命令:

默认的自适应阈值获取命令DDENCMP,该命令可用于默认的阈值去噪和压缩中

[THR,SORH,KEEPAPP,CRIT]=DDENCMP(IN1,IN2,X)

输入参数:IN1可以选择\'den\'(去噪)或者\'cmp\'(压缩);

                  IN2为\'wv\'(单小波)或者\'wp\'(小波包);

                  X为输入信号,可以是一维信号,也可以是二维的图像。

返回值:THR为阈值;SORH为软阈值或硬阈值;KEEPAPP为允许的逼近系数;CRIT为熵的名字

与默认的自适应选取的去噪阈值命令对应的去噪命令为WDENCMP,该命令也可以用于压缩中

[XC,CXC,LXC,PERF0,PERFL2]=WDENCMP(IN1,X,\'wname\',N,THR,SORH,KEEPAPP)

输入参数:IN1可以选择\'gbl\'(全局阈值)或者\'lvd\'(分层阈值);

                  X为输入信号,可以是一维信号,也可以是二维的图像;

                  N为分解层数;

                  THR为阈值;

                   SORH为软阈值或者硬阈值;

                    KEEPAPP为是否压缩低频逼近系数,等于1时不压缩,否则进行压缩

返回值:XC为去噪后的信号;[CXC,LXC]为XC去噪后的结构;PERFL2和PERF0为L2模下重构压缩的百分比

clc,clear all
close all;
load sumsin;
f=[sumsin zeros(1,24)];
lev=4;
n=5;
wf=\'db3\';
%软硬阈值去噪
%一维信号去噪函数[XD,CXD,LXD]=WDEN(X,TPTR,SORH,SCAL,N,\'wname\')
%输入参数:X为原始带噪信号。TPTR为阈值选择准则的字符串:‘rigrsure\'用Stein\'s无偏估计的原理进行的自适应阈值;\'heursure\'是启发式方法;\'sqtwolog\'通用阈值方法,阈值为sqrt(2lnN);\'minimaxi\'最大最小阈值法
%SORH选择\'s\'为软阈值函数,选择\'h\'为硬阈值函数
%SCAL定义多种方法的阈值重新调节:\'one\'表示没有重新调节;\'sln\'表示基于第一层系数进行噪声估计来重新调节;\'mln\'层层独立进行噪声估计来重新调节。
%N为小波分解层数
%‘wname’为小波函数
s_s=wden(f,\'heursure\',\'s\',\'one\',lev,wf);
s_h=wden(f,\'heursure\',\'h\',\'one\',lev,wf);
figure,
plot(s_s);grid on;
xlabel(\'t\'),ylabel(\'s_s(t)\');
figure,
plot(s_h);grid on;
xlabel(\'t\'),ylabel(\'s_h(t)\');
P1=psnr(f,s_s);
P2=psnr(f,s_h);
m1=mse(f,s_s);
m2=mse(f,s_h);

与软阈值函数相比,硬阈值函数去噪信号更接近原始信号。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号