毛東宸,孔令云,李博,李明科
(1.西京學院 電子信息學院,陜西西安,710123;2.河南省睿卡機器人制造有限公司,河南新鄉,453000)
近年來,機器視覺技術的快速發展為焊縫缺陷檢測提供了新的思路和工具。利用機器視覺技術,可以在不需要人工干預的情況下,高效地進行焊縫缺陷檢測,提高生產效率和產品質量。李超等作者提出了一種基于混合高斯模型的改進背景減法提取焊縫缺陷區域的方法,該方法能夠對焊縫缺陷進行識別和分類,準確率超過95%[3]。谷靜等作者提出了一種基于深度學習改進Faster RCNN 模型的焊縫缺陷檢測算法,通過多尺度特征圖并充分利用底層特征取得缺陷檢測結果,可以對小目標物體的檢測有較高的檢測精度[4]。王巖等人提出了一種提取具有多個閾值的X 射線圖像特征的方法,使用SVM 技術進行缺陷分類并進行定位,該方法在低對比度X 射線圖像中分割和定位缺陷是有效可行的[5]。蔡述庭等人則基于Halcon 軟件利用圖像處理對美標電源線進行缺陷檢測,對該電源線的檢測具有較好的檢測效果[6]。
本文將基于Halcon 軟件對相機進行標定并對焊縫缺陷進行檢測和分析,進一步探索機器視覺技術在焊接領域應用的方法和途徑。通過與前人研究的比較和驗證,本文的成果可以更加準確、高效地完成焊縫缺陷檢測任務,具有重要的理論和實際價值。
本文采用KinectV2 相機對焊縫進行檢測,使用相機檢測的圖像如圖1 所示。

圖1 Kinect v2 相機
由于相機采集圖像時往往會產生畸變,所以需要先對相機進行標定來消除畸變,之后再對圖像進行一定程度上的處理,主要包括:去噪、閾值分割、形態學運算等操作,最后對處理后的圖像進行缺陷檢測工作,流程圖如圖2 所示。

圖2 焊縫識別流程圖
機器視覺的核心在于通過圖像采集獲取三維世界信息。在這個過程中,我們需要解決兩個問題:如何將相機坐標系中的坐標與世界坐標系中的坐標進行轉換,以及如何校正相機帶來的畸變,相機產生的畸變如圖3 所示。解決這兩個問題的方法就是相機標定,獲取相機的內參和外參,使相機坐標系與世界坐標系建立起聯系,就能消除圖像的畸變。

圖3 相機產生的畸變類型
不同于傳統的張正友標定法,本文采用Halcon 軟件的相機標定助手進行標定,可以更快速獲得相機的內部參數,對圖像進行畸變校正,以獲得精確的圖像信息。
Halcon 相機標定分為如下幾個步驟:生成標定板、使用助手進行標定、使用laplace_of_gauss 算子對圖像進行校正。
在標定過程中,標定板的選擇是非常重要的,因為合適的標定板能夠保證成像清晰度和標定精度。下面介紹適用于本文中焊縫檢測的標定板生成方法:在程序窗口中輸入算子gen_caltab(9,9,0.004,0.5,'C∶/Users/57812/Pictures/caltab.descr','C∶/Users/57812/Pictures/caltab.ps'),并運行。這會在指定的文件夾中生成名為“caltab.descr”描述文件,如圖4 所示,其中生成標定板的行和列標記點數為9,標記點之間的距離為0.015,標定點的直徑為0.5。

圖4 相機參數標定板
標定過程包括選擇標定板類型、采集圖像、搜索標記點以及進行標定計算。只要正確選擇算子并根據需要進行參數設置,就可以完成相機的標定。標定流程如圖5 所示。

圖5 相機標定流程圖
進行相機標定時,標定圖片的數量應該在15~30 張左右,可以將圖片旋轉和傾斜,角度在45 度內,以保證所有標定點都能完整地呈現在標定圖中。本案例采樣了24 張標定板圖像,如圖6 所示。

