郭前岗,索会迎,周西峰
(南京邮电大学 自动化学院,江苏 南京 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.