郭前崗,索會迎,周西峰
(南京郵電大學 自動化學院,江蘇 南京 210046)
超聲波無損檢測技術現在被廣泛應用到金屬探傷中,在不損害或不影響被測對象的前提下,希望準確給出缺陷的大小、位置和數量等信息,但是超聲回波中夾雜的噪聲影響了對缺陷信息的提取,需要對其進行去噪處理。由于超聲探傷信號是一種時域和頻域均有限的信號,基于多小波良好的局部化能力,既保持了單小波所具有的時域與頻域局部化特性,又同時具有對稱性、正交性、短支撐性、高階消失矩[1,2],可以更有效地對超聲探傷信號進行去噪分析。多小波預處理方法采用Strela[3]提出的重復行和矩陣預處理方法。
本文在介紹多小波閾值去噪原理的基礎上,針對硬閾值函數不連續和軟閾函數存在恒定偏差的缺點,提出了一種改進的軟閾值函數,以美國NI公司推出的圖形化編程語言LabVIEW 作為虛擬儀器平臺。針對LabVIEW目前還沒有對多小波算法支持的缺點,而MATLAB具有很強的數值分析和處理能力,利用LabVIEW 和MATLAB混合編程技術[4],在LabVIEW中實現了多小波去噪分析,擴展了LabVIEW的多小波去噪功能。
超聲探傷信號的多小波去噪主要依據是在Besov空間的信號能量主要集中在幾個有限的系數中,而噪聲的能量卻分布于整個小波域中。對信號進行多小波分解,信號的系數要大于噪聲的系數,而噪聲部分通常包含在分解后的高頻部分,根據噪聲的先驗知識,設置合適的δ 作為閾值門限,當 dj,k小于閾值 δ時,認為這時的 dj,k主要是由噪聲引起的;當dj,k大于該閾值δ時,認為這時的dj,k主要是信號引起的。設超聲波原始信號為 f,含噪信號為 g,噪聲為 ε,將含噪信號離散化,得到向量(g1,g2,LgN)T。設含噪數據為 gi=fi+σεi,i=1,2,…,N(N=2m是信號的長度)。去噪的目的就是從含噪數據g中提取信號f的一個逼近信號f^,使得在某種誤差估計下f^是f的一個最優逼近。超聲回波信號的多小波去噪的步驟如下:
(1)采用合適的預處理方法和多小波分解,實現離散 多 小 波 變 換 ,得 到 r 維 系 數 :dj,k=d*j,k+ej,k,其 中 d*j,k是超聲回波信號的系數,ej,k是噪聲系數。
(2)利用合適的閾值規則和閾值處理方法,處理分解后的高頻系數。本文采用DONOHO D L提出的閾值去噪原理。軟閾值門限為,σ為噪聲強度,N為信號長度,j為第j層的信號長度。
(3)利用多小波重構算法和相應的后處理重構原信號。
多小波系統實際上是一個多輸入多輸出系統,它的低、高通濾波器使用的是r×r維矢量濾波器,因此在對超聲回波信號的采樣數據處理前,必須先轉換成與矢量濾波器的維數相匹配的數據流,需要進行預處理;然后對預處理之后的信號再進行相應的分解。對分解的超聲回波信號進行多小波重構后,仍然需要進行后處理。本文主要采用Strela提出的重復行預濾波和矩陣預濾波[3]方法。
在多小波閾值去噪中,閾值函數的選取是一個關鍵的環節,常用的閾值函數包括硬閾值函數和軟閾值函數[5]。
硬閾值函數表達式如式(1),當小波系數的絕對值大于或等于閾值時,將其全部保留;當小波系數的絕對值小于閾值時,將其全部置零。

傳統軟閾值函數表達式如式(2),當小波系數的絕對值大于或等于閾值時,將其與閾值的差作為新的小波系數;當小波系數的絕對值小于閾值時,將其全部置零。

針對傳統的硬閾值函數不連續的缺點和軟閾值函數存在恒定偏差的問題[6],本文提出了一種新的軟閾值函數,改進的軟閾值函數如下:

硬閾值函數、軟閾值函數和改進的軟閾值函數用MATLAB繪制如圖1所示。

考察改進的軟閾值函數式(3),當|djk|≥δ時,函數式如下:

