📄 nstdhaardemo.m
字号:
function nstdhaardemo(imgname)
% nstdhaardemo haar小波三级非标准规格化分解与重构演示程序
% nstdhaardemo(imgname)
% 本程序作用:载入图像文件,显示图像3级非标准haar小波规格化分解与重构过程
% 输入: imgname ----要装载的图像名称(真彩色,灰度图,索引图)
% 缺省图像为color256.png
if nargin==0
imgname='color256.png';
end
% 读入的X中含有被装载的图像信号,map中含有被装载的color
[X,map] = imread(imgname);
if ndims(X)==3
imgcolor=1;
else
imgcolor=0;
end
X=double(X);
h=size(X,1);
%画出原始图像
figure(1);
subplot(4,4,1);imshow(uint8(X),map);
title(' haar小波3级非标准规格化分解过程');
xlabel('原始图像');
axis square
position=2;
A=X;
%依次序画出3级非标准规格化分解过程中对应的行变换,列变换图像
for i=1:3
A011=decompose(A,imgcolor,1,1,h);
subplot(4,4,position);imshow(uint8(A011),map);axis square
A012=decompose(A011,imgcolor,1,2,h);
subplot(4,4,position+4);imshow(uint8(A012),map);axis square
xlabel(strcat(int2str(i),'级分解图像'));
A=A012;
h=h/2;
position=position+5;
end
xlabel('haar小波3级非标准规格化分解图象');
%画出3级分解图像
figure(2);
subplot(4,4,1);imshow(uint8(A),map);
title('haar小波3级非标准规格化分解重构过程');
xlabel('3级分解图像');
axis square
position=2;
%依次序画出3级非标准规格化分解后重构过程中对应的行变换,列变换图像
if imgcolor
h=size(A(:,:,1),1)/4;
else
h=size(A,1)/4;
end
for i=1:3
RX11=reconstruct(A,imgcolor,1,1,h);
subplot(4,4,position);imshow(uint8(RX11),map);axis square
RX12=reconstruct(RX11,imgcolor,1,2,h);
subplot(4,4,position+4);imshow(uint8(RX12),map);axis square
xlabel(strcat(int2str(3-i),'级重构图像'));
A=RX12;
h=h*2;
position=position+5;
end
xlabel('haar小波3级非标准分解后重构图像');
figure(1);
%--------------------------------------------------
% 内部程序
%--------------------------------------------------
function C=decompose(A,imgcolor,level,roworcol,h)
if imgcolor
Ar=A(:,:,1);
Ag=A(:,:,2);
Ab=A(:,:,3);
Cr=nstdhaardec2(Ar,level,roworcol,h);
Cg=nstdhaardec2(Ag,level,roworcol,h);
Cb=nstdhaardec2(Ab,level,roworcol,h);
C(:,:,1)=Cr;
C(:,:,2)=Cg;
C(:,:,3)=Cb;
else
C=nstdhaardec2(A,level,roworcol,h);
end
%--------------------------------------------------
% 内部程序
%--------------------------------------------------
function C=reconstruct(A,imgcolor,level,roworcol,h)
if imgcolor
Ar=A(:,:,1);
Ag=A(:,:,2);
Ab=A(:,:,3);
Cr=nstdhaarrec2(Ar,level,roworcol,h);
Cg=nstdhaarrec2(Ag,level,roworcol,h);
Cb=nstdhaarrec2(Ab,level,roworcol,h);
C(:,:,1)=Cr;
C(:,:,2)=Cg;
C(:,:,3)=Cb;
else
C=nstdhaarrec2(A,level,roworcol,h);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -