二维小波变换算法程序

时间:2021-06-01 22:20:34

appcoef2函数

% 当前延拓模式是补零
% 装载原始图像
load sinsin;
% 绘制原始图像
subplot(2,2,1);
image(X);
colormap(map);
title('原始图像');
% X 包含装载的图像
% 使用db1对X进行尺度为2的分解
[c,s] = wavedec2(X,2,'db1');
sizex = size(X)
sizec = size(c)
val_s = s
% 提取尺度为2时的低频系数
ca2 = appcoef2(c,s,'db1',2);
sizeca2 = size(ca2)
% 绘制尺度为2时的低频图像
subplot(2,2,2);
image(ca2);
colormap(map);
title('尺度为2时的图像');
% 计算尺度为1时的低频系数
ca1 = appcoef2(c,s,'db1',1);
sizeca1 = size(ca1)
% 绘制尺度为1时的低频图像
subplot(2,2,3);
image(ca1);
colormap(map);
title('尺度为1时的图像');
#################################

detcoef2函数

% 当前延拓模式是补零
% 装载原始图像
load woman;
% X 包含原始图像
% 绘制原始图像
subplot(3,3,1);
image(X);
colormap(map);
title('原始图像');

% 使用db1对X进行尺度为2的分解
[c,s] = wavedec2(X,2,'db1');
sizex = size(X)
sizec = size(c)
val_s = s
% 对于各个方向,从小波分解结构[c,s]中提取尺度为2时的高频系数
[chd2,cvd2,cdd2] = detcoef2('all',c,s,2);
sizecd2 = size(chd2)
% 绘制尺度为2时高频图像
subplot(3,3,4);
image(chd2);
title('尺度为2时高频图像的水平部分');
subplot(3,3,5);
image(cvd2);
title('尺度为2时高频图像的垂直部分');
subplot(3,3,6);
image(cdd2);
title('尺度为2时高频图像的对角部分');
% 对于各个方向,从小波分解结构[c,s]中提取尺度为1时的高频系数
[chd1,cvd1,cdd1] = detcoef2('all',c,s,1);
sizecd1 = size(chd1)
% 绘制尺度为1时高频图像
subplot(3,3,7);
image(chd1);
title('尺度为1时高频图像的水平部分');
subplot(3,3,8);
image(cvd1);
title('尺度为1时高频图像的垂直部分');
subplot(3,3,9);
image(cdd1);
title('尺度为1时高频图像的对角部分');
#################################

idwt2函数

% 当前延拓模式是补零
% 装载原始图像
load sinsin;
% X 包含装载的图像
% 绘制原始图像
subplot(1,2,1);
image(X);
colormap(map);
title('原始图像');
sX = size(X);
% 使用db4对X进行单尺度分解
[cA1,cH1,cV1,cD1] = dwt2(X,'db4');
% 利用尺度为1时的系数直接重构
A0 = idwt2(cA1,cH1,cV1,cD1,'db4',sX);
% 绘制重构图像
subplot(1,2,2);
image(A0);
title('重构图像');
% 检查重构效果
max(max(abs(X-A0)))
#################################

iswt2函数

% 载入原始图像
load sinsin;
% X 包含装载的图像
% 绘制原始图像
subplot(2,2,1);
image(X);
colormap(map);
title('原始图像');
% 使用sym4对X在第3层进行SWT分解
swc = swt2(X,3,'sym4');
% 第二种用法
[ca,chd,cvd,cdd] = swt2(X,3,'sym4');
% 从小波分解结构swc,重构s
a0 = iswt2(swc,'sym4');
% 绘制重构图像1
subplot(2,2,3);
image(a0);
colormap(map);
title('重构图像1');
% 第二种用法
a0 = iswt2(ca,chd,cvd,cdd,'sym4');
% 绘制重构图像2
subplot(2,2,4);
image(a0);
colormap(map);
title('重构图像2');
% 检查重构的效果
err = max(max(abs(X-a0)))
errbis = max(max(abs(X-a0bis)))
#################################

wavedec2函数

% 当前延拓模式是补零
% 装载原始图像
load woman;
% X 包含装载的图像
% 使用db1对X进行尺度为2时的小波分解
[c,s] = wavedec2(X,2,'db1');
% 分解结构
sizex = size(X)
sizec = size(c)
val_s = s
#################################

swt2函数

%载入原始图像
load sinsin;
% 使用sym4在第3层对X进行SWT分解
[ca,chd,cvd,cdd] = swt2(X,3,'sym4');
whos
#################################

