附:理论部分来源于书籍与网络资源,如有侵权,请于文章作者联系,立即处理!!!
一、Mallat原理分析
1.1矩阵变换角度看小波分解与重构:
DB4有4个系数:c0、c1、c2和c3。可以有以下变换矩阵,将它作用于一列数据矢量的左边。即(注意行列对齐,手打不易)
其中,空白处为0,。注意,此矩阵结构,第一行产生一个数据与滤波系数c0、c1、c2、c3卷积的分量,依次类推,第3行、第5行和其余奇数行的结果一样。如果偶数行以这种形式出现,正负交替,那么矩阵将是循环的,也就是一般的卷积,可以用FFT方法计算(注意,最后两行像具有周期边界条件下的卷积那样环绕起来)。但是,偶数行并不是以系数c0、c1、c2、c3进行卷积,而是以系数c3,-c2,c1,-c0进行卷积。整个矩阵的作用就是进行两个相关的卷积,然后各去掉一半数值,将剩下的各一半融合在一起。
将滤波器c0、c1、c2、c3看成是一个光滑滤波器,称它为H,H有点像4个点的移动平均。而将滤波器c3,-c2,c1,-c0称为G,由于G中滤波器带有负号,因此,G不能看成一个光滑滤波器。在信号处理的文献中,H和G被称为求积镜像滤波器。实际上,c值的选取是使G对光滑的数据矢量尽可能产生零响应。通过以上运算,导致H的输出在去掉以后,精确地代表了数据的“近似”信息。G的输出同样在去掉一半以后,代表了数据的“细节”信息。
为了能够恢复原始信息,必须能够从它的N/2个近似分量和N/2个细节分量重建长度为N的原始数据矢量。为了能够实现这样的算法,就必须要求矩阵式(1)为正交的,这样它的逆矩阵就和转置矩阵相同。其矩阵如下,即
为使矩阵式(2)成为矩阵式(1)的逆矩阵,必须满足以下两个等式,即
这样用长度为N(可以看出N为2的幂指数)的数据相乘,就能够分解成近似分量和细节分量,再对近似分量按照上面的方法进行分解,依次类推,从而实现Mallat算法。
1.2滤波器角度看小波分解与重构:
考虑如下问题。用N=2的Daubechies小波分解一个有n个取样值(即s0,….,sn-1)的信号。这些样值首先被当作顶级的近似系数aj,然后让其通过与Daubechies小波相关的高通和低通滤波器。这些滤波器分别称为H和L,响应的冲激响应函数序列分别为h和l:
分别用l和h与aj做卷积,然后下取样。那么对于任何aj(不仅是本例中的仅有8个样值的信号)有:
为计算j-1级的各个系数,需要4个相邻的样值,并且要从偶数位置开始。
实际中信号为离散序列,用小波分解信号序列,实际上就是让源信号通过对应的高通和低通滤波器,例如,用N=2的Daubechies小波分解一个8样值点s0,….,s7的信号序列,那么为计算近似系数a22,需要s4至s7.,为计算a32,需要s6至s9,但实际上并没有s8和s9!由此并不难理解,在此滤波过程中会很快用尽所有样值点,更麻烦的是,该过程仅在k=0,1,2时可进行。这意味着,对有8个样值点的问题来说,仅能得到3个分解系数,而不是原先期望的4个,该现象称为溢出问题,
溢出的根本原因在于不知道源信号前后的准确值,所以必须采取某种方式对源信号进行延拓。常用的延拓方法有零延拓、周期延拓、平滑延拓和对称延拓。
平滑延拓:在源信号两端用线性外插法补充样值,进行延拓。若信号信噪比比较高,或者至少在端点处如此,则该延拓方法是适