您的位置:首页 > 编程语言 > MATLAB

一个单尺度小波分解的程序-MATLAB版

2014-07-02 15:51 363 查看
function [appcoef,horicoef,vertcoef,diacoef]=wavedwt(x,N,wname)error(nargchk(3,3,nargin));[ld,hd]=wfilters(wname,'d');x=rgb2gray(x);x=double(x);appcoe=x;dprow=[];hprow=[];for k=1:N[height,width]=size(appcoe);for i=1:height[lc,hc]=dwt(appcoe(i,:),ld,hd,'row');dprow=[dprow;lc];hprow=[hprow;hc];end;appcoe=[dprow,hprow];appcoef=[];vertcoef=[];horicoef=[];diacoef=[];[row,col]=size(appcoe);for j=1:coltemp=appcoe(:,j);[lc,hc]=dwt(temp,ld.',hd.','colnum');appcoef=[appcoef,lc];vertcoef=[vertcoef,hc];end;last=[appcoef;vertcoef];appcoe=appcoef;end;temp1=mat2gray(last)imshow(temp1);function [lc,hc]=dwt(h_or_wcoef,lpd,hpd,rwname)lc=conv(h_or_wcoef,lpd);lc=dowsample(lc,rwname);hc=conv(h_or_wcoef,hpd);hc=dowsample(hc,rwname);function dos=dowsample(coe,rwname)lengt=length(coe);n=floor(lengt/2);if strcmp(rwname,'row')dos=zeros(1,n);else dos=zeros(n,1);end;k=1:n;dos(k)=coe(2*k);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: