文档库 最新最全的文档下载
当前位置:文档库 › 小波分解与重构原理

小波分解与重构原理

小波分解与重构原理
小波分解与重构原理

“小波工程应用”实验报告

一维信号离散小波分解与重构(去噪)的VC实现

一、目的

在理解了离散小波变换的基本原理和算法的基础上,通过设计VC程序对简单的一维信号在加上了高斯白噪声之后进行Daubechies小波、Morlet小波和Haar小波变换,从而得到小波分解系数;再通过改变分解得到的各层高频系数进行信号的小波重构达到消噪的目的。在这一程序实现的过程中能直观地理解信号小波分解重构的过程和在信号消噪中的重要作用,以及在对各层高频系数进行权重处理时系数的选取对信号消噪效果的影响。

二、基本原理

1、信号的小波分解与重构原理

在离散小波变换(DWT)中,我们在空间上表示信号,也就是说对于每一个在上表示的信号能用在上面提到的两个空间中的基函数来表示。

Where and are the coefficients of the scale metric space (j-1) which are obtained after the

Decomposing the coefficient of the scale metric space j . Analogously we could reconstruct the

by and .

我们在尺度度量空间对系数进行分解得到在尺度度量空间的两个系数

和。同样的,我们也能从两个系数和通过重构得到系数。

如上图中的分解与重构我们可以通过一定的滤波器组来实现(也就是小波变换算法)。当小波和尺度在空间内是正交的,我们就可以用内积公式计算得到系数和:

下面是内积计算方法的具体公式:

具体的系数计算过程如下:

对于上面的小波分解过程,通过分别设计高通滤波器和低通滤波器两组滤波器的系数(数组g[]和h[])即可实现,特别是对于离散小波变换,程序算法相对简单。而重构也只是分解的逆过程,重构算法和分解的算法是相对应而互逆的。

2、小波去噪原理

一般来说,噪声信号多包含在具有较高频率细节中,在对信号进行了小波分解之后,再利用门限阈值等形式对所分解的小波系数进行权重处理,然后对小信号再进行重构即可达到信号去噪的目的。具体步骤为:

a.一维信号的小波分解,选择一个小波并确定分解的层次,然后进行分解计算。

b.小波分解高频系数的阈值量化,对各个分解尺度下的高频系数选择一个阈值进行软阈值量化处理。

C.一维小波重构,根据小波分解的最底层低频系数和各层高频系数进行一维小波的重构。

三、VC程序设计

本程序是在Windows环境下的VC++6.0实现的,完成的功能主要有:载入待处理的一维离散数字信号并显示、对信号加入随机噪声并显示(可多次加入)、选择用来小波分解的小波类型、分解后的各层高频分量和低频分量的显示、小波重构时各层分量系数权重值的输入以及重构后的信号显示。

语言编程的具体步骤为:

1.图形显示和对话模式的创建。

2.Daubechies、Haar、Morlet小波高低通滤波器系数的植入。

3.分解重构函数的构造(共7个,6个小波函数DWT1、IDWT1、DWT2、IDWT2、DWT3、IDWT3,1个噪声加入运算函数Radom)。

4.显示输出所要用到的类(class)的创建,和画图函数的构造。

5.小波重构对话框的设计和编程。

四、体会

通过这一应用工程的设计,巩固和加深了对小波分解与重构的理解,熟悉了工程中小波去噪的基本思想和方法,进一步强化了VC编程知识。对于本人的学习来讲是一次非常有益的探索。在这个工程应用中的关键和难点就是小波分解与重构函数的构造,在这过程中遇到了许多困难和问题,参考了他人的程序才得以解决。由于时间有限加上以前所学知识的贫乏,本应用工程还存在许多问题,在以后的学习中还要进一步加以改进和完善。具体有:

1.离散小波的长度(系数的数量)和高低通滤波器系数的精度对小波分解的影响有待进一步的分析和试验。

2.对小波分解后不同层的图形显示时,横坐标的比例还不够合理,到高层时基本分不清信号的特征。

3.用于分解和重构的小波类型还非常有限(仅三个),不利于对不同信号进行最理想的小波分解,以及各种小波分解后的比较。

4.小波重构时对高低通系数的权重的选取后所得到的信号只能一次一图显示,如果能实现多图同时显示,这样更能达到权重值的选择对小波去噪效果影响的对比之目的。

总之,通过不断的摸索和实践,对知识的理解和掌握一定能不断的丰富和深入!

小波分解与重构代码

load leleccum; s = leleccum(1:3920); % 用db1小波函数对信号进行三尺度小波分解 [C,L]=wavedec(s,2,'db1'); figure(1); plot(s); title('leleccum原始信号'); % 提取尺度1的低频系数 cA1 = appcoef(C,L,'db1',1); %用小波分解框架[C.L]计算1层低频系数的近似值,小波基为db1 % 提取尺度2的低频系数 cA2 = appcoef(C,L,'db1',2); figure(2); subplot(2,1,1); plot(cA1); title('尺度1的低频系数'); subplot(2,1,2); plot(cA2); title('尺度2的低频系数'); % 提取尺度1的高频系数 cD1 = detcoef(C,L,1); %用小波分解框架[C.L]计算1层高频系数的近似值,小波基为db1 % 提取尺度2的高频系数 cD2 = detcoef(C,L,2); figure(3); subplot(2,1,1); plot(cD1); title('尺度1的高频系数'); subplot(2,1,2); plot(cD2); title('尺度2的高频系数');

