发布时间: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);
与软阈值函数相比,硬阈值函数去噪信号更接近原始信号。