汪孝歡,牛顯明,張鵬林,漸春光
(蘭州理工大學 材料科學與工程學院,蘭州 730050)
射線照相檢測具有直觀、可靠、靈敏度和分辨力高等優(yōu)點,因而在無損檢測中占有重要地位。利用其結果可確定焊縫缺陷的類別、位置和大小,以此判斷焊縫是否合格,通常的X射線焊縫底片是由有經(jīng)驗的專業(yè)評片人員人工評定,因此,評定結果的可靠性受評片人員的經(jīng)驗限制,結果往往因人而異[1],偶然性誤差較大。為提高射線檢測效率、準確率和規(guī)范性,開發(fā)出一套能進行計算機輔助識別以及缺陷等級評定的軟件系統(tǒng)勢在必行。
隨著計算機數(shù)字圖像處理和模式識別技術的發(fā)展,基于Visual C++面向對象與可視化程序設計,可對數(shù)字圖像進行一系列處理并提取相應的特征參數(shù)和數(shù)量。使得利用軟件自動識別出焊縫數(shù)字圖像中缺陷的類型和缺陷的等級的想法成為可能。
文章以某X射線實時成像系統(tǒng)為平臺,假設該系統(tǒng)得到的焊縫數(shù)字圖像均為BMP格式的圓形缺陷,將BMP格式的數(shù)字圖像進行一系列處理后可統(tǒng)計出圓形缺陷的數(shù)量(具體原理已經(jīng)通過試驗論證)。試驗在已經(jīng)檢測出圓形缺陷的數(shù)量,且需要對缺陷等級進行評定的基礎上,以JB/T 4730.2—2005鋼、鎳、銅制承壓設備熔化焊對接焊焊接射線檢測質(zhì)量分級中的圓形缺陷質(zhì)量等級標準為例,進行程序設計。試驗結果表明,該方法能準確算出圓形缺陷等級。
試驗軟件平臺為Windows7操作系統(tǒng),Visual C++6.0軟件開發(fā)工具,JB/T 4730.2—2005中鋼、鎳、銅制承壓設備熔化焊對接焊接接頭射線檢測質(zhì)量分級中的圓形缺陷評定標準,Q235碳素鋼BMP格式數(shù)字圖像一張。
圓形缺陷用圓形缺陷評定區(qū)進行質(zhì)量分級評定。圓形缺陷評定區(qū)為一個與焊縫平行的矩形,而母材的公稱厚度為母材的平均厚度值(圖1)。其尺寸為:若母材公稱厚度T≤25mm,評定區(qū)尺寸10mm×10mm;若母材公稱厚度T>25~100mm,評定區(qū)尺寸10mm×20mm;若母材公稱厚度T>100mm,評定區(qū)尺寸10mm×30mm。
圖1 母材公稱厚度和評定區(qū)示意圖
質(zhì)量分級規(guī)定為:① Ⅰ級對接焊接接頭內(nèi)不允許存在裂紋、未融合、未焊透和條形缺陷。② Ⅱ級和Ⅲ級對接焊接接頭內(nèi)不允許存在裂紋、未融合和未焊透。③對接焊接接頭中缺陷超過Ⅲ級者為Ⅳ級。④ 當各類缺陷評定的質(zhì)量級別不同時,以最差的質(zhì)量級別作為對接焊接接頭的質(zhì)量級別[2]。
在圓形缺陷評定區(qū)內(nèi),與圓形缺陷邊界線相割的缺陷均應劃入評定區(qū)內(nèi),按標準中表10的規(guī)定評定對接焊接接頭的質(zhì)量級別。由于材質(zhì)或結構等原因,進行返修可能會對焊接接頭產(chǎn)生不利的后果,各級別的圓形缺陷的點數(shù)可放寬1~2點,對致密性要求較高的對接焊接接頭,還應將數(shù)字圖像的黑度作為評級的依據(jù)[2]。通常黑度大的圓形缺陷為深孔缺陷,當對接焊接接頭存在深孔缺陷時,其質(zhì)量級別應評為Ⅳ級,標準詳細數(shù)據(jù)見表1。
根據(jù)以上數(shù)據(jù)關系設計的分支結構流程圖見圖2。文章以母材公稱厚度m-t≤50mm為例進行程序結構流程圖設計,其他尺寸同理,m-t,m-n分別是母材公稱厚度和圓形缺陷數(shù)量成員變量名。
表1 各級別允許的圓形缺陷的點數(shù)
對圖2程序流程圖進行Visual C++面向對象程序設計,建立單文檔應用程序,插入對話框菜單,在對話框中添加下壓按鈕控件函數(shù)、編輯框控件函數(shù)和成組框函數(shù),將設計的程序進行調(diào)試和編譯,生成了可視化界面。輸入母材公稱厚度和圓形缺陷數(shù)量兩個變量,系統(tǒng)自動評定圓形缺陷的等級。對話框的下拉菜單里插入圓形缺陷評級子菜單,該對話框上需要添加的控件有3個編輯控件、1個下壓按鈕、6個靜態(tài)文本框和2個成組框(各資源實現(xiàn)代碼略)。
在Windows及其應用程序中,消息被表示為一個數(shù)據(jù)結構,并能在對象間傳遞。發(fā)送消息等價于執(zhí)行參數(shù)所表示消息數(shù)據(jù)的函數(shù)調(diào)用。參數(shù)之一是一個標識該消息的預定義的消息標識符。當一個對象接收到一條消息時,消息標識符決定該對象執(zhí)行何種動作[2]。消息傳遞是以函數(shù)調(diào)用的形式來實現(xiàn)的,這種調(diào)用可以發(fā)生在程序的任何地方。不同的對象能以不同的動作響應同樣的消息,這樣一個特定的消息可以代表一個通用的事件,而一個特定的消息可以在不同的對象中引發(fā)不同的動作。
一個消息可由一個對象發(fā)送給另一個對象,或由Windows發(fā)送給某個對象。對象接收消息的順序是不可預知的,對象處理每條消息所采取的動作是顯示出現(xiàn)在窗口函數(shù)中的,原理示意圖如圖3。
圖3 Windows應用程序的邏輯圖
程序對話框數(shù)據(jù)交換(DDX,Dialog Data Exchange)用于初始化對話框中的控件并獲取用戶的數(shù)據(jù)輸入,而對話框數(shù)據(jù)驗證(DDV,Dialog Data Validation)則用于驗證對話框中數(shù)據(jù)輸入的有效性[3]。MFC在每個對話框類中提供了一個用于重載的虛函數(shù)DoDataExchange來實現(xiàn)對話框數(shù)據(jù)交換和驗證工作。應用程序在必要時可以發(fā)送消息給編輯控制框,預定義的編輯控制框窗口類的窗口過程將對它們進行默認處理,向編輯框發(fā)送消息的Windows API函數(shù)是 SendMessage(hWndEdit,msg,wParam,lParam),其中hWndEdit是編輯控制框窗口句柄,其他幾個參數(shù)代表發(fā)送消息。
若編輯框是對話框的子窗口,向編輯框發(fā)送消息可以調(diào)用函數(shù)SendDlgltemMessage(hwndDlg,idDlgItem,msg,wParam,lParam),其中hwndDlg是對話框窗口句柄,idDlgItem是對話框子控制框標識符,在這里指編輯控制框的標示符,其他幾個參數(shù)代表發(fā)送消息。該函數(shù)相當于先獲得對話框中編輯控制框句柄,然后再調(diào)用SendMessage函數(shù)。
預定義的編輯控制框的窗口過程完成編輯控制框不處理的所有消息。實際上其將大部分的消息都傳遞給DefWindowProc函數(shù),由系統(tǒng)進行默認處理文章的數(shù)據(jù)交換驗證代碼如下所示:
圖4 圓形缺陷數(shù)量統(tǒng)計邏輯示意圖
圓形缺陷的數(shù)量統(tǒng)計的原理示意見圖4,其中,a是公稱厚度為26毫米的Q235碳素鋼對接焊接接頭的BMP格式的數(shù)字圖像,將a進行局部放大可得到圖4中b所示;再將b進行平滑處理、濾波降噪、銳化等增強操作可得c圖所示;然后將c進行直方圖處理,二值化處理和閾值分割,便得到d所示;將d進行sobel算子邊緣檢測,進一步閾值分割,然后腐蝕和細化處理并查找中心點便可得到e所示,e中便檢測到了缺陷的個數(shù)、平均半徑、周長和面積,該對話框見f。
對Q235碳素鋼對接焊縫接頭的數(shù)字圖像的圓形缺陷進行檢測得知,該數(shù)量為13個。根據(jù)試驗基于Visual C++的程序設計方法,對公稱厚度為26mm,缺陷為13個的數(shù)字圖像進行等級評定,根據(jù)表1可知應該為Ⅲ級缺陷,程序運行結果見圖5。試驗表明,該程序設計方案合理。
圖5 圓形缺陷分級評定對話框
(1)文章在已有的焊縫數(shù)字圖像圓形缺陷識別計數(shù)方法的基礎上,對檢測出的圓形缺陷的數(shù)量進行等級評定,為自動評片系統(tǒng)的一個功能模塊。
(2)雖然程序設計方法僅以JB/T 4730.2—2005中鋼、鎳、銅制承壓設備熔化焊對接焊焊接射線檢測質(zhì)量分級中的圓形缺陷等級評定這一標準為例,進行面向對象與可視化程序設計,但對鈦及鈦合金、鋁制等承壓設備對接焊接接頭上圓形缺陷的評定標準也可以以同樣的方法進行設計。因此,具有一定的推廣應用價值。
[1]張曉光,劉金德,林家駿,等.射線焊縫缺陷識別的專家系統(tǒng)[J].礦山機械,2001(11):3
[2]JB/T 4730.2—2005 承壓設備熔化焊對接焊接接頭射線檢測質(zhì)量分級[S].
[3]張國峰.Windows應用程序設計 原理、方法和技巧[M].北京:電子工業(yè)出版社,1994:387-386.