upcoef2函数

% 当前延拓模式是补零
% 装载原始图像
load sinsin;
% X 包含装载的图像
subplot(3,2,1);
image(X);
colormap(map);
title('原始图像');
% 使用db4对X进行尺度为2的分解
[c,s] = wavedec2(X,2,'db4');
% 由系数重构第1层低频和细节部分
% 也可以使用wrcoef2完成,或者使用下面的步骤等价实现
% Step 1: 从分解结构[c,s]中提取系数
% Step 2: 使用upcoef2进行重构
siz = s(size(s,1),:);
ca1 = appcoef2(c,s,'db4',1);
a1 = upcoef2('a',ca1,'db4',1,siz);
% 绘制低频重构图
subplot(3,2,3);
image(a1);
colormap(map);
title('低频重构图');
chd1 = detcoef2('h',c,s,1);
hd1 = upcoef2('h',chd1,'db4',1,siz);
% 绘制高频水平部分重构图
subplot(3,2,4);
image(hd1);
colormap(map);
title('高频水平部分重构图');
cvd1 = detcoef2('v',c,s,1);
vd1 = upcoef2('v',cvd1,'db4',1,siz);
% 绘制高频垂直部分重构图
subplot(3,2,5);
image(vd1);
colormap(map);
title('高频垂直部分重构图');
cdd1 = detcoef2('d',c,s,1);
dd1 = upcoef2('d',cdd1,'db4',1,siz);
% 绘制高频对角部分重构图
subplot(3,2,6);
image(dd1);
colormap(map);
title('高频对角部分重构图');
#################################

upwlev2函数

% 当前延拓模式是补零
% 装载原始图像
load woman;
% X 包含装载的图像
% 使用db1在尺度为2时进行对X分解
[c,s] = wavedec2(X,2,'db1');
sc = size(c)
val_s = s
% 对小波分解结构[c,s]进行一步重构
[nc,ns] = upwlev2(c,s,'db1');
snc = size(nc)
val_ns = ns
#################################

waverec2函数

% 当前延拓模式是补零
% 装载原始图像
load sinsin;
% X 包含装载的图像
% 绘制原始图像
subplot(1,2,1);
image(X);
colormap(map);
title('原始图像');
% 使用sym4对X进行尺度为2时的小波分解
[c,s] = wavedec2(X,2,'sym4');
% 由小波分解结构[c,s]重构X
a0 = waverec2(c,s,'sym4');
% 绘制重构图像
subplot(1,2,2);
image(a0);
colormap(map);
title('重构图像');
% 检查重构效果
max(max(abs(X-a0)))
#################################

wenergy2函数

load detail
[C,S] = wavedec2(X,2,'sym4');
[Ea,Eh,Ev,Ed] = wenergy2(C,S)
[Ea,EDetails] = wenergy2(C,S)
#################################

wrcoef2函数

% 当前延拓模式是补零
% 装载图像
load sinsin;
% X包含载入的图像
% 绘制原始图像
figure(1);
subplot(2,2,1);
image(X);
colormap(map);
title('原始图像');
% 使用sym5对X进行尺度为2的分解
[c,s] = wavedec2(X,2,'sym5');
% 从小波分解结构[c,s]进行尺度为1和2时的低频重构
a1 = wrcoef2('a',c,s,'sym5',1);
a2 = wrcoef2('a',c,s,'sym5',2);
% 绘制尺度为1时的低频图像
subplot(2,2,3);
image(a1);colormap(map);
title('尺度为1时的低频图像');
% 绘制尺度为2时的低频图像
subplot(2,2,4);
image(a2);colormap(map);
title('尺度为2时的低频图像');

% 从小波分解结构[c,s]在尺度为2时重构高频
% 'h' 是水平方向
% 'v' 是垂直方向
% 'd' 是对角方向
hd2 = wrcoef2('h',c,s,'sym5',2);
vd2 = wrcoef2('v',c,s,'sym5',2);
dd2 = wrcoef2('d',c,s,'sym5',2);
% 绘制高频图像
figure(2);
subplot(2,2,1);
image(hd2);colormap(map);
title('尺度为2时的水平高频图像');
subplot(2,2,2);
image(vd2);colormap(map);
title('尺度为2时的垂直高频图像');
subplot(2,2,3);
image(dd2);colormap(map);
title('尺度为2时的对角高频图像');
% 验证这些图像的长度都是sX
sX = size(X)
sa1 = size(a1)
shd2 = size(hd2)
#################################

二维离散小波变换1函数

