Part1-Introduction To The Wavelet Transform(简介)

1、Origin of the wavelet transform:
The theories of Wavelet originate from diffierent areas of study:

  • Engineering

  • Time-frequency analysis and Multiresolution Analysis

  • Computer Vision

  • Pyramidal algorithm

  • Physics

  • Pure Mathematics

2、Multiresolution Analysis(MRA-多分辨率分析与处理)

  • Multiresolution analysis is about analyzing a signal based on the information appeared in different scales of such signal – to mimic human beings in analyzing signals.

  • A signal of a certain “scale” refers to its best approximation at a certain resolution

  • By “traveling” from the coarse scales toward the fine scales, one zooms in and arrives at a more exact representation of the given signal

    3、The Discrete Wavelet Transform(离散小波变换)
    A simple way to implement MAR is by using the Discrete Wavelet Transform(DWT):

    The definition of wavelet transform shows that the wavelet analysis is a measure of similarity the basis functions(wavelets) and the original function .The coefficients ,named H0 for Low Pass Filter, and H1 for High Pass Filter, caculated indicate how close the function is to the danghter wavelet at that particular scale.

Part2-Decomposition(DWT) and Reconstruction(Inverse DWT)–离散小波分解与重构

对于离散小波变换,由于很多小波函数不是正交函数,因此需要一个尺度系数(Scaling Coefficients)和一个小波系数(Wavelet Coefficients).因此,原信号函数可以分解成尺度函数(系数)和小波函数(系数)的线性组合,在这个函数中,尺度函数产生低频部分小波函数产生高频部分

1、一维Haar小波变换-分解

离散的信号经过Haar小波变换时,首先会将这个信号所携带的信息进行压缩,得到N/2个数据点进行存储,那么这些点信息就是由这些Scaling Coefficients-尺度系数来表征的。对于离散信号而言,其可能具有高频和低频成分,而小波系数或细节系数代表它的高频部分。

小波中的下采样就是对信号进行隔点采样,目的就是为了将信息进行压缩存储。
小波中的上采样就是隔点插零,目的是为了重构信号。

而对信号的滤波过程,在数学上等效为信号与滤波器冲激响应的卷积。

分解LP 滤波器(离散卷积算子):

分解HP滤波器(离散卷积算子):

离散时间卷积定理:

“离散卷积”是两个离散序列x(n) 和h(n) 之间按照一定的规则将它们的有关序列值分别两两相乘再相加的一种特殊的运算。具体可用公式表示为:

其中 y(n)就是经过卷积运算以后所得到的一个新的序列。

在工程上离散卷积有着广泛的应用,例如,在数字图像处理领域,为了将数字信号进行滤波,可以将表示成离散序列的图像信号C(n) 与数字滤波器的冲激响应h(n) 进行离散卷积运行。

多分辨分析的小波函数Ψ(t)和尺度函数φ(t)满足双尺度的差分方程:

多分辨分析每一层分解使信号f(t)通过一低通滤波器和带通滤波器,把信号分解为低频部分和高频部分。低通滤波器的特性由小波函数Ψ(x)确定,带通滤波器的特性由尺度函数φ(x)确定。分解后的系数由两部分组成:低频系数向量c1和高频系数向量d1。低频系数向量c1由信号与低通滤波器(小波函数确定)的脉冲响应经过卷积运算得到,高频系数向量d1由信号与带通滤波器(尺度函数确定)经过卷积运算得到。

2、一维Haar小波变换–重构

逆变换过程:

3、二维Haar小波变换

二维图像信号

对于二维图像信号,可以用分别在水平和垂直方向进行滤波的方法实现二维小波多分辨率分解。图2.5为经过二维离散小波变换的分解后子图像的划分。其中:
(l)LL子带是由两个方向利用低通小波滤波器卷积后产生的小波系数,它是图像的近似表示。
(2)HL子带是在行方向利用低通小波滤波器卷积后,再用高通小波滤波器在列方向卷积而产生的小波系数,它表示图像的水平方向奇异特性。(水平子带)
(3)LH子带是在行方向利用高通小波滤波器卷积后,再用低通小波滤波器在列方向卷积而产生的小波系数,它表示图像的垂直方向奇异特性。(垂直子带)
(4)HH子带是由两个方向利用高通小波滤波器卷积后产生的小波系数,它表示图像的对角边缘特性。(对角子带)
第一个字母表示列方向的处理,第二个字母表示行方向的处理,图像的奇异特性通过低通时保留,通过高通时被滤除。

