使用 MATLAB 小波工具箱进行小波分析:
如上图所示的小波分解过程,可以调用 wfilters 来获得指定小波的分解和综合滤波器系数,例如:
以上例子,得到’db5’小波的分解和综合滤波器系数,并显示出来。
下面是wfilters的具体用法:
Wname 可指定为列表中的任意一种小波,直接调用
[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('wname')
会返回分解和综合滤波器系数。
如果只想返回其中的一些而不是全部,可以调用
[F1,F2] = wfilters('wname','type')
其中’type’可指定为4种类型,每种类型的具体意义详见matlab wfilters 帮助。
查看具体小波的信息
waveinfo(‘wname’)
获得一个标准的正交变换/双正交变换的尺度和小波函数(数字近似值)
[PHI,PSI,XVAL] = wavefun('wname',ITER)
[PHI1,PSI1,PHI2,PSI2,XVAL] = wavefun('wname',ITER)
例如
如果已知小波分解滤波器系数,计算小波变换的最简单方法就是
[C,S] = wavedec2(X,N,'wname')
[C,S] = wavedec2(X,N,Lo_D,Hi_D)
反过来,已知小波综合滤波器系数,计算反小波变换,只需
X = waverec2(C,S,'wname')
X = waverec2(C,S,Lo_R,Hi_R)
subplot(224),imagesc(cD);
其中C是小波变换后的结果数据,以一维矢量的形式组织,S是二维数组,记录了C中数据的分布形式,详见matlab 的帮助文档。
此外,dwtmode可以设定输入的边界处理方式。
提取小波的系数。
前面使用的wavedec2得到的[C,S]不是非常的直观,可以利用小波工具箱中的函数 appcoef2和detcoef2来提取近似矩阵和的n级的某一个细节矩阵。
A = appcoef2(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(C,S);
关于wave2gray更多用法详见dipum_1.1.4 toolbox 的说明文档[官方网站]。
小波综合(重建):waverec2
X = waverec2(C,S,'wname')
X = waverec2(C,S,Lo_R,Hi_R)
[C,S]是使用小波分解函数wavedec2得到的小波矢量和矢量描述矩阵,或者符合这种规定形式的数据。
返回X是实数图像矩阵,由于计算误差,可能需要经过一些处理才能正常显示。
欢迎来主页
精品文档。