小波变换 mallat

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验目的:通过编程实现离散快速小波变换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));

实验结果及分析:

1、多尺度分解与重构图像

二维小波变换采用小波采用db3,其峰值信噪比PNSR=230.13db,并对三级分解图像进行归一化,求出0的个数为37626,其所占的百分比为57.41%。

2、延拓重建图像

延拓方法周期延拓对称周期延拓零延拓常数连续延拓PNSR230.18db230.48db229.80db230.13db 从PNSR结果可知,在各种延拓中,对称周期延拓的重建图像结果最好,相比之下零延拓图像效果不如其他方法延拓。

3、不同小波下重构图像的性质

用不同小波进行图像重构,所得的重构图像能量分布如下

用各种小波进行重构后的图像的均值方差如下表。小波db1db2db3db4均值124.0309124.0509124.0509124.0509方差

2272

2272

2272

2272

附录:

1、主函数程序

clc;clear;

X=imread('LENA.bmp');%路径

X=double(X);

% S=yancir(X);

A=mallatdec2(X,'db3', 3);

image(abs(A));

colormap(gray(255));

title('3级多尺度分解图像');

Y=mallatrec2(A,'db3',3);

Y=real(Y);

figure(2);

subplot(1,2,1);

image(X);

colormap(gray(255));

title('原始图像');

subplot(1,2,2);

image(Y);

colormap(gray(255));

title('重建图像');

zerosn=numberzeros(A);

% Y=Y(33:288,33:288); %当调用延拓图像时,从延拓的重建图像进行截取

csize=size(X);

sr=csize(1);

sc=csize(2);

mse=sum(sum( (Y-X).^2,1))/(sr*sc);

psnr=10*log(255*255/mse)/log(10)

2、分解程序

function Y=mallatdec2(X,wname,level)

%输入:X 载入的二维图像像数值;

% level 小波分解次(级)数设定值(如果设定值超过最高可分解次数,按最高分解次数分% wname 小波名字wavelet name

%输出:Y 多极小波分解后的小波系数矩阵

[h,g]=wfilters(wname,'d'); %h,g 分别为低通和高通滤波器

X=double(X);

t=1;

[hh,ll]=size(X);

while t<=level

%先进行行小波变换

for row=1:hh

Y(row,1:ll)=mdec1(X(row,1:ll),h,g) ;

end

相关文档
最新文档