小波去噪方法也就是寻找从实际信号空间到小波函数空间的最佳映像,以便得到原信号的最佳恢复。


目前,小波去噪的方法大概可以分为三大类:

第一类方法–小波变换模极大值去噪法

利用小波变换模极大值原理去噪,即根据信号和噪声在小波变换各尺度上的不同传播特性,剔除由噪声产生的模极大值点,保留信号所对应的模极大值点,然后利用所余模极大值点重构小波系数,进而恢复信号;

第二类方法–小波系数相关性去噪法

对含噪信号作小波变换之后,计算相邻尺度间小波系数的相关性,根据相关性的大小区别小波系数的类型,从而进行取舍,然后直接重构信号;

第三类方法–小波变换阈值去造法

小波阈值去噪方法,该方法认为信号对应的小波系数包含有信号的重要信息,其幅值较大,但数目较少,而噪声对应的小波系数是一致分布的,个数较多,但幅值小。

4、小波阀值收缩去噪法:

1、 小波阀值去噪的基本思想:

Donoho提出的小波阀值去噪的基本思想是将信号通过小波变换(采用Mallat算法)后,信号产生的小波系数含有信号的重要信息,将信号经小波分解后小波系数较大,噪声的小波系数较小,并且噪声的小波系数要小于信号的小波系数,通过选取一个合适的阀值,大于阀值的小波系数被认为是有信号产生的,应予以保留,小于阀值的则认为是噪声产生的,置为零从而达到去噪的目的。其基本步骤为:
(1)分解:选定一种层数为N的小波对信号进行小波分解;
(2)阀值处理过程:分解后通过选取一合适的阀值,用阀值函数对各层系数进行量化;
(3)重构:用处理后的系数重构信号。

2、小波阀值去噪的基本问题

小波阀值去噪的基本问题包括三个方面:小波基的选择,阀值的选择,阀值函数的选择。
(1)小波基的选择:通常我们希望所选取的小波满足以下条件:正交性、高消失矩、紧支性、对称性或反对称性。但事实上具有上述性质的小波是不可能存在的,因为小波是对称或反对称的只有Haar小波,并且高消失矩与紧支性是一对矛盾,所以在应用的时候一般选取具有紧支的小波以及根据信号的特征来选取较为合适的小波。
(2)阀值的选择:直接影响去噪效果的一个重要因素就是阀值的选取,不同的阀值选取将有不同的去噪效果。目前主要有通用阀值(VisuShrink)、SureShrink阀值、Minimax阀值、BayesShrink阀值等。
(3)阀值函数的选择:阀值函数是修正小波系数的规则,不同的反之函数体现了不同的处理小波系数的策略。最常用的阀值函数有两种:一种是硬阀值函数,另一种是软阀值函数。还有一种介于软、硬阀值函数之间的Garrote函数。
另外,对于去噪效果好坏的评价,常用信号的信噪比(SNR)与估计信号同原始信号的均方根误差(MSE)来判断。

实例:基于通用阈值和SURE阈值的小波去噪方法的MATLAB实现