當|djk|≥δ時,求解函數的左右極限可知,該函數以d^jk=djk為漸近線,隨著 djk的增大,jk逐漸接近 djk,即重構的多小波系數與真實的多小波系數之間偏差逐漸地減小,克服了軟閾值函數jk與djk之間的恒定偏差。
當 djk=±δ、jk=0,改進的軟閾值函數在±δ處連續,克服了硬閾值函數重構信號時的震蕩情況。在|djk|<δ時,d^jk=0,即重構的多小波系數全部被置為零,與硬閾值法相當。該函數不存在參數選擇問題,可以更加精確地重構原信號。
將超聲探傷數據以電子表格文件保存,通過虛擬儀器讀取該文件,在前面板選取相應的多小波消噪方法,將參數通過LabVIEW與MATLAB的接口傳遞給MATLAB相應的功能函數,完成超聲探傷信號的消噪處理后,再將處理結果回傳給LabVIEW進行顯示和數據保存,其原理框圖[7-8]如圖2所示。

圖2 原理框圖
本文在MATLAB R2009b和LabVIEW 8.2環境下,應用MATLAB Script節點實現了MATLAB和LabVIEW混合編程,在LabVIEW中實現了超聲探傷信號的多小波閾值去噪。具體設計步驟如下:
(1)啟動 LabVIEW,新建一個VI,在程序框圖中添加MATLAB Script節點,該節點位于Functions Palette的Mathematics|Scripts & Formula|Script Nodes|MATLAB Script Nods。
(2)在節點中導入MATLAB環境下調試好的M文件,由于多小波函數為自定義函數,使用時需要通過path(path,‘M文件路徑’)函數,在節點中加入相應的 M文件的路徑,否則無法正常調用M文件。
(3)為MATLAB Script節點添加相應的輸入接口,注意匹配LabVIEW與MATLAB傳遞參數的數據類型,然后讀取超聲波探傷信號的數據,進行濾波處理,并將結果返回到LabVIEW的波形圖顯示。
(1)前面板設計:前面板實現了數據選擇、路徑顯示、多小波去噪分析、單小波去噪分析,波形顯示、頻譜分析和信噪比計算。
多小波分析面板可以通過下拉列表選擇多小波類型、預處理方法、閾值量化函數和分解層數。單小波面板可以選擇小波類型、閾值選取規則、閾值量化函數、閾值調整規則和分解層數。通過實驗對比分析,可以選擇一套更適合超聲探傷信號去噪的最優方法。
(2)程序框圖中對應的程序設計:為了避免CPU資源浪費、降低CPU的利用率,本程序采用LabVIEW提供的事件結構,當“多小波分析”或“單小波分析”按鈕按下后,觸發相應的事件發生,程序才做出響應。多個事件同時發生時會形成事件隊列,直到每個事件對應的代碼被執行,不會遺漏事件[4]。
多小波分析調用了自定義函數MW_Denoise,此函數封裝了多小波預處理、多尺度分解、閾值去噪處理、后處理和重構算法。具體函數接口為designal=MW_Denoise(signalnosie,′mwname′,maxlevel,′Preprocess′,′threshold′)。signalnosie為含噪聲超聲探傷信號,′mwname′指定多小波類型 (本程序提供了 GHM、Sa4和 Haar多小波可供選擇),maxlevel指定分解層數,′Preprocess′指定預處理方法(本程序采用Strela提出的重復行預濾波和矩陣預濾波),′threshold′指定閾值處理函數(包括軟閾值‘soft’、硬閾值‘hard’和改進軟閾值函數‘improvesoft’)。
單小波分析調用了MATLAB小波工具包函數wden[9],函數接口如下:[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,‘wname’),X 為待消噪的信號,XD 為消噪后的信號,[CXD,LXD]為其分解結構。TPTR指定閾值選取原則,SORH指定了閾值函數選擇。SCAL是閾值尺度改變的比例,N為小波分解的層數。wname為分解時所用的小波。
上述的各個參數可以右擊MATLAB Script節點,添加相應輸入口和輸出口,然后通過LabVIEW添加相應的變量進行控制,但必須注意數據類型的匹配,否則無法完成接口的通信。單小波和多小波去噪程序框圖如圖3所示。

本文的超聲探傷數據從數字式超聲波探傷儀獲得,采用的是脈沖反射法A型顯示。橫坐標代表超聲波的傳播距離,反射波的位置可以確定缺陷的位置,縱坐標代表反射波的幅度,其高度可估計出缺陷的性質和大小[10-11]。
未經過去噪的超聲探傷信號時域圖和對應的頻譜以及多小波去噪后的頻譜如圖4所示,從時域波形圖可以看出缺陷信息已經被噪聲湮沒,無法準確地辨別缺陷的具體位置,從頻譜圖中可以看出疊加了許多噪聲的頻譜,多小波去噪后,頻譜中的噪聲譜明顯減少,有比較明顯的去噪效果。
單小波和多小波去噪效果如圖5所示,經過去噪之后,可以較清楚地看出缺陷的位置,多小波去噪后的波形圖更加平滑,去噪效果明顯優于單小波去噪。分別局部放大多小波和單小波去噪后在1 600采樣點附近的波形,如圖中方框所標注,放大后的效果圖分別顯示于右端,可以看出多小波去噪在1 600采樣點附近的放大圖能準確地看出缺陷回波的位置和幅值大小,而單小波在該處附近的放大波形含有較多的噪聲,無法辨別缺陷的具體位置,可見多小波去噪效果要優于單小波。


