找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于LabVIEW的超声探伤信号多小波去噪分析与应用

[复制链接]
admin 发表于 2013-3-25 11:49:06 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 根据超声探伤信号的多小波阈值去噪原理,针对硬阈值函数不连续和软阈函数存在恒定偏差的缺点,提出了一种改进的软阈值函数。针对目前LabVIEW没有对多小波算法支持的缺点和MATLAB强大的数值处理能力,利用LabVIEW和MATLAB混合编程技术,在LabVIEW中实现了超声探伤信号的多小波阈值去噪处理,并显示消噪波形、保存消噪数据和频谱分析,扩展了LabVIEW的多小波信号去噪功能。实验结果表明,多小波阈值去噪与单小波阈值相比,在超声探伤信号中起到更好的去噪效果,改进的软阈值函数比传统软阈值函数明显地提高了信噪比,能够更有效地提取缺陷信息。
关键词: 超声探伤信号;多小波;阈值去噪;LabVIEW;MATLAB Script
    超声波无损检测技术现在被广泛应用到金属探伤中,在不损害或不影响被测对象的前提下,希望准确给出缺陷的大小、位置和数量等信息,但是超声回波中夹杂的噪声影响了对缺陷信息的提取,需要对其进行去噪处理。由于超声探伤信号是一种时域和频域均有限的信号,基于多小波良好的局部化能力,既保持了单小波所具有的时域与频域局部化特性,又同时具有对称性、正交性、短支撑性、高阶消失矩[1,2],可以更有效地对超声探伤信号进行去噪分析。多小波预处理方法采用Strela[3]提出的重复行和矩阵预处理方法。
 本文在介绍多小波阈值去噪原理的基础上,针对硬阈值函数不连续和软阈函数存在恒定偏差的缺点,提出了一种改进的软阈值函数,以美国NI公司推出的图形化编程语言LabVIEW 作为虚拟仪器平台。针对LabVIEW目前还没有对多小波算法支持的缺点,而MATLAB具有很强的数值分析和处理能力,利用LabVIEW 和MATLAB混合编程技术[4],在LabVIEW中实现了多小波去噪分析,扩展了LabVIEW的多小波去噪功能。
1 超声探伤信号多小波阈值去噪
1.1 多小波阈值去噪原理

 超声探伤信号的多小波去噪主要依据是在Besov空 20121107050113826042126.gif
    20121107050113904172127.gif

3.2 LabVIEW和MATLAB混合编程设计步骤
 本文在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的波形图显示。
3.3 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所示。
    20121107050113935422128.gif
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-27 14:46 , Processed in 0.058703 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表