%
% 2d wavelet shrinkage image denoising with universal threshold
%
close all% Load image
imagefilename = 'Lena512Gray.bmp';
thewavelet = 'db4';
noise_var = 300;x = double(imread(imagefilename));
n = sqrt(noise_var)*randn(size(x));
xn = x + n;% Make sure the additive noise will not make the signal component to have
% magnitude larger than 255.
for i=1:size(x,1)for j=1:size(x,2)if (xn(i,j) > 255) xn(i,j) = 255;endend
endstd_noise = sqrt(sum(sum((xn-x).^2))/length(x)^2);figure
imagesc([x,xn]);
axis image
colormap(gray);
title('original, noisy');% 2d wavelet transform
% 1 levels decomposition with periodic extension.
dwtmode('per');
[ca1,ch1,cv1,cd1] = dwt2(x,  thewavelet);
[na1,nh1,nv1,nd1] = dwt2(xn, thewavelet);
[na2,nh2,nv2,nd2] = dwt2(na1, thewavelet);% Display
figure
imagesc([ca1,ch1;cv1,cd1]);
axis image
colormap(gray);
title('1st level decomposition with periodic extension.');
figure
imagesc([na1,nh1;nv1,nd1]);
axis image
colormap(gray);
title('1st level decomposition with periodic extension of noisy image.');% First normalize the wavelet coefficients such that the noise component
% has a variance of 1
nor_nh1 = nh1/std_noise;
nor_nv1 = nv1/std_noise;
nor_nd1 = nd1/std_noise;% Find the threshold!
disp('Universal threshold used for level 1')
thr_uni = zeros(1,3);
thr_uni(:) = sqrt(2*log(size(x,1)*size(x,2)));% Shrinkage (SURE)thr_sure = zeros(1,3);
thr_sure(1) = thselect(nor_nh1,'rigrsure');
thr_sure(2) = thselect(nor_nv1,'rigrsure');
thr_sure(3) = thselect(nor_nd1,'rigrsure');disp('SURE threshold used for level 1');% Shrinkage (universal threshold)
dnh1_uni = wthresh(nor_nh1,'s',thr_uni(1));
dnv1_uni = wthresh(nor_nv1,'s',thr_uni(2));
dnd1_uni = wthresh(nor_nd1,'s',thr_uni(3));
% Shrinkage (SURE)
dnh1_sure = wthresh(nor_nh1,'s',thr_sure(1));
dnv1_sure = wthresh(nor_nv1,'s',thr_sure(2));
dnd1_sure = wthresh(nor_nd1,'s',thr_sure(3));% Denormalize the denoised wavelet coefficients
dnh1_uni = dnh1_uni*std_noise;
dnv1_uni = dnv1_uni*std_noise;
dnd1_uni = dnd1_uni*std_noise;dnh1_sure = dnh1_sure*std_noise;
dnv1_sure = dnv1_sure*std_noise;
dnd1_sure = dnd1_sure*std_noise;% Reconstruction (universal threshold)
rx = idwt2(ca1,ch1,cv1,cd1,thewavelet,size(x));
rdnx_uni = idwt2(na1,dnh1_uni,dnv1_uni,dnd1_uni,thewavelet,size(x));% Reconstruction (SURE)
rdnx_sure = idwt2(na1,dnh1_sure,dnv1_sure,dnd1_sure,thewavelet,size(x));figure
imagesc([x,xn,rdnx_uni,rdnx_sure]);
axis image
colormap(gray);
title('original, noisy, denoised(universal), denoised(SURE)');res = sprintf('SNR of noisy image: %f dB', snr(x, xn));
res1 = sprintf('SNR of denoised image (universal threshold): %f dB', snr(x, rdnx_uni));
res2 = sprintf('SNR of denoised image (SURE): %f dB', snr(x, rdnx_sure));
disp(res);
disp(res1);
disp(res2);


Fig.1 Lena 原图


Fig .2 加入噪声之后的图像


计算各图像的SNR(信噪比)得到如下数据:
SNR of noisy image: 38.468755 dB
SNR of denoised image (universal threshold): 40.259733 dB
SNR of denoised image (SURE): 41.010018 dB

结论:小波变换在图像去噪等方面有着广泛应用,实现小波阈值收缩去噪的方法主要有通用阈值、软硬阈值、SURE阈值等。1阶SURE算法去噪较通用阈值算法去噪,SNR提高了大约1dB,去噪效果显著。

