政协委员任免简历:二维小波变换算法程序

来源:百度文库 编辑:中财网 时间:2024/04/29 18:36:22

二维小波变换算法程序目录

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

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

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