汪孝欢,牛显明,张鹏林,渐春光
(兰州理工大学 材料科学与工程学院,兰州 730050)
射线照相检测具有直观、可靠、灵敏度和分辨力高等优点,因而在无损检测中占有重要地位。利用其结果可确定焊缝缺陷的类别、位置和大小,以此判断焊缝是否合格,通常的X射线焊缝底片是由有经验的专业评片人员人工评定,因此,评定结果的可靠性受评片人员的经验限制,结果往往因人而异[1],偶然性误差较大。为提高射线检测效率、准确率和规范性,开发出一套能进行计算机辅助识别以及缺陷等级评定的软件系统势在必行。
随着计算机数字图像处理和模式识别技术的发展,基于Visual C++面向对象与可视化程序设计,可对数字图像进行一系列处理并提取相应的特征参数和数量。使得利用软件自动识别出焊缝数字图像中缺陷的类型和缺陷的等级的想法成为可能。
文章以某X射线实时成像系统为平台,假设该系统得到的焊缝数字图像均为BMP格式的圆形缺陷,将BMP格式的数字图像进行一系列处理后可统计出圆形缺陷的数量(具体原理已经通过试验论证)。试验在已经检测出圆形缺陷的数量,且需要对缺陷等级进行评定的基础上,以JB/T 4730.2—2005钢、镍、铜制承压设备熔化焊对接焊焊接射线检测质量分级中的圆形缺陷质量等级标准为例,进行程序设计。试验结果表明,该方法能准确算出圆形缺陷等级。
试验软件平台为Windows7操作系统,Visual C++6.0软件开发工具,JB/T 4730.2—2005中钢、镍、铜制承压设备熔化焊对接焊接接头射线检测质量分级中的圆形缺陷评定标准,Q235碳素钢BMP格式数字图像一张。
圆形缺陷用圆形缺陷评定区进行质量分级评定。圆形缺陷评定区为一个与焊缝平行的矩形,而母材的公称厚度为母材的平均厚度值(图1)。其尺寸为:若母材公称厚度T≤25mm,评定区尺寸10mm×10mm;若母材公称厚度T>25~100mm,评定区尺寸10mm×20mm;若母材公称厚度T>100mm,评定区尺寸10mm×30mm。
图1 母材公称厚度和评定区示意图
质量分级规定为:① Ⅰ级对接焊接接头内不允许存在裂纹、未融合、未焊透和条形缺陷。② Ⅱ级和Ⅲ级对接焊接接头内不允许存在裂纹、未融合和未焊透。③对接焊接接头中缺陷超过Ⅲ级者为Ⅳ级。④ 当各类缺陷评定的质量级别不同时,以最差的质量级别作为对接焊接接头的质量级别[2]。
在圆形缺陷评定区内,与圆形缺陷边界线相割的缺陷均应划入评定区内,按标准中表10的规定评定对接焊接接头的质量级别。由于材质或结构等原因,进行返修可能会对焊接接头产生不利的后果,各级别的圆形缺陷的点数可放宽1~2点,对致密性要求较高的对接焊接接头,还应将数字图像的黑度作为评级的依据[2]。通常黑度大的圆形缺陷为深孔缺陷,当对接焊接接头存在深孔缺陷时,其质量级别应评为Ⅳ级,标准详细数据见表1。
根据以上数据关系设计的分支结构流程图见图2。文章以母材公称厚度m-t≤50mm为例进行程序结构流程图设计,其他尺寸同理,m-t,m-n分别是母材公称厚度和圆形缺陷数量成员变量名。
表1 各级别允许的圆形缺陷的点数
对图2程序流程图进行Visual C++面向对象程序设计,建立单文档应用程序,插入对话框菜单,在对话框中添加下压按钮控件函数、编辑框控件函数和成组框函数,将设计的程序进行调试和编译,生成了可视化界面。输入母材公称厚度和圆形缺陷数量两个变量,系统自动评定圆形缺陷的等级。对话框的下拉菜单里插入圆形缺陷评级子菜单,该对话框上需要添加的控件有3个编辑控件、1个下压按钮、6个静态文本框和2个成组框(各资源实现代码略)。
在Windows及其应用程序中,消息被表示为一个数据结构,并能在对象间传递。发送消息等价于执行参数所表示消息数据的函数调用。参数之一是一个标识该消息的预定义的消息标识符。当一个对象接收到一条消息时,消息标识符决定该对象执行何种动作[2]。消息传递是以函数调用的形式来实现的,这种调用可以发生在程序的任何地方。不同的对象能以不同的动作响应同样的消息,这样一个特定的消息可以代表一个通用的事件,而一个特定的消息可以在不同的对象中引发不同的动作。
一个消息可由一个对象发送给另一个对象,或由Windows发送给某个对象。对象接收消息的顺序是不可预知的,对象处理每条消息所采取的动作是显示出现在窗口函数中的,原理示意图如图3。
图3 Windows应用程序的逻辑图
程序对话框数据交换(DDX,Dialog Data Exchange)用于初始化对话框中的控件并获取用户的数据输入,而对话框数据验证(DDV,Dialog Data Validation)则用于验证对话框中数据输入的有效性[3]。MFC在每个对话框类中提供了一个用于重载的虚函数DoDataExchange来实现对话框数据交换和验证工作。应用程序在必要时可以发送消息给编辑控制框,预定义的编辑控制框窗口类的窗口过程将对它们进行默认处理,向编辑框发送消息的Windows API函数是 SendMessage(hWndEdit,msg,wParam,lParam),其中hWndEdit是编辑控制框窗口句柄,其他几个参数代表发送消息。
若编辑框是对话框的子窗口,向编辑框发送消息可以调用函数SendDlgltemMessage(hwndDlg,idDlgItem,msg,wParam,lParam),其中hwndDlg是对话框窗口句柄,idDlgItem是对话框子控制框标识符,在这里指编辑控制框的标示符,其他几个参数代表发送消息。该函数相当于先获得对话框中编辑控制框句柄,然后再调用SendMessage函数。
预定义的编辑控制框的窗口过程完成编辑控制框不处理的所有消息。实际上其将大部分的消息都传递给DefWindowProc函数,由系统进行默认处理文章的数据交换验证代码如下所示:
图4 圆形缺陷数量统计逻辑示意图
圆形缺陷的数量统计的原理示意见图4,其中,a是公称厚度为26毫米的Q235碳素钢对接焊接接头的BMP格式的数字图像,将a进行局部放大可得到图4中b所示;再将b进行平滑处理、滤波降噪、锐化等增强操作可得c图所示;然后将c进行直方图处理,二值化处理和阈值分割,便得到d所示;将d进行sobel算子边缘检测,进一步阈值分割,然后腐蚀和细化处理并查找中心点便可得到e所示,e中便检测到了缺陷的个数、平均半径、周长和面积,该对话框见f。
对Q235碳素钢对接焊缝接头的数字图像的圆形缺陷进行检测得知,该数量为13个。根据试验基于Visual C++的程序设计方法,对公称厚度为26mm,缺陷为13个的数字图像进行等级评定,根据表1可知应该为Ⅲ级缺陷,程序运行结果见图5。试验表明,该程序设计方案合理。
图5 圆形缺陷分级评定对话框
(1)文章在已有的焊缝数字图像圆形缺陷识别计数方法的基础上,对检测出的圆形缺陷的数量进行等级评定,为自动评片系统的一个功能模块。
(2)虽然程序设计方法仅以JB/T 4730.2—2005中钢、镍、铜制承压设备熔化焊对接焊焊接射线检测质量分级中的圆形缺陷等级评定这一标准为例,进行面向对象与可视化程序设计,但对钛及钛合金、铝制等承压设备对接焊接接头上圆形缺陷的评定标准也可以以同样的方法进行设计。因此,具有一定的推广应用价值。
[1]张晓光,刘金德,林家骏,等.射线焊缝缺陷识别的专家系统[J].矿山机械,2001(11):3
[2]JB/T 4730.2—2005 承压设备熔化焊对接焊接接头射线检测质量分级[S].
[3]张国峰.Windows应用程序设计 原理、方法和技巧[M].北京:电子工业出版社,1994:387-386.