圖6 相機標定圖
在標定過程中,應保持標定板干凈,并且在拍攝時要保證清晰對焦,避免噪聲對標定精度造成影響。但是這些干擾依舊不可避免,因此我們首先對采集的標定板圖像進行去噪。為此,我們使用LOG 算法,它是由高斯濾波算法和拉普拉斯濾波算法組合而成,其公式如下:
其中,f(x,y)是二維離散信號,G(a,b)是二維高斯函數,L(a,b)是二維拉普拉斯函數。在程序中輸入算子laplace_of_gauss(Image,LaplaceImage,2.0,5,'mirrored'),生成圖7 中的圖片,可以明顯看出通過LOG 算法處理之后,最終得到標定板的邊緣信息,且表現出很好的邊緣檢測能力。

圖7 laplace_of_gauss 邊緣檢測
對于經過標定的相機采集的圖像,圖像的質量有所提高,但仍可能存在一些缺陷,如噪聲大、清晰度不高等問題。因此,為了準確識別焊縫缺陷,須進行圖像預處理。常見的圖像預處理方法包括去噪、增強、分割和形態學處理等,可以根據需求和實際情況選擇不同的技術進行組合使用,從而得到最佳的圖像預處理效果。本文采用的工作流程如圖8所示。

圖8 圖像預處理流程圖
對于數字圖像預處理而言,平滑和去噪是其的基本操作。平滑的目的是消除圖像中的高頻成分,強化低頻部分,去噪是消除圖像噪聲的一種處理。在圖像處理的過程中,有多種方法可供選擇,例如均值濾波、高斯濾波和中值濾波等。本文主要采用高斯濾波和小波變換的組合方式對采集到的圖片進行去噪。其中高斯濾波是通過對像素點周圍的鄰居像素進行權值平均,來計算出該像素點的新值。而小波變換是基于小波分析和閾值處理技術,將一幅圖像通過DWT 拆分成多個子帶,并對每個子帶進行不同的閾值處理。
但由于在某些情況下二者都不能完全消除噪聲,故本文采用兩者結合的方法高斯小波濾波方法對圖像進行濾波去噪處理,其公式為:
式中fdenoised(t)表示去噪后的信號,wj,k表示小波系數的權值,可以通過高斯濾波器計算得到。
如圖9(a)所示,圖片的表面帶有噪音,經過高斯小波濾波處理之后達到了圖9(b)的效果。

圖9
圖像灰度變換是數字圖像處理中常用的預處理技術,用于調整圖像的亮度和對比度以獲得更好的可視化效果。由于成像系統的限制,圖像有時可能具有低對比度或較窄的動態范圍,因此灰度變換成為重要的一步。灰度變換使用數學公式修改每個像素的灰度值,以達到最佳的視覺效果,用Gray 表示灰度值,R、G、B 表示紅、綠、藍三個通道的灰度值,其公式如下:
常見的灰度變換方法包括對比度拉伸、伽瑪校正和閾值。本文采用伽瑪校正方法進行非線性灰度變換,調整每個像素的灰度值以提高圖像對比度和亮度。其公式如下:
其中,r 是原始圖像的像素值(范圍通常為0~255),s 是增強后的像素值,c 是增益因子,γ 是伽馬值。γ 直接決定了輸出像素灰度值變化的強度:當γ>1 時,輸出像素的變化會緩慢,圖像的整體亮度和對比度會較低;當γ=1 時,輸出像素的變化與輸入像素的變化相似,圖像不會發生明顯變化;當γ<1 時,圖像的強光部分會被壓縮,而陰影部分的細節得到增強,從而提高圖像的整體對比度和細節。
在對工件圖像進行高斯小波濾波處理后,需要將其轉換為灰度圖像,并進行伽馬校正來修正圖像的亮度。使用函數rgb1_to_gray(GaussWavelet,GrayImage)將圖像轉換為灰度圖像。經過伽馬校正后,工件灰度圖像的效果如圖10 所示。