我给你大概标注了一下,但是你的程序有问题, % 小波图像压缩 - RGB 图像 clear all; close all; % 读取图像 im = input('输入图像');%输入图像名称,要加分号 X=imread(im); % 输入要分解的小波层数和小波 n=input('输入要分解的小波层数');%输入所要分解的层数 wname = input('输入小波名称');%输入小波名称,也要加分号 x = double(X); NbColors = 255; map = gray(NbColors); x = uint8(x); %把RGB图像转换成灰度图 % x = double(X); % xrgb = 0.2990*x(:,:,1) + 0.5870*x(:,:,2) + 0.1140*x(:,:,3); % colors = 255; % x = wcodemat(xrgb,colors); % map = pink(colors); % x = uint8(x); % 对图像x进行n维小波分解 x=imread(’ D:\a.jpg’); map=x; n=3 wname='sym5'; [c,s] = wavedec2(x,n,wname); % 使用默认参数选择各层不同的阈值 alpha = 1.5; m = 2.7*prod(s(1,:)); [thr,nkeep] = wdcbm2(c,s,alpha,m) % 使用上面的阈值和硬阈值处理进行图像压缩 [xd,cxd,sxd,perf0,perfl2] = wdencmp('lvd',c,s,wname,n,thr,'h'); disp('压缩效率'); disp(perf0); % 重构(下面这个地方有问题,你这里是原始图像小波变换后进行重构,xd才是小波阀值压缩后重构的图像,cxd,sxd,是c,s经过阀值处理后得到的小波分解结构,也就是说xd=waverec2(cxd,sxd,wname);这个wdencmp函数不需要另外进行重构,你下面那些关于重构的都没用,而下面压缩后的图像才是重构后的图像,) R = waverec2(c,s,wname); rc = uint8(R); % 显示原始图像和压缩图像 subplot(221), image(x); colormap(map); title('原始图像') subplot(222), image(xd); colormap(map); title('压缩后的图像') % 显示结果 xlab1 = ['图像压缩后保留能量百分比',num2str(perfl2)];

小波变换与傅里叶变换的对比异同

小波变换与傅里叶变换的对比、异同 一、基的概念 两者都是基,信号都可以分成无穷多个他们的和(叠加)。而展开系数就是基与信号之间的内积,更通俗的说是投影。展开系数大的,说明信号和基是足够相似的。这也就是相似性检测的思想。但我们必须明确的是,傅里叶是0-2pi 标准正交基,而小波是-inf到inf之间的基。因此,小波在实轴上是紧的。而傅里叶的基(正弦或余弦),与此相反。而小波能不能成为Reisz基,或标准稳定的正交基,还有其它的限制条件。此外,两者相似的还有就是PARSEVAL定理。(时频能量守恒)。 二、离散化的处理 傅里叶变换,是一种数学的精妙描述。但计算机实现,却是一步步把时域和频域离散化而来的。第一步,时域离散化,我们得到离散时间傅里叶变换(DTFT),频谱被周期化;第二步,再将频域离散化,我们得到离散周期傅里叶级数(DFS),时域进一步被周期化。第三步,考虑到周期离散化的时域和频域,我们只取一个周期研究,也就是众所周知的离散傅里叶变换(DFT)。这里说一句,DFT是没有物理意义的,它只是我们研究的需要。借此,计算机的处理才成为可能。所有满足容许性条件(从-INF到+INF积分为零)的函数,都可以成为小波。小波作为尺度膨胀和空间移位的一组函数也就诞生了。但连续取值的尺度因子和平移因子,在时域计算量和频域的混叠来说,都是极为不便的。用更为专业的俗语,叫再生核。也就是,对于任何一个尺度a和平移因子b的小波,和原信号内积,所得到的小波系数,都可以表示成,在a,b附近生成的小波,投影后小波系数的线性组合。这就叫冗余性。这时的连续小波是与正交基毫无关系的东西,它顶多也只能作为一种积分变换或基。但它的显微镜特点和相似性检测能力,已经显现出来了。为了进一步更好的将连续小波变换离散化,以下步骤是一种有效方法。第一步,尺度离散化。一般只将a二进离散化,此时b是任意的。这样小波被称为二进小波。第二步,离散b。怎么离散化呢?b取多少才合适呢?于是,叫小波采样定理的东西,就这样诞生了。也就是小波平移的最小距离(采样间隔),应该大于二倍小波基的最高频率(好像类似,记不清了)。所以b取尺度的整数倍就行了。也就是越胖的小波,对应频谱越窄,平移量应该越大,采样间隔越大。当然,第一二两步的频域理解,即在满足频域窗口中心是3倍的频域窗口半径的前提下,频域就在统计上是完美二分的。(但很多小波满足不了这个条件,而且频域窗口能量不?,所以只是近似二分的).这时的小波变换,称为离散二进小波变换.第三步,引入稳定性条件.也就是经过变换后信号能量和原信号能量有什么不等式关系.满足稳定性条件?后,也就是一个小波框架产生了可能.他是数值稳定性的保证.一个稍弱的稳定条件???,就是?

