1、整理小波分析实验二维离散小波变换Mallat快速算法小波分析实验: 实验2 二维离散小波变换(Mallat快速算法) 实验目的:在理解离散小波变换原理和Mallat快速算法的基础上,通过编程对图像进行二维离散小波变换,从而加深对二维小波分解和重构的理性和感性认识,并能提高编程能力,为今后的学习和工作奠定基础。实验工具:计算机,matlab6.5 附录:(1)二维小波分解函数%二维小波分解函数function Y=mallatdec2(X,wname,level)%输入:X 载入的二维图像像数值; % level 小波分解次(级)数设定值(如果设定值超过最高可分解次数,按最高分解次数分解)% w
2、name 小波名字wavelet name%输出:Y 多极小波分解后的小波系数矩阵h,g=wfilters(wname,d); %h,g分别为低通和高通滤波器X=double(X);t=1;hh=size(X,2);while t=level %先进行行小波变换 for row=1:hh Y(row,1:hh)=mdec1(X(row,1:hh),h,g) ; end %再进行列小波变换 for col=1:hh temp=mdec1( Y(1:hh,col),h,g); Y(1:hh,col)=temp; endt=t+1;hh=hh/2;X=Y;end%内部子函数,对一行(row)矢量进行
3、一次小波变换,利用fft实现function y=mdec1(x,h,g)%输入:x 行数组% h为低通滤波器% g为高通滤波器%输出: y 进行一级小波分解后的系数lenx=size(x,2);lenh=size(h,2);rh=h(end:-1:1);rrh=zeros(1,(lenx-lenh),rh;rrh=circshift(rrh,1);rg=g(end:-1:1);rrg=zeros(1,(lenx-lenh),rg;rrg=circshift(rrg,1);r1=dyaddown(ifft(fft(x).*fft(rrh,lenx),1); %use para 1r2=dyad
4、down(ifft(fft(x).*fft(rrg,lenx),1);y=r1,r2;(2)二维小波重构函数%二维小波重构函数function Y=mallatrec2(X,wname,level)%输入:X 载入的小波系数矩阵; % level 小波分解次(级)数设定值(如果设定值超过最高可分解次数,按最高分解次数分解)% wname 小波名字wavelet name%输出:Y 重构图像矩阵h,g=wfilters(wname,d); %h,g分别为重构低通滤波器和重构高通滤波器hz=size(X,2);h1=hz/(2(level-1); while h1=hz % 对列变换 for co
5、l=1:h1 temp=mrec1(X(1:h1,col),h,g); X(1:h1,col)=temp; end %再对行变换 for row=1:h1 temp=mrec1(X(row,1:h1),h,g); X(row,1:h1)=temp; end h1=h1*2; endY=X;%内部子函数,对一行小波系数进行重构function y=mrec1(x,h,g)%输入:x 行数组% h为低通滤波器% g为高通滤波器%输出: y 进行一级小波重构后值lenx=size(x,2);r3=dyadup(x(1,1:lenx*0.5),0); %内插零use para 0r4=dyadup(x
6、(1,(lenx*0.5+1):lenx),0); %use para 0y=ifft(fft(r3,lenx).*fft(h,lenx)+ ifft(fft(r4,lenx).*fft(g,lenx); (3)测试函数(主函数)%测试函数(主函数)clc;clear;X=imread(E:Libin的文档CourseCourse_wavelet实验2要求exp2LENA.bmp);%路径 X=double(X);A = mallatdec2(X,sym2,3);image(abs(A);colormap(gray(255);title(多尺度分解图像);Y= mallatrec2(A,sym
7、2,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(重构图像);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)小波分析实验: 实验1 连续小波变换 实验目的:在理解连续小波变换原理的基础上,通过编程实现对一维信号进行连续小波变换,(实验
8、中采用的是墨西哥帽小波),从而对连续小波变换增加了理性和感性的认识,并能提高编程能力,为今后的学习和工作奠定基础。实验工具:计算机,matlab6.5 程序附录:(1) 墨西哥帽小波函数,按照(*)式编程% mexh.mfunction Y=mexh(x)if abs(x)=M+N-1%按照圆周卷积的定义,相关和线性卷积的关系(原始算法和线性卷积的关系)%注意画图理解clc;clear;t1=cputime;load(data.mat);len=length(dat);lna=70; % a(尺度)的长度a=zeros(1,lna); % a 表示尺度b=zeros(1,len); % b 表
9、示位移wfab=zeros(lna,len); %小波系数矩阵mexhab=zeros(1,2*len-1); data=zeros(1,len-1),dat;Ydata=fft( data ,4*len);for s=1:lna for k=1:2*len-1 mexhab(k)=mexh(k-len)/s); end temp=ifft( Ydata.*fft( mexhab,4*len ) ,4*len); wfab(s,:)=real(temp(2*len-1:3*len-2)/sqrt(s); %为什么要取实部而不是取模,我也不是很清楚,可是有种感觉endfigure(1);plot
10、(dat);title(原始数据图);figure(2); %小波系数谱 image(wfab);colormap(pink(128);title(小波系数谱 );cputime-t14)fft快速计算cwt%按照圆周卷积的定义,%注意画图理解clc;clear;t1=cputime;load(data.mat);len=length(dat);lna=70; % a(尺度)的长度a=5;data=dat,zeros(1,len);(4)环境保护验收。Ydata=fft(dat,2*len);for s=1:lna mexhab=zeros(1,2*len);规划环境影响评价技术导则由国务院环
11、境保护主管部门会同国务院有关部门制定;规划环境影响评价技术规范由国务院有关部门根据规划环境影响评价技术导则制定,并抄送国务院环境保护主管部门备案。k=-a*s:1:a*s;mexhab(k+len)=mexh2(k./s); temp=ifft( Ydata.*fft( mexhab,2*len ) ,2*len);B.可能造成重大环境影响的建设项目,应当编制环境影响报告书 wfab(s,:)=real(temp(len+1:2*len)/sqrt(s); %要取实部而不是取模,呵呵end(一)安全预评价依据figure(1);2.量化环境影响后果plot(dat);(6)评价结论。title(原始数据图);figure(2); %小波系数谱 第1页image(wfab);colormap(pink(128);title(小波系数谱 );6.提出安全对策措施建议cputime-t1大纲要求5)保存为mexh2.m(1)基础资料、数据的真实性;function Y=mexh2(x)Y=exp(-x.*x/2).*(1-x.2);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1