小波变换实验一二维离散小波变换(Mallat快速算法)一、实验目的本实验的目的在于利用matlab程序实现二维离散小波变换,并对小波系数矩阵进行重构,进而在程序的编辑过程中理解二维离散小波变换和重构的原理和实现。同时利用不同的小波和边缘沿途哦方法,对小波系数矩阵的能量、均值、方差、信噪比等统计量进行分析比较,更深入的了解小波变换。二、实验原理、实验编程思路本实验基于matlab平台,编程实现二维离散小波变换的分解和重构。已经知道离散小波变换的1、分解算法:2、重构算法:基于这样的分解和重构算法公式,可以将二维离散小波变换的分解算法写成矩阵的形式,以h、g的长度为4为例:njnjknjnjkdkngdcknhc11)2()2(kjkkjkkndkngcknhc)2()2(1所以此时,mallat分解公式写成矩阵变换就应该为:同样,重构算法写成矩阵形式应该为:在进行分解计算的过程当中,将数据1jC进行几种不同方式的边缘扩展(周期、补零、连续等),再将低通(高通)滤波器进行填零到数据长度,然后进行卷积计算,再2抽样,组合即可得到)(jjDC。对于重构算法,对小波系数矩阵的前一半系数和后一半系数分别进行插零后,利用高通和低通滤波器进行重构,得到的结果组合后就形成重构结果。在程序中,进行原始数据的边缘拓展的时候,采用Y=WEXTEND(TYPE,MODE,X,L,LOC)函数进行不同类型的扩展。对扩展的数据进行小波变换分解之后,再对小波系数进行截断处理,得到最终的小波系数矩阵。编写的程序架构主要分为一级小波分解和重构函数mdec1和mrec1,多级小波分解和重构函数mallatdec2和mallatrec2,主函数通过对上述几个函数的调用实现二维离散小波变换的分解和重构。然后通过改变主函数的参数(小波类型),来实现对不同类型小波来计算得到结果的比较;在通过改变Wextend函数的参数实现对采取不同的边缘延拓的方法得到的峰值信噪比的比较。三、实验结果1、对图像进行二维离散小波变换,变换级数大于等于3级。然后进行阈值化处理(阈值约为10左右),再统计系数中0的个数(百分比表示)并进行重构,最后计算重构图像的峰值信噪比(PSNR)。对图像进行三级变换,选取阈值为10,最后得到实验结果为:3级变换得到的小波系数:原始图像和重构图像的比较:系数中0的个数:c=53715,num_0=81.96%。重构图像的峰值信噪比(PSNR):psnr=38.9568。2、取不同的边缘延拓的方法时,得到峰值、信噪比的比较。在edgeextend进行小波变换的函数中,通过改变Y=WEXTEND(TYPE,MODE,X,L)中的参数mode:'zpd'补零延拓、'spd'(or'sp1')平滑延拓、'symw'对陈延拓、'ppd'周期延拓,来实现几种不同的边缘处理方法,最后得到小波系数的峰值和信噪比如下:边缘延拓类型峰值信噪比(psnr)'zpd'245240.3776'spd'245241.0173'symw'245241.2858'ppd'245241.05263、取不同的小波滤波器对其小波系数能量分布、均值、方差等参数的比较。在main函数中,改变A=mallatdec2(I,'db5',3)里面的小波类型,从而得到不同的小波滤波器对图像进行小波变换。常见的小波有Daubechies:'db1'or'haar','db2',...,'db45';Coiflets:'coif1',...,'coif5';Symlets:'sym2',...,'sym8',...,'sym45';DiscreteMeyerwavelet:'dmey'等。几种小波分别选取'db5'、'coif3'、'sym2'、'dmey',最终的到的比较结果如下表:小波类型能量分布均值方差'db5'20.84961.7218e+004'coif3'20.62051.7227e+004'sym2'21.47801.7191e+004'dmey'20.80191.7230e+004从表中可以看出,利用几种不同的小波进行小波变化分解计算,最终得到的结果可以看出,小波系数的均值和方差都相差无几'sym2'的均值最大,方差最小,故能量分布较为均匀。几幅能量分布图中可以看出,小波系数的能量主要都集中在低频段,而在中高频的范围内只有少量的能量分布,且用'sym2'和'dmey'较另外两种小波'db5'、'coif3'在中频附近的能量要稍大。