1、dwt2函数
进行一次离散小波变换(DWT),可直接用dwt2函数,应用格式为:
[cA,cH,cV,cD]=dwt2(X,'wname');
其中X为输入图像,wname为小波函数名称,例如haar,cA,cH,cV,cD分别为,一次小波变换的近似图像,水平方向细节,竖直方向细节,对角方向细节。
具体分解重构过程可以看这篇文章:图像处理-小波变换,有图示,对于下面说的多次分解也是一样。
举个例子:将下图进行DWT
f=imread('cman.tif');
[A,H,V,D]=dwt2(f,'haar');
subplot(221),imshow(uint8(A));
subplot(222),imshow(uint8(H));
subplot(223),imshow(uint8(V));
subplot(224),imshow(uint8(D));
原图是256的,A,H,V,D都是128*128。
2、wavedec2函数
可以进行N次分解
[C,S]=wavedec2(X,N,Lo_D,Hi_D) 其中X为输入图像,N为分解次数,Lo_D,Hi_D为分解滤波器
{ 可用wfilters函数生成滤波器
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wname),Lo_D,Hi_D,Lo_R,Hi_R分别为低通分解,高通分解,低通重建,高通重建滤波器 }
也可以直接用现有小波函数,wname为小波函数名,如‘haar':
[C,S]=wavedec2(X,N,wname)
C为1中cA,cH,cV,cD矩阵排列成行,构成的1*n矩阵,n为X的像素数量
S的第一行就是cA的size,第二行是cH,cV,cD的size,最后一行是X的size
3、waveinfo函数
waveinfo(wname)
可以输出有关该小波函数的具体信息。
4、wavefun函数
[phi,psi,xval]=wavefun(wname,iter)
phi,psi分别为尺度函数小波函数的数字近似值,xval就是坐标点向量1*m,m为2^(iter)+2
iter控制迭代次数从而决定精度。
[phi1,psi1,phi2,psi2,xval]=wavefun(wname,iter)
phi2,psi2是重建尺度和小波函数,其他同上。
官方解释文档:
https://ww2.mathworks.cn/help/wavelet/ref/wavefun.html
关于小波变换原理的讲解可以看下面文章:
https://zhuanlan.zhihu.com/p/44215123