小波变换的基本原理

10.2小波变换的基本原理 地质雷达的电磁波信号和地震波信号都是非平稳随机时变信号,长期以来,因非平稳信号处理的理论不健全,只好将其作为平稳信号来处理,其处理结果当然不满意。近年来,随着科学技术的发展和进步,国内外学术界已将注意力转向非平稳随机信号分析与处理的研究上,其中非平稳随机信号的时频表示法是研究热点之一。在这一研究中,戈勃展开、小波变换、维格纳分布与广义双线性时频分布等理论发展起来,这些方法既可以处理平稳信号过程,也可以处理非平稳随机时变信号。 小波变换是上世纪80年代中后期逐渐发展起来的一种数学分析方法。1984年法国科学家J.M OLET在分析地震波的局部特性时首先使用了小波这一术语,并用小波变换对地震信号进行处理。小波术语的含义是指一组衰减震动的波形,其振幅正负相间变化,平均值为零,是具有一定的带宽和中心频率波组。小波变换是用伸缩和平移小波形成的小波基来分解(变换)或重构(反变换)时变信号的过程。不同的小波具有不同带宽和中心频率,同一小波集中的带宽与中心频率的比是不变的,小波变换是一系列的带通滤波响应。它的数学过程与傅立叶分析是相似的,只是在傅立叶分析中的基函数是单频的调和函数,而小波分析中的基函数是小波,是一可变带宽内调和函数的组合。 小波变换在时域和频域都具有很好的局部化性质,较好地解决了时域和频域分辨率的矛盾,对于信号的低频成分采用宽时窗,对高频成分采用窄时窗。因而,小波分析特别适合处理非平稳时变信号,在语音分析和图象处理中有广泛的应用,在地震、雷达资料处理中将有良好的应用前景。 下边就小波分析的基本原理、主要作用及在雷达资料处理中的应用三方面作以介绍。 10.2.1小波分析的基本原理 小波函数的数学表达

8.2小波分解与重构

