matlab 小波启发式阈值滤波,小波阈值去噪
小波阈值去噪
小波阈值去噪
目录
1.概念
2.原理
3.影响降噪效果的因素
3.1小波基的选择
3.2分解层数的选择
3.3阈值的选择
3.4阈值函数的选择
4.MATLAB代码
参考文献
小波分析即用Mallat塔式算法对信号进行降阶分解。该算法在每尺度下将信号分解成近似分量与细节分量。近似分量表示信号的高尺度,即低频信息;细节分量表示信号的低尺度,即高频信息。
对含有噪声的信号,噪声分量的主要能量集中在小波分解的细节分量中。
2.原理
小波阈值去噪的实质为抑制信号中无用部分、增强有用部分的过程。小波阈值去噪过程为:(1)分解过程,即选定一种小波对信号进行n层小波分解;(2)阈值处理过程,即对分解的各层系数进行阈值处理,获得估计小波系数;(3)重构过程,据去噪后的小波系数进行小波重构,获得去噪后的信号。
小波阈值去噪过程
小波分解重构过程
小波分解:X->ca3,cd3,cd2,cd1;小波重构:ca3,cd3,cd2,cd1->X。其中ca为低频信息、近似分量,cd为高频、细节分量。
3.影响降噪效果的因素
3.1小波基的选择
在对信号进行小波分解时需要选择合适的小波基,由于没有任何一种小波基可以对不同类型的信号达到最优的分解效果,因此,如何选择小波基成为小波分解的一个重点。针对现实中的信号,小波基的选择一般要考虑以下几个因素:支撑长度、对称性、消失矩、正则性、相似性。针对一维信号,例如语音信号,通常选择dB小波和sym小波。
3.2分解层数的选择
在对信号进行小波分解时,分解的层数取得越大,则噪声和信号表现的不同特性越明显,越有利于二者的分离,但是分解的层数越大,经过重构的信号失真也会越大,在一定程度上会对信号去噪的效果产生较差的影响。因此,如何选择分解层数以解决信噪分离效果和重构信号失真之间的矛盾呢?
小波分解的频段范围与采样频率有关。若进行N层分解,则各个频段范围为:
假设原始信号X的采样频率为1000Hz,则信号的最大频率为500,对该信号做3层小波分解,则各个频段范围如下图所示。
3.3阈值的选择
在小波域,有效信号对应的系数很大,而噪声对应的系数很小并且仍满足高斯分布。因此可以通过设定阈值将信号在小波域某段区间内的系数置零,就能最大程度的抑制噪声,同时只是稍微损伤有效信号。
阈值选择规则基于模型
,
是高斯白噪声。
目前常见的阈值选择方法有:无偏风险估计阈值、极大极小阈值、固定阈值、启发式阈值。
MATLAB自带的自适应阈值选择函数,调用格式如下:
thr=thselect(X,str);
根据字符串str定义的阈值选择方法求信号X的自适应阈值thr。
str= 'rigrsure':无偏风险估计阈值;
str= 'minimaxi':极大极小阈值;
str= 'sqtwolog':固定阈值;
str= 'heursure':启发式阈值。
一般来讲,极大极小阈值和无偏风险估计阈值比较保守,当噪声在信号的高频段分布较少时,这两种阈值估计方法效果较好,可以将微弱的信号提取出来。而固定阈值和启发式阈值去噪比较彻底,在去噪时显得更为有效,但是也容易把有用的信号误认为噪声去掉。
3.4阈值函数的选择
在确定了高斯白噪声在小波域的阈值门限之后,就需要有个阈值函数对含有噪声系数的小波系数进行过滤,去除高斯噪声系数,常用的阈值函数有硬阈值函数和软阈值函数。
3.4.1硬阈值函数
当小波系数的绝对值大于给定阈值时,小波系数不变;小于阈值时,小波系数置零。
3.4.2软阈值函数
当小波系数的绝对值大于给定阈值时,令小波系数减去阈值;小于阈值时,小波系数置零。
MATLAB自带的阈值处理函数,调用格式如下:
Y=wthresh(X,SORH,thr);
返回输入向量或矩阵X经过软阈值(SORH=’s’)或硬阈值(SORH=’h’)处理后的信号Y,thr是阈值。
4.MATLAB代码
%% 基于小波变换的阈值去噪
clc;
clear;
close all;
tic;
%% 用db8小波对含噪信号进行5层分解并提取系数
[c,l]=wavedec(y,5,'db8'); % y为含噪信号
%取第5层低频近似系数
ca5=appcoef(c,l,'db8',5);
%取各层高频细节系数
cd5=detcoef(c,l,5);
cd4=detcoef(c,l,4);
cd3=detcoef(c,l,3);
cd2=detcoef(c,l,2);
cd1=detcoef(c,l,1);
%% 阈值获取
% [thr,sorh,keepapp]=ddencmp('den','wv',y); % 函数ddencmp用于获取信号在消噪或压缩过程中的默认阈值
thr=thselect(y,'rigrsure'); % 自适应阈值选择使用Stein的无偏风险估计原理
% thr=thselect(y,'heursure'); % 使用启发式阈值选择
% thr=thselect(y,'sqtwolog'); % 阈值等于sqrt(2*log(length(X)))
% thr=thselect(y,'minimaxi'); % 用极大极小原理选择阈值
%% 进行硬阈值处理
yhard5=wthresh(cd5,'h',thr);
yhard4=wthresh(cd4,'h',thr);
yhard3=wthresh(cd3,'h',thr);
yhard2=wthresh(cd2,'h',thr);
yhard1=wthresh(cd1,'h',thr);
c1=[ca5;yhard5;yhard4;yhard3;yhard2;yhard1];
y1=waverec(c1,l,'db8');
%% 进行软阈值处理
ysoft5=wthresh(cd5,'s',thr);
ysoft4=wthresh(cd4,'s',thr);
ysoft3=wthresh(cd3,'s',thr);
ysoft2=wthresh(cd2,'s',thr);
ysoft1=wthresh(cd1,'s',thr);
c2=[ca5;ysoft5;ysoft4;ysoft3;ysoft2;ysoft1];
y2=waverec(c2,l,'db8');
%% 对上述信号进行图示
figure(1);
plot(y);title('含噪信号');
axis tight;
figure(2);
plot(y1);title('硬阈值处理'); %降噪信号时域图
axis tight;
figure(3);
plot(y2);title('软阈值处理'); %降噪信号时域图
axis tight;
fs=50;N=4000; % 采样频率为50MHz,采样点数为4000
figure(4);
[f1(:,1),A1(:,1)]=PinPu(y1,fs,N);
plot(f1(:,1),A1(:,1));
title('硬阈值处理');legend('D denoise Signal'); %降噪信号频谱图
axis tight;
figure(5);
[f2(:,1),A2(:,1)]=PinPu(y2,fs,N);
plot(f2(:,1),A2(:,1));
title('软阈值处理');legend('D denoise Signal'); %降噪信号频谱图
axis tight;
toc;
参考文献
[1]司莉,毕贵红,魏永刚等.基于RQA与SVM的声发射信号检测识别方法[J].振动与冲击,2016,35(2):98.
[2]有关小波的几个术语及常见的小波基介绍
[3]小波变换和小波阈值法去噪
[4]基于MATLAB的小波阈值去噪
小波阈值去噪相关教程
Halcon阈值算子 -- 局部阈值之var_threshold
Halcon阈值算子 -- 局部阈值之var_threshold Halcon阈值算子 – 局部阈值之var_threshold 与local_threshold类似,var_threshold也是基于局部均值和方差。只不过计算公式不一样。 算子的函数签名如下: var_threshold(Image : Region : MaskWidth, MaskHeight
基于阈值的图像二值化方法
基于阈值的图像二值化方法 1.以经验值128作为阈值分割 2.手动调试,寻找更好的阈值 3.自动选择合适的阈值方法 首先选取灰度值128为阈值,使用固定阈值的二值化处理,观察分割效果。得出两组由灰度值小于128和大于等于128 的像素组成的像素群,做出两组像素群
Halcon阈值算子 -- 局部阈值之local_threshold
Halcon阈值算子 -- 局部阈值之local_threshold Halcon阈值算子 – 局部阈值之local_threshold 按照官方文档介绍,本算子适合文本二值化(This algorithm is a text binarization technique and provides good results for document images)。 算子的函数签名
OpenCV-Python官方教程-32-计算摄影学图像去噪
OpenCV-Python官方教程-32-计算摄影学图像去噪 学习使用非局部平均值去噪算法去除图像中的噪音 学习函数 cv2.fastNlMeansDenoising(),cv2.fastNlMeansDenoisingColored()等 我们已经学习了很多图像平滑技术,比如高斯平滑,中值平滑等,当噪声比较小时这些技
2020-10-19 可视化HSV色彩空间阈值编辑器
2020-10-19 可视化HSV色彩空间阈值编辑器 cv2.inRange(dst, hsv_low, hsv_high): 第一个参数:dst指的是原图 第二个参数:low_hsv指的是图像中低于这个low_hsv的值,图像值变为0(黑色) 第三个参数:high_hsv指的是图像中高于这个high_hsv的值,图像值变为0
JAVA程序设计:带阈值的图连通性(LeetCode:5128)
JAVA程序设计:带阈值的图连通性(LeetCode:5128) 有 n 座城市,编号从 1 到 n 。编号为 x 和 y 的两座城市直接连通的前提是: x 和 y 的公因数中,至少有一个 严格大于 某个阈值 threshold 。更正式地说,如果存在整数 z ,且满足以下所有条件,则编号 x
数字图像处理-DFTDCTWHT小波变换分解重构(Matlab)
数字图像处理-DFTDCTWHT小波变换分解重构(Matlab) 文章目录 数字图像处理-DFTDCTWHT小波变换分解重构(Matlab) 基本的matlab图像处理函数的使用 代码块 运行效果 傅里叶变换(DFT) 对图像进行傅里叶正变换 去除部分高频分量后对图像进行傅里叶逆变换 离散余弦变
图像处理与小波变换-Python实现
图像处理与小波变换-Python实现 关于小波变换的理论知识,可以查看我的另一篇文章→小波变换入门 本文主要介绍小波变换在图像分解中的应用及其Python实现。 按照滤波组理论,图像的二维离散小波分解和重构过程如下图所示,分解过程可描述为:首先对图像的每一
matlab 小波启发式阈值滤波,小波阈值去噪相关推荐
- 图像降噪算法——小波硬阈值滤波(下)
图像降噪算法--小波硬阈值滤波(下) 图像降噪算法--小波硬阈值滤波(下) 1. 基本原理 2. C++代码实现 3. 结论 图像降噪算法--小波硬阈值滤波(下) 1. 基本原理 关于离散小波变换的原 ...
- 图像降噪算法——小波硬阈值滤波(上)
图像降噪算法--小波硬阈值滤波(上) 图像降噪算法--小波硬阈值滤波(上) 1. 多分辨率展开 2. 尺度函数 3. 小波函数 4. 小波级数展开 5. 离散小波变换 6. 快速小波变换 7. 图像小 ...
- 小波阈值滤波和VMD分解的对比输入一段语音信号,加入不同信噪比的噪声,单独使用小波阈滤波
小波阈值滤波和VMD分解的对比输入一段语音信号,加入不同信噪比的噪声,单独使用小波阈滤波,以及变分模态分解,VMD分解加小波阈值进行滤波,最后比较得到的信号的信噪比. 会给出分解的结果图,以及频谱. ...
- 【Matlab系列】一维信号/数字图像小波阈值去噪(软阈值,硬阈值,固定阈值)【含Matlab源码】
Date: 2022.4.23 文章目录 前言 0.代码获取方式 1.部分matlab代码 2.一维信号小波阈值去噪效果图 3.数字图像小波阈值去噪效果图 3.1.添加高斯噪声 3.2.添加随机噪声 ...
- 小波包matlab,小波分析(第三讲)小波包二代小波Matlab工具使用
<小波分析(第三讲)小波包二代小波Matlab工具使用>由会员分享,可在线阅读,更多相关<小波分析(第三讲)小波包二代小波Matlab工具使用(82页珍藏版)>请在人人文库网上 ...
- 【图像去噪】基于matlab GUI butterworth+中值+维纳+小波图像去噪【含Matlab源码 520期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像去噪]基于matlab GUI butterworth+中值+维纳+小波图像去噪[含Matlab源码 520期] 获取代码方式2: ...
- 舰船辐射噪声 matlab,基于MATLAB的舰船辐射噪声信号小波消噪处理
基于MATLAB的舰船辐射噪声信号小波消噪处理 针对舰船辐射噪声信号的特点提出了小波消噪的方法,对小波消噪理论作了简要的阐述,并设计了一种消噪方案,最后利用MATLAB,在计算机 (本文共4页) 阅读 ...
- 单片机c语言小波阈值降噪,小波阈值去噪的基本原理_小波去噪阈值如何选取
小波阈值去噪的基本原理 小波阈值去噪的基本思想是先设置一个临界阈值λ,若小波系数小于λ,认为该系数主要由噪声引起,去除这部分系数;若小波系数大于λ,则认为此系数主要是由信号引起,保留这部分系数,然后对 ...
- Matlab绘制小波尺度函数和小波函数
%小波尺度函数和小波函数 clear,clc,close all; figure,[phi1,psi1,xval1] = wavefun('haar',8,'plot'); figure,[psi2, ...
最新文章
- 说实话,DataGrip真得牛逼,只是你不会用而已~
- 2021年春季学期-信号与系统-第十三次作业参考答案-第七小题
- 网络推广营销之网站优化选择优质友情链接的标准
- Shell环境变量以及set,env,export的区别
- jQuery Ajax 如何设置Timeout
- lazarus开发android应用程序指南,Lazarus开发Android应用程序指南(2)
- Visual Studio 2013 详细安装教程(安装+注册)
- python程序—名片管理系统
- Android View.onMeasure方法的理解
- 我没有机器学习的学位,却拿到了 DeepMind 研究工程师的 Offer
- 如何构建高效可信的持续交付能力,华为云有绝活!
- 什么是埋点?我们为什么需要埋点?(原作者:知乎 原志Growing)
- java -jar 执行jar包出现 java.lang.NoClassDefFoundError
- 笔记本和linux台式共享网络,怎么把笔记本的网络共享给台式电脑
- 学习笔记:Recyclerview、SwipeRefreshLayout、Cardview的使用
- Android 腾讯手机管家 报毒 a.gray.PiggyGoldcoin.a
- 腾讯云物联网-网关设备体验
- 看你骨骼惊奇,这里有一套 Canvas 粒子动画方案了解一下?
- Oracle 9i与MS SQL Server 2000之比较连载五.zz
- 国内最具影响力科技创投媒体36Kr的容器化之路
热门文章
- ocs 2007 r2 服务体验
- oracle增量脚本(记录)创建触发器监控对一张表的增删改
- php代码审计小技巧
- 从Client应用场景介绍IdentityServer4(二)
- .Net Intelligencia.UrlRewriter 重定向参数中文支持配置方法
- 05-树9 Huffman Codes (30 分)
- oracle常用小知识点
- Redis集群环境之linux搭建多机版---已完结,跟着一步一步来你就可以集群成功
- python模块之random模块
- PLC-PC communication with C#: a quick resume about data exchange libraries