•i>oi_R1xherec&nstnKboaL«v-passfiber
・i_R,Therrcon^oructicohigbp章鹑fiher
Ataihbkmh«gpuJorbiwho戡ndwivdctTunica'丁辭口肚主*arclimdmtheublcbek?
^'
Wiv«E«tFikiiiltes
Daubwhiei
・dbl*sr'ha«r1r*^2*rdblOBr*”
C^iflets
l
'coifl*t*.*t1coi£51
Symlets
•
■sym21f….声1syro81#■…J3yrn.4S*
;DU<«reXlever
dm^yrl
biorl-1','biorl.3\'biorl.S
・bicrB.l1f*bior3.3\%込医3・h・・bioc3・T
Tbicr3,9rf'bior^,4\'biorS.S^'biorG.S7
wfilters(•vnaiKc*f1type-*Irehsnsthefoliatingfitters.
Wname可指定为列表中的任意一种小波,直接调用
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters('wname')
会返回分解和综合滤波器系数。
如果只想返回其中的一些而不是全部,可以调用
[F1,F2]=wfilters('wname','type')
其中’type'可指定为4种类型,每种类型的具体意义详见matlabwfilters
帮助。
查看具体小波的信息
waveinfo(‘wname)
获得一个标准的正交变换/双正交变换的尺度和小波函数(数字近似值)
[PHI,PSI,XVAL]=wavefun('wname',ITER)
[PHI1,PSI1,PHI2,PSI2,XVAL]=wavefun('wname',ITER)
例如
%Setnumberofiterationsandwaveletname.
iter=10;
wav='sym4:
%Computeapproximationsofthewaveletfunctionusingthe
%cascadealgorithm.
fori=1:
iter
[phi,psi,xval]=wavefun(wav,i);
plot(xval,psi);
holdon
end
title(['Approximationsofthewavelet',wav,...
'for1to',num2str(iter),'iterations']);
holdoff
如果已知小波分解滤波器系数,计算小波变换的最简单方法就是
[C,S]=wavedec2(X,N,'wname')
[C,S]=wavedec2(X,N丄o_D,Hi_D)
反过来,已知小波综合滤波器系数,计算反小波变换,只需
X=waverec2(C,S,'wname')
X=waverec2(C,S,Lo_R,Hi_R)
%图片的小波分解
clearall
clc
im=imread('../../std_images/lena.bmp);%灰度
im=double(im);
[Lo_D,Hi_D]=wfilters('haar;'d');
[C,S]=wavedec2(im,1,Lo_D,Hi_D);
isize=prod(S(1,:
));
%
cA=C(1:
isize);
cH=C(isize+(1:
isize));
cV=C(2*isize+(1:
isize));
cD=C(3*isize+(1:
isize));
%
cA=reshape(cA,S(1,1),S(1,2));
cH=reshape(cH,S(2,1),S(2,2));
cV=reshape(cV,S(2,1),S(2,2));cD=reshape(cD,S(2,1),S(2,2));%
figure,colormapgraysubplot(221),imagesc(cA);subplot(222),imagesc(cH);subplot(223),imagesc(cV);subplot(224),imagesc(cD);
其中C是小波变换后的结果数据,以一维矢量的形式组织,S是二维数组,记录了C中数据的分布形式,详见matlab的帮助文档。
此外,dwtmode可以设定输入的边界处理方式。
提取小波的系数。
前面使用的wavedec2得到的[C,S]不是非常的直观,可以利用小波工具箱中的函数appcoef2和detcoef2来提取近似矩阵和的n级的某一个细节矩阵。
A=即pcoef2(C,S,'wname',N)
A=appcoef2(C,S,'wname')
D=detcoef2(O,C,S,N)
针对特定的小波系数矩阵进行阈值化处理
NC=wthcoef2('type',C,S,N,T,SORH)
NC=wthcoef2('type',C,S,N)
NC=wthcoef2('a',C,S)
NC=wthcoef2('t',C,S,N,T,SORH)
使用wave2gray来显示小波分解的结果
%使用wave2gray显示小波分解的结果,来自dipum_1.1.4toolbox
clearallclc
im=imread('../../std_images/lena.bmp);%灰度
im=double(im);
[Lo_D,Hi_D]=wfilters('haar;'d');
[C,S]=wavedec2(im,2,Lo_D,Hi_D);
wave2gray(C,S);
关于wave2gray更多用法详见dipum_1.1.4toolbox的说明文档[官方网站]。
小波综合(重建):
waverec2
X=waverec2(C,S,'wname')
X=waverec2(C,S,Lo_R,Hi_R)
[C,S]是使用小波分解函数wavedec2得到的小波矢量和矢量描述矩阵,或者符合这种规定形式的数据。
返回X是实数图像矩阵,由于计算误差,可能需要经过一些处理才能正常显示。
%小波综合
clearall
clc
im=imread('../../std_images/lena.bmp);%灰度
im=double(im);
[Lo_D,Hi_D]=wfilters('haar;'d');
[C,S]=wavedec2(im,2,Lo_D,Hi_D);
X=waverec2(C,S,'haar');
%或者
%[Lo_R,Hi_R]=wfilters('haar','r');
%X=waverec2(C,S,Lo_D,Hi_D);
X=(X-min(X(:
)))/(max(X(:
))-min(X(:
)));
figure,imshow(X);
—凶
F>1«liltVioImm*1ToolsViodo*Kelp
□11■□