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

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

其中最关键的是阈值函数的选取和阈值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);

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

  • 3
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 jQuery 的事件,我可以和你分享一些学习笔记。 1. 绑定事件 在 jQuery 中,我们可以通过以下方式来绑定事件: ``` $(selector).event(function(){ // 事件处理程序 }) ``` 其中,`selector` 表示要绑定事件的元素,`event` 表示要绑定的事件类型,比如 `click`、`mouseover` 等等。事件处理程序则是在事件触发时要执行的代码块。 2. 多个事件绑定 我们可以通过 `on()` 方来同时绑定多个事件: ``` $(selector).on({ event1: function(){ // 事件处理程序1 }, event2: function(){ // 事件处理程序2 } }) ``` 这样,当 `event1` 或 `event2` 中任意一个事件触发时,对应的处理程序都会被执行。 3. 解除事件 如果需要解除某个元素的事件处理程序,可以使用 `off()` 方: ``` $(selector).off(event); ``` 其中,`event` 表示要解除的事件类型。如果不指定事件类型,则会解除该元素上所有的事件处理程序。 4. 事件委托 在 jQuery 中,我们可以使用事件委托来提高性能。事件委托是指将事件绑定到父元素上,而不是绑定到子元素上,然后通过事件冒泡来判断是哪个子元素触发了该事件。这样,当子元素数量较多时,只需要绑定一次事件,就可以监听到所有子元素的事件。 ``` $(selector).on(event, childSelector, function(){ // 事件处理程序 }) ``` 其中,`selector` 表示父元素,`event` 表示要绑定的事件类型,`childSelector` 表示要委托的子元素的选择器,事件处理程序则是在子元素触发事件时要执行的代码块。 以上是 jQuery 中事件的一些基本操作,希望对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值