DWT(离散小波变换)

姓名:杨明祎

学号:20011110229

转载自:https://blog.csdn.net/zhaomengszu/java/article/details/54562066

今天读paper遇到用DWT做denoising处理的,以前只是听过离散小波变换,没怎么学过,顺便学习一下。

离散小波变换(Discrete Wavelet Transformation)

百度百科:

离散小波变换是对基本小波的尺度和平移进行离散化。在图像处理中,常采用二进小波作为小波变换函数,即使用2的整数次幂进行划分。

余弦变换是经典的谱分析工具,他考察的是整个时域过程的频域特征或整个频域过程的时域特征,因此对于平稳过程,他有很好的效果,但对于非平稳过程,他却有诸多不足。在JPEG中,离散余弦变换将图像压缩为8×8 的小块,然后依次放入文件中,这种算法靠丢弃频率信息实现压缩,因而图像的压缩率越高,频率信息被丢弃的越多。在极端情况下,JPEG图像只保留了反映图像外貌的基本信息,精细的图像细节都损失了。

小波变换是现代谱分析工具,他既能考察局部时域过程的频域特征,又能考察局部频域过程的时域特征,因此即使对于非平稳过程,处理起来也得心应手。他能将图像变换为一系列小波系数,这些系数可以被高效压缩和存储,此外,小波的粗略边缘可以更好地表现图像,因为他消除了DCT压缩普遍具有的方块效应。

在数字图像处理中,需要将连续的小波及其小波变换离散化。一般计算机实现中使用二进制离散处理,将经过这种离散化的小波及其相应的小波变换成为离散小波变换(简称DWT)。实际上,离散小波变换是对连续小波变换的尺度、位移按照2的幂次进行离散化得到的,所以也称之为二进制小波变换。

虽然经典的傅里叶变换可以反映出信号的整体内涵,但表现形式往往不够直观,并且噪声会使得信号频谱复杂化。在信号处理领域一直都是使用一族带通滤波器将信号分解为不同频率分量,即将信号f(x)送到带通滤波器族Hi(x)中。

小波分解的意义就在于能够在不同尺度上对信号进行分解,而且对不同尺度的选择可以根据不同的目标来确定。

对于许多信号,低频成分相当重要,它常常蕴含着信号的特征,而高频成分则给出信号的细节或差别。人的话音如果去掉高频成分,听起来与以前可能不同,但仍能知道所说的内容;如果去掉足够的低频成分,则听到的是一些没有意义的声音。在小波分析中经常用到近似与细节。近似表示信号的高尺度,即低频信息;细节表示信号的高尺度,即高频信息。因此,原始信号通过两个相互滤波器产生两个信号。

通过不断的分解过程,将近似信号连续分解,就可以将信号分解成许多低分辨率成分。理论上分解可以无限制的进行下去,但事实上,分解可以进行到细节(高频)只包含单个样本为止。因此,在实际应用中,一般依据信号的特征或者合适的标准来选择适当的分解层数。

一、定义(摘自百度百科):

首先我们定义一些需要用到的信号及滤波器。

x[n]:离散的输入信号,长度为N。

g[n]:low pass filter低通滤波器,可以将输入信号的高频部份滤掉而输出低频部份。

h[n]:high pass filter高通滤波器,与低通滤波器相反,滤掉低频部份而输出高频部份。

 Q:downsampling filter降采样滤波器,如果以x[n]作为输入,则输出y[n]=x[Qn]。此处举例Q=2。

利用阶层架构来介绍如何将一个离散信号作离散小波变换

 架构中的第1

层(1st stage)

 架构中的第2层(2nd stage)

 可继续延伸

架构中的第α层(α th stage)

注意:若输入信号x[n]的长度是N,则第α层中的xα,L[n]及xα,H[n]的长度为

2-D Discrete Wavelet Transform

 此时的输入信号变成x[m,n],而转换过程变得更复杂,说明如下:

首先对n方向作高通、低通以及降频的处理

 接着对v1,L[m,n]与v1,H[m,n]延著m方向作高低通及降频动作 经过(1)(2)两个步骤才算完成2-D DWT的一个stage。

 二、在降噪中的应用

在小波分析中经常用到近似于细节,近似表示信号的高尺度,即低频信息;细节表示信号的高尺度,即高频信息。

对含有噪声的信号,噪声分量的主要能量集中在小波解的细节分量中。


实例

clc; clear all; close all;

load leleccum; % 载入信号数据

s = leleccum;

Len = length(s);

[ca1, cd1] = dwt(s, 'db1'); % 采用db1小波基分解

a1 = upcoef('a', ca1, 'db1', 1, Len); % 从系数得到近似信号

d1 = upcoef('d', cd1, 'db1', 1, Len); % 从系数得到细节信号

s1 = a1+d1; % 重构信号

figure;

subplot(2, 2, 1); plot(s); title('初始电源信号');

subplot(2, 2, 2); plot(ca1); title('一层小波分解的低频信息');

subplot(2, 2, 3); plot(cd1); title('一层小波分解的高频信息');

subplot(2, 2, 4); plot(s1, 'r-'); title('一层小波分解的重构信号');

结果:


 总结

小波分解可以使人们在任意尺度观察信号,只需所采用的小波函数的尺度合适。一层我试了一下,并没有什么明显的效果,估计多分解几层,效果就会明显了。小波分解将信号分解为近似分量和细节分量,它们在应用中分别有不同的特点。比如,对含有噪声的信号,噪声分量的主要能量集中在小波分解的细节分量中,对细节分量做进一步处理,比如阈值处理,可以过滤噪声。

你可能感兴趣的:(DWT(离散小波变换))