(3)小波变换原理及应用相关推荐

  1. 写给小白的小波变换原理分析

    写给小白的小波变换原理分析 1.前言 2.傅里叶变换扫盲 3.一个傅里叶变换所不能解决的问题 3.1 问题介绍 3.2 短时傅里叶变换STFT 4.小波变换 4.1 小波变换的原理 4.2 小波变换工 ...

  2. 简谈基于fpga设计9/7小波变换原理

    简谈基于fpga设计9/7小波变换原理 9/7小波变换包括行变换,列变换. 其中行变换包括第一步行变换,第一步行更新,第二步行变换,第二步行更新. 列变换包括第一步列变换,第一步列更新,第二步列变换, ...

  3. 小波变换原理_小波变换的知识,转载的

    一.绘制原理: 需要用到的小波工具箱中的三个函数cwt(),centfrq(),scal2frq().具体参数及用途介绍如下: (1)COEFS = cwt(S,SCALES,'wname') 该函数 ...

  4. 小波变换原理_基于电压行波原理故障测距的相关问题

    本文首先对基于电流行波和电压行波原理的故障测距进行了比较,接下来着重论证了提取电容式电压互感器(CVT)二次电压行波进行故障测距的可行性,并对CVT的行波传变能力进行了仿真分析,提出了小波变换和高速数 ...

  5. 小波变换原理与JPEG2000

    参考文献: 基于多带小波变换的彩色图像压缩编码_文东旭 小波变换在视频图像压缩编码中的应用研究_詹为 百度百科小波变换_百度百科 小波(Wavelet)这一术语,顾名思义,"小波" ...

  6. 小波变换原理_小波变换教程(一):为什么需要小波变换

    本文讲解ROBI POLIKAR编写的小波变换教程<THE WAVELET TUTORIAL>的第一部分:为什么需要小波变换. 链接:http://users.rowan.edu/~pol ...

  7. 一维离散小波变换原理和代码实现

    基本原理: 离散小波变换:对连续小波变换的尺度因子和时移动因子采用不同的离散条件进行离散,得到Discrete Wavelet Transform(DWT).降低计算量的同时,保持连续小波变换的光滑性 ...

  8. 个人理解小波变换及转载小波变换原理

    在学习傅里叶变换的时候我们接触过周期信号的傅里叶变换.傅里叶级数的直观感受就是任意一个周期信号可以用N个正余弦叠加来表示.这些正余弦的频率和幅度各异.每一个余弦信号都有着自己固定的频率和幅值.所以,在 ...

  9. 图像压缩小波变换原理

    图像编码算法尽可能节省图像的存储空间和减少传输带宽需求,图像编码的目的是在满足一定解码重构质量的条件下利用尽可能少的比特数对图像进行表示.数字图像中的像素都不是独立存在的,小到相邻像素之间,大到图像块 ...

最新文章

  1. 【TP3.2】模板 select选项采坑
  2. 从URL中获取搜索关键字
  3. 从零开始学_JavaScript_系列(16)——CSSlt;3gt;(文本、对齐、圆角、盒模型、背景)...
  4. Scrapy使用问题整理(转载)
  5. 并不能一蹴而就的s9t9
  6. 百度云服务器bcc搭建php环境,使用百度云服务器BCC经验谈
  7. linux用call调存储过程,存储过程调用其他模式的存储过程需要注意的地方
  8. sklearn 决策树例子_使用 sklearn 构建决策树并使用 Graphviz 绘制树结构
  9. 兄dei,你的代码死循环了吗?
  10. 电脑版微信防撤回大全
  11. html5制作人物动作,炫酷的科技代码人物特效PS动作插件
  12. c 文件中调用 cpp 中函数
  13. <Healing Psoriasis The Natural Alternative>笔记(持续进行中)
  14. Python实用模块
  15. python 邮件之发信人和发信地址
  16. 初窥江湖之PhotoShop抠图(二)
  17. H5 六边形消除游戏开发 1
  18. feign源码解析 - 运行时
  19. 根据银行卡获取发卡行信息
  20. 使用MDB查看变量的值

热门文章

  1. Spring 从入门到精通 (二十) 持久层框架 MyBatis
  2. linux下gcc更新,Linux gcc版本如何升级
  3. React的高阶组件详解
  4. python能做什么兼职好-学会python可以做哪些兼职?
  5. 西门子PLC各个通信协议解析,分析
  6. Leetcode--Java--827. 最大人工岛
  7. Adobe Dreamweaver 放大代码字体
  8. Android 获取手机通讯录信息 — 头像、姓名和A-Z的快速查询
  9. MySQL一次error writing communication packets的排查过程
  10. 汽车电子软件开发:AutoSAR集成开发环境