% 装载图像
load belmont2;
% 显示图像
image(X);
colormap(map);
colorbar;
% 执行图像的单尺度小波分解
[cA1,cH1,cV1,cD1] = dwt2(X,'bior3.7');
% 由系数重构低频和高频部分
A1 = upcoef2('a',cA1,'bior3.7',1);
H1 = upcoef2('h',cH1,'bior3.7',1);
V1 = upcoef2('v',cV1,'bior3.7',1);
D1 = upcoef2('d',cD1,'bior3.7',1);
% 显示低频和高频部分
figure(2);
colormap(map);
nbcol = size(map,1)
subplot(2,2,1); image(wcodemat(A1,nbcol));
title('低频A1')
subplot(2,2,2); image(wcodemat(H1,nbcol));
title('水平高频H1')
subplot(2,2,3); image(wcodemat(V1,nbcol));
title('垂直高频V1')
subplot(2,2,4); image(wcodemat(D1,nbcol));
title('对角高频D1')
% 由小波逆变换恢复原图像信号
Xsyn = idwt2(cA1,cH1,cV1,cD1,'bior3.7');
% 图像的多尺度二维小波分解
[C,S] = wavedec2(X,2,'bior3.7');
% 提取系数的低频和高频部分
cA2 = appcoef2(C,S,'bior3.7',2);
% 重构第二层的低频信号
A2 = wrcoef2('a',C,S,'bior3.7',2);
% 重构第1、2层的高频信号
H1 = wrcoef2('h',C,S,'bior3.7',1);
V1 = wrcoef2('v',C,S,'bior3.7',1);
D1 = wrcoef2('d',C,S,'bior3.7',1);
H2 = wrcoef2('h',C,S,'bior3.7',2);
V2 = wrcoef2('v',C,S,'bior3.7',2);
D2 = wrcoef2('d',C,S,'bior3.7',2);
% 显示多尺度二维分解结果
figure(3)
colormap(map);
subplot(2,4,1);image(wcodemat(A1,nbcol));
title('低频A1')
subplot(2,4,2);image(wcodemat(H1,nbcol));
title('水平高频H1')
subplot(2,4,3);image(wcodemat(V1,nbcol));
title('垂直高频V1')
subplot(2,4,4);image(wcodemat(D1,nbcol));
title('对角高频D1')
subplot(2,4,5);image(wcodemat(A2,nbcol));
title('低频A2')
subplot(2,4,6);image(wcodemat(H2,nbcol));
title('水平高频H2')
subplot(2,4,7);image(wcodemat(V2,nbcol));
title('垂直高频V2')
subplot(2,4,8);image(wcodemat(D2,nbcol));
title('对角高频D2')
% 重构原始图像信号
X0 = waverec2(C,S,'bior3.7');
% 显示重构得到的图像
figure(4)
image(X0);
colormap(map);
#################################

二维离散小波变换2函数

% 当前延拓模式是补零
% 装载原始图像
load sinsin;
% X 包含原始图像
% 绘制原始图像
figure(1);
image(X);
colormap(map);
title('原始图像');
% map 包含原始彩图
nbcol = size(map,1);
% 使用db1对X进行单尺度分解
[cA1,cH1,cV1,cD1] = dwt2(X,'db1');
% 绘制各分解系数图像
figure(2);
subplot(2,2,1);
image(cA1);colormap(map);
title('db1低频系数图像');
subplot(2,2,2);
image(cH1);
title('db1水平高频图像');
subplot(2,2,3);
image(cV1);
title('db1垂直高频图像');
subplot(2,2,4);
image(cD1);
title('db1对角高频图像');
% 通过图像量化编码改善图像质量
cod_X = wcodemat(X,nbcol);
cod_cA1 = wcodemat(cA1,nbcol);
cod_cH1 = wcodemat(cH1,nbcol);
cod_cV1 = wcodemat(cV1,nbcol);
cod_cD1 = wcodemat(cD1,nbcol);
dec2d = [...
        cod_cA1,     cod_cH1;    ...
        cod_cV1,     cod_cD1;    ...
        ];
% 绘制各分解系数图像
figure(3);
subplot(2,2,1);
image(cod_cA1);colormap(map);
title('编码后低频系数图像');
subplot(2,2,2);
image(cod_cH1);
title('编码后水平高频图像');
subplot(2,2,3);
image(cod_cV1);
title('编码后垂直高频图像');
subplot(2,2,4);
image(cod_cD1);
title('编码后对角高频图像');
#################################

