该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
x=imread('F:/flower.bmp');
wname='db5'
[Lo_D,Hi_D] = wfilters(wname);
lf=length(Lo_D);
% 画出原始图像
imshow(x);title('Original Image');
% 标明图像大小
[r,c]=size(x);
xlabel(['Size : ',num2str(r),'*',num2str(c)]);
% 将矩阵x的数据格式转换为适合数值处理的double格式
xd=double(x);
[rx,cx]=size(x);
[o2sa,f1sa,rsx]=sizcoef([rx,cx],lf,N); a=[o2sa,f1sa,rsx]
coef=[];
scf=[rx,cx];
for i=1:N
[cA,cV,cH,cD]=mydwt2(xd,Lo_D,Hi_D); % 第 i 级小波分解
xd=cA; % 将第 i 级分解得到的低频系数矩阵作为第 i+1 级分解的源矩阵
outmp={cV;cH;cD}; % 将第 i 级分解得到的高频系数矩阵cV,cH,cD存入细胞矩阵 outmp
scf=[size(cV);scf]; % 将各级分解系数矩阵的大小存入矩阵 scf
coef=[outmp;coef]; % 将细胞矩阵 outmp 存入输出矩阵 coef,coef将由空矩阵变为细胞矩阵
end
% 迭代结束后,矩阵 coef 中保存的是各级分解中的高频系数矩阵
% 故需将迭代后得到的矩阵 cA,即第 dim 级低频矩阵存入矩阵 coef
coef=[cA;coef];
scf=[size(cA);scf];
plotcoef(N,wname,coef);
plotcoef2one(N,wname,coef,rsx);
rsx=rsx(end:-1:1,:);
tmpcoef=[];
tA=wkeep(coef{1},rsx(1,:),'c');
tmpcoef=tA;
tA=uint8(tA); tA(end,:)=255; tA(:,end)=255;
for j=1:N
tV=wkeep(coef{(j-1)*3+2},rsx(j,:),'c');
tH=wkeep(coef{(j-1)*3+3},rsx(j,:),'c');
tD=wkeep(coef{(j-1)*3+4},rsx(j,:),'c');
tV=uint8(tV); tH=uint8(tH); tD=uint8(tD);
if j
tV(end,:)=255; tV(:,end)=255;
tH(end,:)=255; tH(:,end)=255;
tD(end,:)=255; tD(:,end)=255;
else
tV(end,:)=255; tH(:,end)=255;
end
tmpcoef=[tA,tV;tH,tD];stc=size(tmpcoef);
if stc>=rsx(j+1,:)
tA=tmpcoef(1:rsx(j+1,1),1:rsx(j+1,2));
else
tmpcoef=tmpcoef([1:end-1,end-2:end-1],[1:end-1,end-2:end-1]);
tA=tmpcoef(1:rsx(j+1,1),1:rsx(j+1,2));
end
tA=uint8(tA); tA(end,:)=255; tA(:,end)=255;
end
figure;
sc=tA;
[rx,cx]=size(sc);
imshow(sc);
xlabel(['Size : ',num2str(rx),'*',num2str(cx)]);
title(['Wavelet Decomposition -- Wavelet Type: ',wname,' , Levels: ',num2str(N)]);
% 首先建立一个名为“Wavelet Decomposition -- Wavelet Type: , Levels: ”的图像窗口
figure('Name',['Wavelet Decomposition -- Wavelet Type: ',wname,' , Levels: ',num2str(N)]);
% 图像的第1行显示低频系数,置中,左右两个subplot为空
subplot(N+1,3,2);
yt=uint8(coef{1})
调试之后说 调用“sizcoef”时,未对输出参数“02sa”(可能还包括其他参数赋值)