王鑫
江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院 江蘇 無錫 214122
小波工具箱使用圖形化工具和命令行函數(shù)擴展MATLAB技術(shù)的計算環(huán)境,可以用于開發(fā)基于小波的算法,進行信號和圖像的分析、綜合、去噪和壓縮等運算[1]。
小波工具箱支持對小波屬性和小波應(yīng)用的交互式研究。這對于語音和音頻處理、圖像和視頻處理、生物成像以及通信和地球物理學(xué)中的一維和二維應(yīng)用是非常有益的[2]。
通過對小波工具箱的目錄結(jié)構(gòu)和源代碼的深入分析,研究小波工具箱的體系結(jié)構(gòu)和實現(xiàn)技術(shù)。這樣的實踐有助于學(xué)生對小波理論的深入理解。
從小波理論可以知道,如果尺度函數(shù)φ是緊支的,那么對應(yīng)的尺度濾波器W的長度是有限的,就可以被看做一個FIR濾波器[3]。小波工具箱將這個FIR濾波器保存為系統(tǒng)預(yù)定義的數(shù)據(jù)文件。載入這個數(shù)據(jù)文件,即可獲得尺度濾波器W。從尺度濾波器W出發(fā),定義4個FIR濾波器,如表1所示。
表1 分解濾波器和重構(gòu)濾波器
從計算小波濾波器的wfilters函數(shù)的源代碼可知,上述4個濾波器的計算方案如圖1所示。首先,對W進行歸一化,即可求得Lo_R。從Lo_R出發(fā),使用qmf函數(shù)和wrev函數(shù),即可求得Hi_R、Lo_D和Hi_D。其中,qmf函數(shù)使得Hi_R和Lo_R是正交鏡像濾波器,wrev的作用是翻轉(zhuǎn)Hi_R和Lo_R的系數(shù)。因此,Hi_D和Lo_D也是正交鏡像濾波器。
在完成小波函數(shù)ψ(t)、尺度函數(shù)φ(t)或者小波濾波器的定義的基礎(chǔ)上,即可進行各種小波分析的任務(wù):連續(xù)小波分析、離散小波分析和小波包分析。
將小波理論應(yīng)用于實際的工程問題中,使用較多的是離散小波變換。在小波工具箱中,離散小波變換的分析-分解函數(shù)主要有dwt函數(shù)(單級離散小波變換)和wavedec函數(shù)(多級小波分解),重構(gòu)-綜合函數(shù)主要有idwt函數(shù)(單級逆離散小波變換)、waverec函數(shù)(多級小波重構(gòu))和wrcoef函數(shù)(從小波系數(shù)重構(gòu)單個分解分支)。這些函數(shù)之間的計算關(guān)系如圖2和圖3所示。
圖2和圖3中,s為原始信號;Ak(0≤k≤j)為第k級逼近;Dk(1≤k≤j)為第k級細(xì)節(jié);cAk(1≤k≤j)為第k級逼近系數(shù),cDk(1≤k≤j)為第k級細(xì)節(jié)系數(shù),[cAj,cDj,…,cD1]為第j級小波分解,j≤1。
從源代碼可以得出,wavedec函數(shù)是通過遞歸地執(zhí)行dwt函數(shù)來實現(xiàn)的。具體來說:第一步,從信號s開始,分別與用于逼近的低通分解濾波器Lo_D和用于細(xì)節(jié)的高通分解濾波器Hi_D進行卷積運算,然后分別進行二進采樣(降采樣)來獲得逼近系數(shù)cA1和細(xì)節(jié)系數(shù)cD1。下一步,使用相同的方案對逼近系數(shù)cA1進行分割,即用cA1代替s,對其作第一步的運算,即可求得cA2和cD2,依此類推。信號s的第j級小波分解具有以下結(jié)構(gòu):[cAj,cDj,…,cD1]。該過程如圖4所示。
waverec函數(shù)是通過遞歸地執(zhí)行idwt函數(shù)來實現(xiàn)的。從第j級的逼近系數(shù)cAj和細(xì)節(jié)系數(shù)cDj開始,通過插入零(增采樣)并將結(jié)果與重構(gòu)濾波器卷積,逆離散小波變換重構(gòu)cAj-1。該過程如圖5所示。
生成小波包的函數(shù)為wpfun函數(shù)。在小波工具箱中,當(dāng)使用正交小波的時候,生成小波包的計算方案:首先,獲得對應(yīng)于小波的2個濾波器h(n)和g(n),它們的長度為2N;然后,根據(jù)方程①和②進行計算,可以得到函數(shù)序列(Wn(x),n=0,1,2,…)。
其中,W0(x)=φ(x)是對應(yīng)的尺度函數(shù),W1(x)=ψ(x)是對應(yīng)的小波函數(shù)。
MATLAB支持面向?qū)ο蟮木幊谭缎蚚4]。在小波工具箱中,一些面向?qū)ο蟮木幊烫卣饔糜谛〔ò臉浣Y(jié)構(gòu)。在小波工具箱中定義了四類對象:類WTBO(小波工具箱對象),類NTREE(新樹),類DTREE(數(shù)據(jù)樹)和類WPTREE(小波包樹)。這些對象的層次組織描述如圖6所示。
WTBO類是一個抽象類。工具箱中的任何對象都以WTBO為父類,并且繼承了WTBO類的方法和域。
NTREE類專用于樹操作(如節(jié)點標(biāo)簽、節(jié)點分割和節(jié)點合并等操作),它也是一個抽象類。
DTREE類專用于具有關(guān)聯(lián)數(shù)據(jù)的樹:向量或矩陣。這個類也是一個抽象類,而且這個類的一些方法必須重載。
WPTREE類的目的是管理一維和二維的小波包。小波工具箱使用WPTREE對象用來構(gòu)造小波包。
從小波工具箱的目錄結(jié)構(gòu)和源代碼出發(fā),深入研究小波工具箱的體系結(jié)構(gòu)和實現(xiàn)技術(shù)。小波工具箱實現(xiàn)一維和二維的小波定義、連續(xù)小波變換、離散小波變換以及小波包分析等功能。限于篇幅,重點闡述一維的情況。二維的情況可以由一維的情況進行類推。
在小波包分析的實現(xiàn)中,小波工具箱將面向?qū)ο蟮木幊谭缎屯昝赖貞?yīng)用于科學(xué)軟件,是科學(xué)軟件開發(fā)的一個范例,對學(xué)生開發(fā)專業(yè)軟件也具有較大的指導(dǎo)意義。
[1]The Mathworks Inc. Wavelet Toolbox User’s Guide[Z].2009
[2]王大凱,彭進業(yè).小波分析及其在信號處理中的應(yīng)用[M].北京:電子工業(yè)出版社,2006
[3]樊啟斌.小波分析[M].武漢:武漢大學(xué)出版社,2008
[4]The Mathworks Inc. Object-Oriented Programming[Z].2009