专题讲座—小波变换主要内容1.引言2.时频展开3.使用Matlab4.若干应用场景引言•傅里叶变换应用非常广泛的原因可能是:直观性数学上的完美性计算上的有效性•仍有局限性:在整个时间轴上积分,表示了信号的全局特征(变换后,时间是亚元)•如果需要分析信号的局部信号怎么办?•乐谱•油田勘探•……时频展开时频展开•希望定义一种工具能帮助计算信号x(t)的瞬时傅里叶变换,记为X(ґ,F)•如何定义一组能够表现出信号瞬时性的基函数,该基函数必须包括两个基本变量时间ґ和频率F时频展开主要内容1.短时傅里叶变换STFT2.Gabor变换GT3.连续小波变换CWT4.小波变换WT短时傅里叶变换STFT确定信号局部频率特性的比较简单的方法是在时刻ґ附近对信号加窗,然后计算傅里叶变换。X(ґ,F)=STFT{x(t)}=FT{x(t)w(t-ґ)}其中,w(t-ґ)是一个以时刻ґ为中心的窗函数,注意信号x(t)中的时间t和X(ґ,F)中的ґ。窗函数w根据ґ进行了时移,扩展傅里叶变换表达式2(,)()()jFtXFxtwtedt短时傅里叶变换操作示意问题•实际运用中处理的问题与上述描述恰好相反:给定一个信号,希望能够在时域和频域上定位信号发生的事件,因此时间ґ和频率F都是不确定的,即按上述的分析不可行(结果不确定或有误差)•分析中,分辨率的损失是由于窗函数w(t)的时域宽度及傅里叶变换的频率带宽所决定的;•信号不能同时在时域和频域准确定位测不准定理Gabor变换引言•STFT将一个连续时间变量t的信号x(t)变换为有两个连续时间变量的X(ґ,F)•意味着STFT包含了很多的冗余信息•将频率F离散化,F=Kf0•将时间离散化,在ґ=mT0采样Gabor变换:X[m,k]=X(mT0,kF0)Gabor变换•通过Gabor变换,信号x(t)被展开为:0,,2,0()[,]()()()mkmkjkFtmkxtXmketetwtmTe其中:•Gabor变换公式:0______________20[,]()()jkFtXmkxtwtmTedt小波变换是强有力的时频分析(处理)工具,是在克服傅立叶变换缺点的基础上发展而来的。已成功应用于很多领域,如信号处理、图像处理、模式识别等。小波变换的一个重要性质是它在时域和频域均具有很好的局部化特征,它能够提供目标信号各个频率子段的频率信息。这种信息对于信号分类是非常有用的。小波变换一个信号为一个小波级数,这样一个信号可由小波系数来刻画。小波变换数学显微镜部分小波波形小波基函数12,,))(),0,),aatttaaRata将小波母函数(进行伸缩和平移,令伸缩因子(称尺度因子)为a,平移因子为,则:(则称(是依赖参数的小波基函数。将信号在这个函数系上分解,就得到连续小波变换小波分析•小波变换通过平移母小波(motherwavelet)可获得信号的时间信息,而通过缩放小波的宽度(或者叫做尺度)可获得信号的频率特性。对母小波的缩放和平移操作是为了计算小波的系数,这些系数代表小波和局部信号之间的相互关系。–连续小波变换–离散小波变换连续小波变换2____________,L()()1(,)(),)()()aRxtxtCWTtWaxttxtdtaaCWT:ContinueWaveletTransform将任意(R)空间中的在小波基下进行展开,称这种展开为的连续小波变换(where:a-缩放因子ґ-时间平移注意:在CWT中,scale和position是连续变化的CWT的变换过程1.把小波ψ(t)和原始信号f(t)的开始部分进行比较2.计算系数c。该系数表示该部分信号与小波的近似程度。系数c的值越高表示信号与小波越相似,因此系数c可以反映这种波形的相关程度3.把小波向右移,距离为k,得到的小波函数为ψ(t-k),然后重复步骤1和2。再把小波向右移,得到小波ψ(t-2k),重复步骤1和2。按上述步骤一直进行下去,直到信号f(t)结束4.扩展小波ψ(t),例如扩展一倍,得到的小波函数为ψ(t/2)5.重复步骤1~4CWT的变换过程图示CWT小结•小波的缩放因子与信号频率之间的关系可以这样来理解。缩放因子小,表示小波比较窄,度量的是信号细节,表示频率w比较高;相反,缩放因子大,表示小波比较宽,度量的是信号的粗糙程度,表示频率w比较低。离散小波变换•在计算连续小波变换时,实际上也是用离散的数据进行计算的,只是所用的缩放因子和平移参数比较小而已。不难想象,连续小波变换的计算量是惊人的。•为了解决计算量的问题,缩放因子和平移参数都选择2^j(j0的整数)的倍数。•使用这样的缩放因子和平移参数的小波变换叫做双尺度小波变换(dyadicwavelettransform),它是离散小波变换(discretewavelettransform,DWT)的一种形式。离散小波变换定义2__________,,L()(,)()()1)()22xjkRjkjjxtDWTWjkxttdtttk任意(R)空间中的的为:其中(需要强调指出的是,这一离散化都是针对连续的尺度参数和连续平移参数的,而不是针对时间变量t的。•使用离散小波分析得到的小波系数、缩放因子和时间关系如图所示。–图(a)是20世纪40年代使用Gabor开发的短时傅立叶变换(shorttimeFouriertransform,STFT)得到的时间-频率关系图–图(b)是20世纪80年代使用Morlet开发的小波变换得到的时间-缩放因子(反映频率)关系图。离散小波变换分析图DWT变换方法•执行离散小波变换的有效方法是使用滤波器–该方法是Mallat在1988年开发的,叫做Mallat算法–这种方法实际上是一种信号的分解方法,在数字信号处理中称为双通道子带编码•用滤波器执行离散小波变换的概念如图所示–S表示原始的输入信号,通过两个互补的滤波器产生A和D两个信号–A表示信号的近似值(approximations)–D表示信号的细节值(detail)•在许多应用中,信号的低频部分是最重要的,而高频部分起一个“添加剂”的作用。•比如声音,把高频分量去掉之后,听起来声音确实是变了,但还能够听清楚说的是什么内容。相反,如果把低频部分去掉,听起来就莫名其妙。•在小波分析中,近似值是大的缩放因子产生的系数,表示信号的低频分量。而细节值是小的缩放因子产生的系数,表示信号的高频分量。双通道滤波过程•离散小波变换可以被表示成由低通滤波器和高通滤波器组成的一棵树–原始信号通过这样的一对滤波器进行的分解叫做一级分解–信号的分解过程可以叠代,也就是说可进行多级分解。–如果对信号的高频分量不再分解,而对低频分量连续进行分解,就得到许多分辨率较低的低频分量,形成如图所示的一棵比较大的树。这种树叫做小波分解树(waveletdecompositiontree)–分解级数的多少取决于要被分析的数据和用户的需要小波分解树小波包分解树•小波分解树表示只对信号的低频分量进行连续分解。如果不仅对信号的低频分量连续进行分解,而且对高频分量也进行连续分解,这样不仅可得到许多分辨率较低的低频分量,而且也可得到许多分辨率较低的高频分量。这样分解得到的树叫做小波包分解树(waveletpacketdecompositiontree),这种树是一个完整的二进制树。cAj+1cDj+1(h)cDj+1(v)cDj+1(d)cAj212112121212Lo_DHi_DLo_DHi_DLo_DHi_D行列列下采样行下采样二维离散小波变换标准分解流程示意•非标准分解是指使用一维小波交替地对每一行和每一列像素值进行变换。首先对图像的每一行计算像素对的均值和差值,然后对每一列计算像素对的均值和差值。这样得到的变换结果只有1/4的像素包含均值,再对这1/4的均值重复计算行和列的均值和差值,依此类推。非标准分解的过程如下:非标准分解非标准分解流程示意使用Matlab•dwt函数•idwt函数•wcodemat函数•dwt2函数•wavedec2函数•idwt2函数•waverec2函数dwt函数•功能:1-D离散小波变换•格式:[cA,cD]=dwt(X,’wname’)[cA,cD]=dwt(X,Lo_D,Hi_D)•说明:1.[cA,cD]=dwt(X,’wname’)使用指定的小波基函数‘wname’对信号X进行分解,cA和cD分别是近似分量和细节分量;2.[cA,cD]=dwt(X,Lo_D,Hi_D)用指定的滤波器组Lo_D,Hi_D对信号进行分解idwt函数•功能:1-D离散小波反变换•格式:X=idwt(cA,cD,’wname’)X=idwt(cA,cD,Lo_R,Hi_R)X=idwt(cA,cD,’wname’,L)X=idwt(cA,cD,Lo_R,Hi_R,L)•说明:由近似分量cA和细节分量cD经过小波反变换,选择某小波函数或滤波器组,L为信号X中心附近的几个点wcodemat函数•功能:对数据矩阵进行伪真彩色编码•格式:Y=wcodemat(X,NB,OPT,ABSOL)Y=wcodemat(X,NB,OPT)Y=wcodemat(X,NB)Y=wcodemat(X)•说明:Y=wcodemat(X,NB,OPT,ABSOL)返回数据矩阵X的编码矩阵Y;NB为编码的最大值(缺省16),OPT是编码方式,‘row’行方式,‘col’列方式‘mat’整个矩阵编码(缺省),ABSOL是函数的控制方式,0返回编码矩阵,1返回数据矩阵的ABS(缺省)dwt2函数•功能:2-D离散小波变换•格式:[cA,cH,cV,cD]=dwt2(X,’wname’)[cA,cH,cV,cD]=dwt2(X,’wname’)•说明:cA近似分量,cH水平细节分量,cV垂直细节分量,cD对角细节分量示例1:对图象做2-D小波分解loadwoman;nbcol=size(map,1);[cA1,cH1,cV1,cD1]=dwt2(X,'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];subplot(1,2,1);imshow(cod_X,[]);subplot(1,2,2);imshow(dec2d,[]);实验结果wavedec2函数•功能:2-D信号的多层小波分解•格式:[C,S]=wavedec2(X,N,’wname’);[C,S]=wavedec2(X,N,Lo_D,Hi_D);•说明:使用小波基函数或指定滤波器对2-D信号X进行N层分解idwt2函数•功能:2-D离散反小波变换•格式:X=idwt2(cA,cH,cV,cD,’wname’)X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)X=idwt2(cA,cH,cV,cD,’wname’,S)X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)说明:略示例:2-D小波重构loadwoman;sX=size(X);[cA1,cH1,cV1,cD1]=dwt2(X,'db4');A0=idwt2(cA1,cH1,cV1,cD1,'db4',sX);subplot(1,2,1);imshow(X,[]);Title('OriginalImage');subplot(1,2,2);imshow(A0,[]);Title('Imageusingidwt2');实验结果示例loadwoman;nbcol=size(map,1);[cA1,cH1,cV1,cD1]=dwt2(X,'db1');cod_X=wcodemat(X,nbcol);cod_