下面通過信噪比(SNR)進一步比較改進軟閾值函數和傳統軟、硬閾值函數的去噪效果。
本實驗分別使用 sym8單小波和GHM[12]多小波,分解層數均為6層。去噪后的信噪比如表1所示。

表1 閾值函數去噪后信噪比
信噪比越高,去噪信號就越接近原始信號,去噪效果也就越好。由圖5的縱向比較可以看出,無論是單小波還是多小波,改進后的軟閾值函數比傳統的軟閾值函數在信噪比方面都有明顯的提高。從橫向比較,多小波無論在軟、硬閾值函數還是改進后的軟閾值函數方面,去噪后的信噪比都要高于單小波,可見多小波對于超聲探傷信號去噪效果更好。
從表1也可以看出,硬閾值函數更加適合超聲探傷信號去噪。采用硬閾值函數量化,當多小波系數的絕對值小于閾值時,將其全部置零,濾除噪聲,當多小波系數的絕對值大于或等于閾值時,保持多小波的系數原值;采用軟閾值函數量化,重構的多小波系數和原值之間存在恒定偏差的問題,相當于系數幅值的壓縮,減少了重構信號的能量,重構后的信號幅值會略微有所下降。而采用改進后的軟閾值函數量化時,當分解的系數大于等于閾值時,隨著分解系數值的增加會逐漸地逼近真實的多小波系數,雖然幅值也會有所下降,但是去噪效果接近硬閾值。
本文提出了一種改進的軟閾值函數,有效克服了硬閾值函數不連續和軟閾函數存在恒定偏差的缺點。針對目前LabVIEW沒有對多小波算法支持的現狀,通過使用LabVIEW和MATLAB混合編程技術,在LabVIEW中實現了對超聲探傷信號的多小波閾值去噪處理,并且實現了消噪波形顯示、消噪數據保存和頻譜分析等功能。既保持了LabVIEW友好的界面顯示,又擴展了LabVIEW的多小波閾值去噪功能。實驗結果表明,改進的軟閾值函數比傳統軟閾值函數明顯的提高了信噪比,克服了軟閾函數在重構多小波系數時存在恒定偏差的缺點。通過對比多小波閾值去噪與單小波閾值去噪后的結果,可以清楚看出,多小波去噪效果有較明顯的優勢,尤其在信號被噪聲湮沒的情況下,多小波還能準確地重構出原始信號,能夠更加準確地反映出微小傷痕的情況,有利于提取能超聲探傷信號中的缺陷信息。
[1]劉明才.小波分析及其應用[M].北京:清華大學出版社,2005.
[2]程正興,楊守志,馮曉霞.小波分析的理論算法進展和應用[M].北京:國防工業出版社,2007.
[3]STRELA V,WALDEN A T.Signal and image denoising via wavelet thresholding: orthogonal and biorthogonal,scalar and multiple wavelet transforms.Imperial College,Statistics Section, Technical Report TR-98-01,(1998).
[4]陳錫輝,張銀鴻.LabVIEW8.20程序設計從入門到精通[M].北京:清華大學出版社,2007.
[5]DONOHO D L.De-noising by soft-thresholding[J].IEEE,Transaction.on IT,1995,41(3):613-627.
[6]周西峰,朱文文,郭前崗.基于漸近半軟閾值函數的超聲信號去噪方法[J].探測與控制學報,2011,33(2).
[7]程學慶,房曉溪,張健.LabVIEW圖形化編程與實例應用[M].北京:中國鐵道出版社,2005.
[8]楊青川,華宇寧,張悅.基于LabVIEW的虛擬小波消噪儀的設計與實現[J].儀表技術與傳感器,2007(4).
[9]葛哲學,沙威.小波分析理論與MATLAB R2007實現[M].北京:電子工業出版社,2007.
[10]林莉,李喜孟.超聲波頻譜分析技術及其應用[M].北京:機械工業出版社,2009.
[11]李國華,吳淼.現代無損檢測與評價[M].北京:化學工業出版社,2009.
[12]GERONIMO J, HARDIN D, MASSOPUST P R.Fractal functions and wavelet expansions based on several functions[J].J Approx Theory, 1994;78:373-401.