二维离散小波变换3函数

% 装载图像信号
load belmont2;
% 完成图像的单层次小波分解
[swa,swh,swv,swd] = swt2(X,1,'db1');
% 显示低频和高频系数
map = pink(size(map,1));
figure(1)
colormap(map)
nbcol = size(map,1)
subplot(2,2,1), image(wcodemat(swa,nbcol));
title('低频系数swa')
subplot(2,2,2), image(wcodemat(swh,nbcol));
title('水平方向高频系数swh')
subplot(2,2,3), image(wcodemat(swv,nbcol));
title('垂直方向高频系数swv')
subplot(2,2,4), image(wcodemat(swd,nbcol));
title('对角方向高频系数swd')
% 通过平稳小波逆变换重构图像
A0 = iswt2(swa,swh,swv,swd,'db1');
nulcfs = zeros(size(swa));
% 由分解系数重构第一层的低频和高频部分
A1 = iswt2(swa,nulcfs,nulcfs,nulcfs,'db1');
H1 = iswt2(nulcfs,swh,nulcfs,nulcfs,'db1');
V1 = iswt2(nulcfs,nulcfs,swv,nulcfs,'db1');
D1 = iswt2(nulcfs,nulcfs,nulcfs,swd,'db1');
% 显示第一层的分解结果,包括显示低频和高频部分
figure(2)
colormap(map)
subplot(2,2,1), image(wcodemat(A1,nbcol));
title('低频 A1')
subplot(2,2,2), image(wcodemat(H1,nbcol));
title('水平高频H1')
subplot(2,2,3), image(wcodemat(V1,nbcol));
title('垂直高频V1')
subplot(2,2,4), image(wcodemat(D1,nbcol));
title('对角高频D1')
% 图像的多层二维离散平稳小波分解
[swa,swh,swv,swd] = swt2(X,3,'db1');
% 显示多层二维离散平稳小波分解结果
figure(3)
colormap(map)
kp = 0;
for i = 1:3
subplot(3,4,kp+1), image(wcodemat(swa(:,:,i),nbcol));
title(['低频系数:level ',num2str(i)])
subplot(3,4,kp+2), image(wcodemat(swh(:,:,i),nbcol));
title(['水平高频系数:level ',num2str(i)])
subplot(3,4,kp+3), image(wcodemat(swv(:,:,i),nbcol));
title(['垂直高频系数:level ',num2str(i)])
subplot(3,4,kp+4), image(wcodemat(swd(:,:,i),nbcol));
title(['对角高频系数:level ',num2str(i)])
kp = kp + 4;
end
% 从系数中重构第3层的低频信号
mzero = zeros(size(swd));
A = mzero;
A(:,:,3) = iswt2(swa,mzero,mzero,mzero,'db1');
% 由系数重构第1、2、3层的高频信号
H = mzero; V = mzero;
D = mzero;
for i = 1:3
swcfs = mzero; swcfs(:,:,i) = swh(:,:,i);
H(:,:,i) = iswt2(mzero,swcfs,mzero,mzero,'db1');
swcfs = mzero; swcfs(:,:,i) = swv(:,:,i);
V(:,:,i) = iswt2(mzero,mzero,swcfs,mzero,'db1');
swcfs = mzero; swcfs(:,:,i) = swd(:,:,i);
D(:,:,i) = iswt2(mzero,mzero,mzero,swcfs,'db1');
end
% 重构第1、2层的低频部分
A(:,:,2) = A(:,:,3) + H(:,:,3) + V(:,:,3) + D(:,:,3);
A(:,:,1) = A(:,:,2) + H(:,:,2) + V(:,:,2) + D(:,:,2);
figure(4)
% 显示第1、2、3层的低频和高频部分
colormap(map)
kp = 0;
for i = 1:3
subplot(3,4,kp+1), image(wcodemat(A(:,:,i),nbcol));
title(['低频:level ',num2str(i)])
subplot(3,4,kp+2), image(wcodemat(H(:,:,i),nbcol));
title(['水平高频:level ',num2str(i)])
subplot(3,4,kp+3), image(wcodemat(V(:,:,i),nbcol));
title(['垂直高频:level ',num2str(i)])
subplot(3,4,kp+4), image(wcodemat(D(:,:,i),nbcol));
title(['对角高频:level ',num2str(i)])
kp = kp + 4;
end

Microsoft VBScript 运行时错误 错误 '800a0005'

无效的过程调用或参数: 'Mid'

/dept7/wavelet/Inc/syscode.asp,行 2028

#################################