8.2信号分解与合成的Mallat算法 一维信号的分解与合成 1. 正交镜像滤波器 H伽1IH㈣1 X Higk W --- L 血b&nd o K n A 2. 一维信号的小波分解与重构算法 (Mallat ' herringbone 算法) X

、二维信号的分解与重构 rl 比 horizontal HL LL venic aJ HH

三、用Matlab实现图像的分解与合成 1. dwt2 与idwt2 dwt2为一层二维离散小波分解函数,调用格式: [cA,cH,cV,cD]=dwt2(X, 'wname' %用指定小波基对图像X进行一层二维离散小波变换分解。 wname'为小波基的名称,cA为近似 (低频)图像矩阵,cH, cV, cD分别为小波分解的水平方向细节系数,垂直方向细节系数,对角线方向细节系数。 [cA,cH,cV,cD]=dwt2(X丄o_D,Hi_D) %用指定的低通分解滤波器Lo_D和高通分解滤波 器Hi_D对图像X进行二维离散小波分解。Lo_D与

Hi_D 的长度必须一致。 idwt2 为一层二维离散小波重构函数,调用格式为: X=idwt2(cA,cH,cV ,cD,'wname') % 用指定小波重构图像X ,wname 为小波基的名称 X=idwt2(cA,cH,cV ,cD,Lo_R,Hi_R) % 用指定低通重构滤波器Lo_R 和高通重构滤波器Hi_R 重构图像X,Lo_R 与Hi_R 的长度必须一致。 2. wavedec2与vaverec2 wavedec2为多层二维离散小波分解函数,其调用 格式为: [C,S]=wavedec2(X,N,'wname') % 用指定小波基对图像X 进行N 层二维离散小波分解。N 为正整数,C为小波分解矢量,S为相应的标记矩阵。 C = [ A(N) | H(N) | V(N) | D(N) | ... H(N-1) | V(N-1) | D(N-1) | ... | H(1) | V(1) | D(1) ]. A = approximation coefficients H = horizontal detail coefficients V = vertical detail coefficients D = diagonal detail coefficients

小波实验报告一维Haar小波2次分解

一、题目:一维Haar 小波2次分解 二、目的:编程实现信号的分解与重构 三、算法及其实现:离散小波变换 离散小波变换是对信号的时-频局部化分析,其定义为:/2200()(,)()(),()()j j Wf j k a f t a t k dt f t L R φ+∞---∞=-∈? 本实验实现对信号的分解与重构: (1)信号分解:用小波工具箱中的dwt 函数来实现离散小波变换,函数dwt 将信号分解为两部分,分别称为逼近系数和细节系数(也称为低频系数和高频系数),实验中分别记为cA1,cD1,它们的长度均为原始信号的一半,但dwt 只能实现原始信号的单级分解。在本实验中使用小波函数db1来实现单尺度小波分解,即: [cA1,cD1]=dwt(s,’db1’),其中s 是原信号;再通过[cA2,cD2]=dwt(cA1,’db1’)进行第二次分解,长度又为cA2的一半。 (2)信号重构:用小波工具箱中的upcoef 来实现,upcoef 是进行一维小波分解系数的直接重构,即: A1 = upcoef('a',cA1,'db1'); D1 = upcoef('a',cD1,'db1')。 四、实现工具:Matlab 五、程序代码: %装载leleccum 信号 load leleccum; s = leleccum(1:3920); %用小波函数db1对信号进行单尺度小波分解 [cA1,cD1]=dwt(s,'db1'); subplot(3,2,1); plot(s); title('leleccum 原始信号'); %单尺度低频系数cA1向上一步的重构信号 A1 = upcoef('a',cA1,'db1'); %单尺度高频系数cD1向上一步的重构信号 D1 = upcoef('a',cD1,'db1'); subplot(3,2,3); plot(A1); title('单尺度低频系数cA1向上一步的重构信号'); subplot(3,2,5); plot(D1); title('单尺度高频系数cD1向上一步的重构信号'); [cA1,cD1]=dwt(cA1,’db1'); subplot(3,2,2); plot(s); title('leleccum 第一次分解后的cA1信号'); %第二次分解单尺度低频系数cA2向上一步的重构信号 A2= upcoef('a',cA2,'db1',2); %第二次分解单尺度高频系数cD2向上一步的重构信号 D2 = upcoef('a',cD2,'db1',2); subplot(3,2,4); plot(A2);

详解傅里叶变换与小波变换

详解傅里叶变换与小波变化 希望能简单介绍一下小波变换,它和傅立叶变换的比较,以及它在移动平台做motion detection的应用。如果不做特殊说明,均以离散小波为例子。考虑到我以前看中文资料的痛苦程度,我会尽量用简单,但是直观的方式去介绍。有些必要的公式是不能少的,但我尽量少用公式,多用图。另外,我不是一个好的翻译者,所以对于某些实在翻译不清楚的术语,我就会直接用英语。我并不claim我会把整个小波变换讲清楚,这是不可能的事,我只能尽力去围绕要点展开,比如小波变换相对傅立叶变换的好处,这些好处的原因是什么,小波变换的几个根本性质是什么,背后的推导是什么。我希望达到的目的就是一个小波变换的初学者在看完这个系列之后,就能用matlab或者别的工具对信号做小波变换的基本分析并且知道这个分析大概是怎么回事。 要讲小波变换,我们必须了解傅立叶变换。要了解傅立叶变换,我们先要弄清楚什么是”变换“。很多处理,不管是压缩也好,滤波也好,图形处理也好,本质都是变换。变换的是什么东西呢?是基,也就是basis。如果你暂时有些遗忘了basis的定义,那么简单说,在线性代

数里,basis是指空间里一系列线性独立的向量,而这个空间里的任何其他向量,都可以由这些个向量的线性组合来表示。那basis在变换里面啥用呢?比如说吧,傅立叶展开的本质,就是把一个空间中的信号用该空间的某个basis的线性组合表示出来,要这样表示的原因,是因为傅立叶变换的本质,是。小波变换自然也不例外的和basis有关了。再比如你用Photoshop去处理图像,里面的图像拉伸,反转,等等一系列操作,都是和basis的改变有关。 既然这些变换都是在搞基,那我们自然就容易想到,这个basis的选取非常重要,因为basis的特点决定了具体的计算过程。一个空间中可能有很多种形式的basis,什么样的basis比较好,很大程度上取决于这个basis服务于什么应用。比如如果我们希望选取有利于压缩的话,那么就希望这个basis能用其中很少的向量来最大程度地表示信号,这样即使把别的向量给砍了,信号也不会损失很多。而如果是图形处理中常见的线性变换,最省计算量的完美basis就是eigenvector basis了,因为此时变换矩阵T对它们的作用等同于对角矩阵(Tv_n= av_n,a是eigenvalue)。总的来说,抛开具体的应用不谈,所有的basis,我们都希望它们有一个共同的特点,那就是,容易计算,用最简单的方式呈现最多的信号特性。 好,现在我们对变换有了基本的认识,知道他们其实就是在搞基。当然,搞基也是分形式的,不同的变换,搞基的妙处各有不同。接下来先看看,傅立叶变换是在干嘛。

小波分解与重构原理

“小波工程应用”实验报告 一维信号离散小波分解与重构(去噪)的VC实现 一、目的 在理解了离散小波变换的基本原理和算法的基础上,通过设计VC程序对简单的一维信号在加上了高斯白噪声之后进行Daubechies小波、Morlet小波和Haar小波变换,从而得到小波分解系数;再通过改变分解得到的各层高频系数进行信号的小波重构达到消噪的目的。在这一程序实现的过程中能直观地理解信号小波分解重构的过程和在信号消噪中的重要作用,以及在对各层高频系数进行权重处理时系数的选取对信号消噪效果的影响。 二、基本原理 1、信号的小波分解与重构原理 在离散小波变换(DWT)中,我们在空间上表示信号,也就是说对于每一个在上表示的信号能用在上面提到的两个空间中的基函数来表示。 Where and are the coefficients of the scale metric space (j-1) which are obtained after the Decomposing the coefficient of the scale metric space j . Analogously we could reconstruct the by and . 我们在尺度度量空间对系数进行分解得到在尺度度量空间的两个系数 和。同样的,我们也能从两个系数和通过重构得到系数。

如上图中的分解与重构我们可以通过一定的滤波器组来实现(也就是小波变换算法)。当小波和尺度在空间内是正交的,我们就可以用内积公式计算得到系数和: 下面是内积计算方法的具体公式: 具体的系数计算过程如下: 对于上面的小波分解过程,通过分别设计高通滤波器和低通滤波器两组滤波器的系数(数组g[]和h[])即可实现,特别是对于离散小波变换,程序算法相对简单。而重构也只是分解的逆过程,重构算法和分解的算法是相对应而互逆的。 2、小波去噪原理

小波图像分解与合成的设计报告内容

小波图像分解与合成的设计报告内容 小波图像分解与合成的设计报告内容 一、小波图像分解与合成及阈值测试概述 (一)、haar小波与Daubechies小波分解与重构概述 根据haar函数定义,可得出当N=2时,哈尔(haar)正规化变换矩阵为,因为haar矩阵是正交矩阵,具可分离变换性质,对二维的像素矩阵,可由连续2次运用一维的haar小波变换来实现,如对图像像素矩阵的每一行求变换后,再对其每一列求变换可得二维haar小波变换,这叫标准分解,如果交替地对每一行和每一列像素值进行变换,则为非标准分解。并且可利用矩阵形式的优点,对1×N的像素矩阵分解成若干个1×2的矩阵与上述N=2的haar正规化变换矩阵作一维的haar小波变换,减少计算量,实现haar小波分解。因为正规化的haar变换矩阵为对称变换矩阵,其逆变换矩阵和正变换的相同,只要把原来每次变换后得到的矩阵数值再作一次变换,则可以实现重构。Haar小波在时域上是不连续的,因此分析性能并不很好,但它的计算简单。这里程序采用非标准分解方法。在变换矩阵中,第一列变换得到图像像素均值,为图像像素低频分量,第二列得到图像像素差值,为高频分量,原像素值第i对像素分解的低频和高频分量值分别存在矩阵的i和N/2+i处。重构时取回这两个数值,再与逆变换矩阵相乘存回原处,则实现重构。 根据Daubechies小波的定义,可设计出一组满足正交化要求的滤波器,利用卷积模板实现低通和高通功能,主要步骤为: 1.利用Matlab中的Daubechies小波滤波器计算函数dbaux求出滤波器作模板系数,对dbN,滤波器长度为2N,这里求db9,其滤波器长度为18。 2.由于图像像素只有有限的2N个非零值,就需要解决边界问题。Matlab软件里缺省的分解模式sym采用对称周期化扩展技术。也就是将图像的四个边界先做对称处理的矩阵拓展,避免了边界的不连续性。如图(这里以256×256为例,即从标号0到255): _________|______________________________________|______________ |—|—|—|—|—|—|—|———|——|——|——|——|——|——|——| |2 |1 |0 |0 |1 |2 |3 |......|252 |253 |254 |255 |255 |254 |253 | |—|—|—|—|—|—|—|———|——|——|——|——|——|——|——| _________|______________________________________|______________ 对1×M的矩阵像数值,其dbN一次变换(低通、高通)后输出的总长度为M+2(N-1),矩阵拓展长度为M+4×(N-1)。如对1×256,一次变换后低通、高通系数总长度为272,则矩阵需对称拓展至288再作卷积运算。 3.将模板上系数与矩阵(一维)对应象素相乘再求和(卷积运算)。 4.将所得数存到相应位置。 5.模板右移两个像素,再做同样计算,直至计算完最后2N个像素为止。 分解(正变换)与重构(逆变换)的滤波器可在MA TLAB中用以下命令得到: 逆变换的低通滤波器rh=dbaux(N) 逆变换的高通滤波器rg(n)=-(-1)^n×rh(2N-n+1); (n=1,2,...,2N) 正变换的低通滤波器h=rh(2N:-1:1); 正变换的高通滤波器g(n)=(-1)^n×rh(n) ; (n=1,2,…,2N) 重构过程为高低频滤波器与各个矩阵卷积后再相加来恢复图像数据的,卷积解释与分解类似,但要根据分解时扩展矩阵方式,重构时对矩阵向前或向后插入零,保证输出的矩阵长度为原矩阵长度。从定义可以知道,db1变换即为haar小波变换,所以对像素矩阵长度不为2

小波变换与傅里叶变换的对比异同

小波变换与傅里叶变换 的对比异同 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

小波变换与傅里叶变换的对比、异同 一、基的概念 两者都是基,信号都可以分成无穷多个他们的和(叠加)。而展开系数就是基与信号之间的内积,更通俗的说是投影。展开系数大的,说明信号和基是足够相似的。这也就是相似性检测的思想。但我们必须明确的是,傅里叶是0-2pi标准正交基,而小波是-inf到inf之间的基。因此,小波在实轴上是紧的。而傅里叶的基(正弦或余弦),与此相反。而小波能不能成为Reisz基,或标准稳定的正交基,还有其它的限制条件。此外,两者相似的还有就是PARSEVAL 定理。(时频能量守恒)。 二、离散化的处理 傅里叶变换,是一种数学的精妙描述。但计算机实现,却是一步步把时域和频域离散化而来的。第一步,时域离散化,我们得到离散时间傅里叶变换(DTFT),频谱被周期化;第二步,再将频域离散化,我们得到离散周期傅里叶级数(DFS),时域进一步被周期化。第三步,考虑到周期离散化的时域和频域,我们只取一个周期研究,也就是众所周知的离散傅里叶变换(DFT)。这里说一句,DFT是没有物理意义的,它只是我们研究的需要。借此,计算机的处理才成为可能。所有满足容许性条件(从-INF到+INF积分为零)的函数,都可以成为小波。小波作为尺度膨胀和空间移位的一组函数也就诞生了。但连续取值的尺度因子和平移因子,在时域计算量和频域的混叠来说,都是极为不便的。用更为专业的俗语,叫再生核。也就是,对于任何一个尺度a和平移因子b的小波,和原信号内积,所得到的小波系数,都可以表示成,在a,b附近生成的小波,投影后小波系数的线性组合。这就叫冗余性。这时的连续小波是与正交基毫无关系的东西,它顶多也只能作为一种积分变换或基。但它的显微镜特点和相似性检测能力,已经显现出来了。为了进一步更好的将连续小波变换离散化,以下步骤是一种有效方法。第一步,尺度离散化。一般只将a二进离散化,此时b 是任意的。这样小波被称为二进小波。第二步,离散b。怎么离散化呢b取多少才合适呢于是,叫小波采样定理的东西,就这样诞生了。也就是小波平移的最小距离(采样间隔),应该大于二倍小波基的最高频率(好像类似,记不清了)。所以b取尺度的整数倍就行了。也就是越胖的小波,对应频谱越窄,平移量应该越大,采样间隔越大。当然,第一二两步的频域理解,即在满足频域窗口中心是3倍的频域窗口半径的前提下,频域就在统计上是完美二分的。(但很多小波满足不了这个条件,而且频域窗口能量不,所以只是近似二分的).这时的小波变换,称为离散二进小波变换.第三步,引入稳定性条件.也就是经过变换后信号能量和原信号能量有什么不等式关系.满足稳定性条件后,也就是一个小波框架产生了可能.他是数值稳定性的保证.一个稍弱的稳定条件,就是

小波变换的原理及matlab仿真程序讲解学习

小波变换的原理及m a t l a b仿真程序

基于小波变换的信号降噪研究 2 小波分析基本理论 设Ψ(t)∈L 2( R) ( L 2( R) 表示平方可积的实数空间,即能量有限的信号空间) , 其傅立叶变换为Ψ(t)。当Ψ(t)满足条件[4,7]: 2 () R t dw w C ψψ =<∞? (1) 时,我们称Ψ(t)为一个基本小波或母小波,将母小波函数Ψ(t)经伸缩和平移后,就可以得到一个小波序列: ,()( )a b t b t a ψ -= ,,0a b R a ∈≠ (2) 其中a 为伸缩因子,b 为平移因子。 对于任意的函数f(t)∈L 2( R)的连续小波变换为: ,(,),()( )f a b R t b W a b f f t dt a ψψ-=<>= ? (3) 其逆变换为: 211()(,)()f R R t b f t W a b dadb C a a ψ ψ+-= ?? (4) 小波变换的时频窗是可以由伸缩因子a 和平移因子b 来调节的,平移因子b,可以改变窗口在相平面时间轴上的位置,而伸缩因子b 的大小不仅能影响窗口在频率轴上的位置,还能改变窗口的形状。小波变换对不同的频率在时域上的取样步长是可调节的,在低频时,小波变换的时间分辨率较低,频率分辨率较高:在高频时,小波变换的时间分辨率较高,而频率分辨率较低。使用小波变换处理信号时,首先选取适当的小波函数对信号进行分解,其次对分解出的参

数进行阈值处理,选取合适的阈值进行分析,最后利用处理后的参数进行逆小波变换,对信号进行重构。 3 小波降噪的原理和方法 3.1 小波降噪原理 从信号学的角度看 ,小波去噪是一个信号滤波的问题。尽管在很大程度上小波去噪可以看成是低通滤波 ,但由于在去噪后 ,还能成功地保留信号特征 ,所以在这一点上又优于传统的低通滤波器。由此可见 ,小波去噪实际上是特征提取和低通滤波的综合 ,其流程框图如图所示[6]: 小波分析的重要应用之一就是用于信号消噪 ,一个含噪的一维信号模型可表示为如下形式: (k)()()S f k e k ε=+* k=0.1…….n-1 其中 ,f( k)为有用信号,s(k)为含噪声信号,e(k)为噪声,ε为噪声系数的标准偏差。 假设e(k)为高斯白噪声,通常情况下有用信号表现为低频部分或是一些比较平稳的信号,而噪声信号则表现为高频的信号,下面对 s(k)信号进行如图结构的小波分解,则噪声部分通常包含在Cd1、Cd2、Cd3中,只要对 Cd1,Cd2,Cd3作相应的小波系数处理,然后对信号进行重构即可以达到消噪的目的。

基于多小波的图像分解和重构

基于多小波的图像分解和重构 摘要与单小波相比较,多小波同时具备诸如紧支性,正交性,对称性等诸多在信号处理中非常重要的良好性质。这决定了多小波是一种优于单小波的信号处理技术。在应用中,对于单小波可以直接利用分解与重构公式对信号进行滤波。但是多小波是用矢量滤波器组对信号进行分解、重构.滤波对象必须是满足一定要求的矢量信号。因此,在进行多小波分解前必须通过前置滤波器对原始离散信号进行预处理得到初始矢量,然后才能进行多小波变换。同样,对重构后的数据也要进行后处理才能得到需要的结果。本文以GHM多小波为例,实现了对图像的预处理、分解和变换后的重构、后处理过程,并将解压缩后的结果与单小波相比较,获得较好的结果。 关键词多小波;多尺度函数;多小波变换 一、概述 多小波是标量小波向矢量空间的一种很自然的拓展。是传统小波理论中正在兴起的一个分支,它具备一些比标量小波更好的性质,如同时具有正交性和对称性、紧支性等诸多在信号处理中非常重要的良好性质。这决定了多小波是一种优于单小波的信号处理技术。这决定了多小波是一种优于单小波的信号处理技术。这就意味着多小波不但可以对信号提供一种更新的分析手段,而且对信号的逼近性质更好,重构信号在边界位置的性能也将更完善。多小波的研究最早开始于1993年,随后其理论与应用方面的研究得到了迅猛的发展。在图像处理的实际应用中,正交性能保持能量;而对称性(线性相位)既适合于人眼的视觉系统,又使信号在边界易于处理,所以,分析工具同时拥有这两种性质是十分重要的。可是,实数域中,紧支、对称、正交的非平凡单小波是不存在的。多小波开创性的将单小波中由单个尺度函数生成的多尺度分析空间,扩展为由多个尺度函数生成,以此来获得更大的自由度。它既保持了单小波所具有的良好的时域与频域的

小波信号分解与重构的Matlab程序

Matlab小波分析工具箱丰富的函数和强大的仿真功能为我们学习小波、用好小波提供了方便、快捷的途径,但是,如果我们要深入掌握小波分析的原理,真正学好、用好小波,就应该尽量用自己编写的程序去实现小波变换和信号分析,尽量在自己的程序中少调用Matlab提供的函数,多用自己的理解去编写相关的小波函数,这样的过程是一个探索、求知的过程,更能让我们体会到小波的强大和学习的乐趣。下面,我把自己编写的小波一维、二维信号分解和重构Matlab 程序共享出来,也希望有朋友共享自编的程序,共同学习,提高程序的效率和简洁性。 首先要说明的一点是,虽然是自己编写Matlab程序,但并不是说一点也不用Matlab的自带函数。我们要编写的是实现小波变换的主要功能函数,而绘图等基本功能还是要用到Matlab函数的。而且,根据小波变换的滤波器组原理,原始信号要通过低通、高通滤波器处理,这里就涉及到卷积这一运算步骤。卷积——FFT算法的实现,相信很多朋友都能用Matlab、C语言等来实现,不过与Matlab自带的用机器语言编写的FFT程序相比,运算速度一般会慢几倍、几十倍。所以,我的程序里边涉及卷积的就直接调用Matlab的conv()函数了。 我们知道,小波变换的一级分解过程是,原始信号分别进行低通、高通滤波,再分别进行二元下抽样,就得到低频、高频(也称为平均、细节)两部分系数;而多级分解则是对上一级分解得到的低频系数再进行小波分解,是一个递归过程。以下是一维小波分解的程序: function [cA,cD] = mydwt(x,lpd,hpd,dim); % 函数[cA,cD]=MYDWT(X,LPD,HPD,DIM) 对输入序列x进行一维离散小波分解,输出分解序列[cA,cD] % 输入参数:x——输入序列; % lpd——低通滤波器; % hpd——高通滤波器; % dim——小波分解级数。 % 输出参数:cA——平均部分的小波分解系数; % cD——细节部分的小波分解系数。 cA=x; % 初始化cA,cD cD=[]; for i=1:dim cvl=conv(cA,lpd); % 低通滤波,为了提高运行速度,调用MATLAB提供的卷积函数conv() dnl=downspl(cvl); % 通过下抽样求出平均部分的分解系数 cvh=conv(cA,hpd); % 高通滤波 dnh=downspl(cvh); % 通过下抽样求出本层分解后的细节部分系数 cA=dnl; % 下抽样后的平均部分系数进入下一层分解 cD=[cD,dnh]; % 将本层分解所得的细节部分系数存入序列cD end function y=downspl(x); % 函数Y=DOWMSPL(X) 对输入序列进行下抽样,输出序列Y。 % 下抽样是对输入序列取其偶数位,舍弃奇数位。例如x=[x1,x2,x3,x4,x5],则

小波图像分解和重构程序每句都带解释

小波图像分解程序: function coef=mywavedec2(x,N,wname) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 函数MYWA VEDEC2() 对输入矩阵x 进行dim 层分解,得到相应的分解系数矩阵y % 输入参数:x ——输入矩阵 % N ——分解级数 % wname ——分解所用的小波函数 % 输出参数:coef ——分解系数矩阵,其结构如下: % coef = {cA_N;cV_N;cH_N;cD_N;cV_N-1;cH_N-1;cD_N-1;……;cV_1;cH_1;cD_1} % Copyright by Zou Yuhua ( chenyusiyuan ), original : 2007-11-10, modified: 2008-06-04 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 求出小波函数的滤波器组系数向量 [Lo_D,Hi_D] = wfilters(wname,'d'); % 画出原始图像 imshow(x);title('Original Image'); % 标明图像大小 [r,c]=size(x); xlabel(['Size : ',num2str(r),'*',num2str(c)]); % 将矩阵x的数据格式转换为适合数值处理的double格式 xd=double(x); coef=[]; for i=1:N [cA,cV,cH,cD]=mydwt2(xd,Lo_D,Hi_D); % 第i 级小波分解 xd=cA;% 将第i 级分解得到的低频系数矩阵作为第i+1 级分解的源矩阵 outmp={cV;cH;cD};% 将第i 级分解得到的高频系数矩阵cV,cH,cD存入细胞矩阵outmp % 注意细胞矩阵的赋值是用大括号“{}”的,而普通矩阵赋值是用方括号“[]” % 细胞矩阵不要求其中的子矩阵的行列数都相同 coef=[outmp;coef];% 将细胞矩阵outmp 存入输出矩阵coef,coef将由空矩阵变为细胞矩阵 % 注意这里的方括号不能用大括号取代 % 否则,使用大括号会将初始的coef空矩阵也作为细胞矩阵的子矩阵 % 而且,在迭代中coef 将是一个不断嵌套的细胞矩阵,不便于后续处理和读取 % 上面这个语句是一种有效的在迭代过程中保存数据的方法 % 设待存数据为data,可以是单个数、向量或矩阵 % 保存数据的矩阵为mat,初始为空矩阵:mat=[] % 则可按以下格式保存迭代过程产生的数据 % mat=[mat;data]; % 方括号内的分号“;”表示数据data 是按“列”排序的方式存入矩阵mat % mat=[mat,data]; % 方括号内的逗号“,”表示数据data 是按“行”排序的方式存入矩阵mat % data 也可以在mat 前嵌入,即mat=[data;mat] 或mat=[data,mat] end

小波变换 mallat

实验目的:通过编程实现离散快速小波变换Mallat 算法,从而加深理解二维 小波变换的分解与合成,同时,提高编程能力和matlab 的应用,为以后的学习打下基础。 实验原理: 1、Mallat 快速算法 本实验使用离散快速小波变换快速算法Mallat 算法,算法原理如下 (1)1(2)j j k n n c h n k c -=-∑ (2) 1(2)j j k n n d g n k c -=-∑重构算法: (3) 1(2)(2)j j j n k k n n c h n k c g n k d -=-+-∑∑对于(1)、(2)等效于经过冲击响应为和的数字滤波器,然后再分别进 1 j n c -[]h n -[]g n -行“二抽取”,Mallat 分解算法的滤波器表示形式如下图 C j-1 d j (k) C j (k) 用滤波器表示如下图 d j C j C j-1(k) 2、 255*255 10lg PSNR MSE ='2 11 ()*M N ij ij i j f f MSE M N ==-= ∑∑ 分别表示原始图像和重建后的图像,。 {}ij f '{}ij f 1,1i M j N ≤≤≤≤3、边界延拓方法有零延拓、周期延拓、对称周期延拓、常数连续延拓等,本实验采用以上四种方法进行原图像的1/8延拓,并进行重构,各种延拓方法所对应的函数为yan0(x)、yancir (x )、yan(x)、yanc(x),在主程序中,需要某种延拓,便调用某种函数。

实验编程思路: 为使程序易于理解,在不考虑算法复杂度的情况下,分解程序采用简洁的循环计算出下一级的分解系数,程序采用的编程思想如下 [][][]11100[0][1][2][3][4][5]001[1]00[0][1][2][3]00[1][2][3][4][5]00[0][1]12j j j j j j c c h h h h h h c c h h h h n c n h h h h h h c ---?? ??????????????? ???=??????????????--?????????????? L L M M M M M M M M O O M L 以上矩阵等式左面是进行二抽样的结果,是分解的低频部分。同理,对 [0][1]2 j j n c c -L j 于分解的高频部分有如下矩阵形式: j [][][]11 100[0][1][2][3][4][5]0 01[1]00[0][1][2][3]00[1][2][3][4][5]00[0][1]12j j j j j d d g g g g g g d d g g g g n d n g g g g g g d ---???? ????????????? ???=? ?????? ???????--?????????????? L L M M M M M M M M O O M L 分解程序: lenx=size(x,2);%x 为一维向量 lenh=size(h,2);h=[h,zeros(1,(lenx-lenh))];g=[g,zeros(1,(lenx-lenh))]; r1(1)=sum(h.*x); r2(1)=sum(g.*x); for k=1:1:(lenx/2-1) %循环求出下一级低频和高频分量 h=[h(end-1:end),h(1:(end-2))]; r1(k+1)=sum(h.*x); g=[g(end-1:end),g(1:1:(end-2))]; r2(k+1)=sum(g.*x); end y=[r1,r2]; 对于重构算法,其等效形式为 [][][] 1(2)(2)j j j n n c n h n k c k g n k d k -=-+-∑∑上式等号右边部分实质上是对变量的数字卷积运算,程序采用频域相乘代替卷积,重建程k 序为 y=ifft(fft(c3,lenx).*fft(h,lenx))+ ifft(fft(d3,lenx).*fft(g,lenx));

相关文档
相关文档 最新文档