实验目的:通过编程实现离散快速小波变换Mallat 算法,从而加深理解二维小波变换的分解与合成,同时,提高编程能力和matlab 的应用,为以后的学习打下基础
实验原理: 1、Mallat 快速算法 本实验使用离散快速小波变换快速算法Mallat 算法,算法原理如下 1(2 )jjknnch nk c (1) 1(2 )jjknndg nk c (2) 重构算法: 1(2 )(2 )jjjnkknnch nk cg nk d (3) 对于(1)、(2)等效于1jnc 经过冲击响应为 hn和 gn的数字滤波器,然后再分别进行“二抽取”,Mallat 分解算法的滤波器表示形式如下图 Cj-1(k)dj(k)h[-n]h[-n]22Cj(k) 用滤波器表示如下图 dj(k)Cj(k)Cj-1(k)22h(k)g(k)+ 2、 255*25510lgPSNRMSE '211()*MNijijijffMSEMN {}ijf '{}ijf 分别表示原始图像和重建后的图像,1,1iMjN
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]12jjjjjjcchhhhhhcchhhhncnhhhhhhc