圖10 工件灰度圖像
圖像閾值分割二值化是焊縫識別中常用的方法。在焊接過程中,焊縫邊緣與背景的對比度較大,顏色不同。因此,可以使用下面的公式將焊縫圖像二值化,使背景與焊縫分離,從而實現焊縫的自動檢測。
其中,f(x,y)表示原始圖像在(x,y)處的像素值,T 為OTSU 算法自適應選擇出來的閾值。根據OTSU 算法的定義,T 被選取為使類間方差最大的閾值。
在實際作業中,可以使用一些閾值分割算法,如固定閾值二值化、自適應閾值二值化和OTSU 二值化等。本文采用OTSU 二值化算法調用算子threshold,設定閾值在80~149 的范圍,在范圍之內的所有像素被選中,從而將工件從背景中分割開來,從而獲得最佳的二值化結果如圖11所示。

圖11
形態學運算是數字圖像處理中一種基本的圖像處理技術。形態學運算的目的是根據結構元素對原始圖像進行像素級別的操作,從而改變圖像的形狀、大小或提取出感興趣的區域,常用于圖像預處理、圖像分割、輪廓提取、形狀分析等方面。
通過在二值圖像中進行膨脹運算,可以使焊縫區域邊界更加清晰,便于后續的分割和形態學特征提取。運用腐蝕運算可以消除對后續處理過程產生的干擾,增強焊縫的連續性和穩定性,提高檢測精度。但是由于膨脹和腐蝕運算都是局部操作,對全局特征的處理效果有限,可能會導致邊緣模糊、物體形態變化等問題。所以需要涉及其他的形態學運算,如開運算、閉運算、梯度運算、頂帽運算和底帽運算等。它們都是以膨脹和腐蝕為基礎,通過組合、加權等方式進行的一些高級運算,可以更加精細地提取出圖像中的區域。
本文在焊縫缺陷檢測中使用開運算、閉運算和頂帽運算的組合。在焊縫缺陷檢測中應用開運算可以消除噪點和小氣孔等缺陷,使后續檢測更加準確可靠,其公式如下:
在焊縫缺陷檢測中可以采用閉運算來填補小孔和斷裂,提高焊縫的連續性和完整性,其公式如下:
其中,A 表示原始二值化圖像,SE 表示結構元素,⊕表示形態學膨脹運算,?表示形態學腐蝕運算,B 表示開運算后的二值化圖像,C 表示閉運算后的二值化圖像。
則組合運算的公式如下所示:
其中,A 表示原始灰度圖像,B 表示結構元素,?表示形態學腐蝕運算,⊕表示形態學膨脹運算,+表示圖像相加運算,-表示圖像相減運算。該組合方法可以去除低灰度雜質,并增強圖像的亮度和對比度。
在Halcon 中使用opening_circle 算子執行開運算,在程序窗口輸入opening_circle(Rectangle,ImageOpening,Radius),生成圖12,但是由于光源的影響,圖像的呈現并不完整。

圖12 閾值分割后的焊縫
采用closingcircle(ImageOpening,ImageClosing,Radius)和OpeningCircle(ImageClosing_Image,Image_background,RadiusB)算子以此執行閉運算和頂帽運算結果如圖13 所示。

圖13
經過上述的所有處理之后,我們就可以識別出來焊縫的缺陷,然后可以使用Halcon 中的dev_display 函數在原始圖像上標注出來,并通過鏤空顯示或顏色變化等方式實現,如圖14 所示。

圖14 顯示顏色變化
這篇文章是基于一定場地條件下,對工件圖像進行檢測,實驗最終結果以及直方圖分布分別如圖15 所示。

圖15
本文提出了一種基于Halcon 的焊縫缺陷檢測方法。通過對相機標定使用laplace_of_gauss 算子,并對圖像使用適合的處理方法,結果表明該方法能夠準確地檢測出焊縫缺陷區域并且精準地定位缺陷位置。然而,該方法處理的時間較長,并且當光線強度不均或過強時,會導致工件難以分割,對識別造成了一定的困難。盡管如此,在大多數情況下,該方法依然能夠實現,并且具有極高的實用性。