何 煊,李 冰,翟永杰
(1.華北電力大學 自動化系,河北 保定 071003;2.華北電力大學 科技學院,河北 保定 071003)
自動化焊接和焊縫識別是薄板焊接未來的發(fā)展趨勢,其中,焊縫識別是自動化焊接的前提。目前,利用傳感技術識別焊縫是實現(xiàn)提高自動化焊接水平的主要方式,也是焊接領域研究的熱點[1],由于視覺傳感技術具有測量精度高、非接觸和不受電磁場干擾等顯著優(yōu)勢,其被廣泛應用于焊縫識別[2]。陳海永等采用圖像偽彩色增強算法得到圖像能量分布情況,使用差分搜索算法準確地提取條紋中心線,利用隨機抽樣一致算法分析圖像特征歷史數(shù)據(jù),實現(xiàn)焊縫特征點預測[3];毛志偉等采用灰度形態(tài)學算法去除圖像中飛濺、弧光和煙塵,利用圖像相減和頂帽變換減小灰度值差異,將動態(tài)開窗和最小二乘法結合的方法提取焊縫特征點[4]。
針對原始圖像行灰度分布特點,本文提出一種邊緣檢測和中心提取的焊縫識別算法,采用基于Scharr 算子的邊緣檢測算法得到條紋邊緣,根據(jù)條紋邊緣選取ROI區(qū)域,使用非線性加權重心法獲取其中心,通過分析中心行坐標特點來提取焊縫特征,從而識別出焊縫。
主動視覺傳感系統(tǒng)主要由CMOS 相機、鏡頭、濾光片和一字線激光器組成[5?6]。主動視覺傳感系統(tǒng)裝置圖如圖1 所示。由圖1 可知,一字線激光器相對于薄板傾斜角度為60°,CMOS 相機與薄板表面是垂直關系。當系統(tǒng)工作時,一字線激光器發(fā)出的激光平面投射到薄板焊縫表面,CMOS 相機實時采集包含焊縫信息的條紋圖像。原始圖像及其行灰度分布如圖2 所示。
圖1 主動視覺傳感系統(tǒng)裝置圖
圖2 原始圖像及其行灰度分布
由圖2 可知,原始圖像中背景像素點灰度值較小,條紋像素點灰度值較大。
由于原始圖像中背景像素點灰度值遠小于條紋像素點灰度值,在此采用邊緣檢測方法獲得原始圖像中條紋邊緣。首先使用梯度算子求取圖像方向?qū)?shù),常用梯度算子有Robert、Sobel 和Scharr 等[7?8]。本文采用Scharr 算子計算原始圖像水平和垂直方向?qū)?shù),將水平和垂直方向?qū)?shù)函數(shù)分別設為fs(i,j)和fc(i,j),計算過程如下:
式中:fs(i,j)和fc(i,j)分別為像素點(i,j)的水平和垂直方向?qū)?shù)值;fo(i-1,j+1),fo(i+1,j) 和fo(i-1,j-1) 等為原始圖像相應像素點灰度值,1 ≤i≤m,1 ≤j≤n。
接著計算原始圖像的梯度幅值和方向,將梯度幅值和方向函數(shù)分別設為M(i,j)和H(i,j),梯度幅值和方向計算公式:
式中M(i,j)和H(i,j)分別為像素點(i,j)的梯度幅值和梯度方向角。
梯度幅值列分布如圖3 所示,由圖3 可知,圖像中依然存在較多噪聲。
圖3 梯度幅值列分布
通過對梯度幅值圖像進行濾波去除噪聲,目前常見濾波算法有均值濾波、中值濾波和高斯濾波等[9]。本文使用高斯濾波算法去除梯度幅值圖像中噪聲,模板窗口設為9×9,標準差設為3,利用式(5)對梯度幅值圖像進行卷積,高斯濾波后梯度幅值圖像及其列分布如圖4 所示。由圖4可知,高斯濾波算法有效地去除了噪聲,但條紋邊緣較粗。
圖4 濾波后梯度幅值圖像及其列分布
式中:σ為高斯函數(shù)的標準差;G(x,y)為二維高斯函數(shù)。
實現(xiàn)條紋邊緣細化需要使用非極大值抑制算法,非極大值抑制算法如式(6)所示。
式中M(i,j)為原始圖像中像素點(i,j)梯度幅值。
條紋邊緣細化圖像及其第256 列梯度幅值分布如圖5 所示。由圖5 可知,圖像中存在一些梯度幅值比較小的孤立點,影響后續(xù)ROI 區(qū)域選取。
圖5 條紋邊緣細化圖像及其第256 列分布
刪除條紋邊緣細化圖像中孤立點需要采用閾值分割算法,常用閾值分割算法有全局閾值法、Otsu 算法和最大熵法等[10]。本文利用全局閾值法進行閾值分割,將閾值分割后圖像函數(shù)設為M′(m,n),利用式(7)實現(xiàn)閾值分割。條紋邊緣及其第256 列梯度幅值分布如圖6所示。
由圖6 可知,該方法有效地刪除了條紋邊緣細化圖像中孤立點,從而得到實際條紋邊緣。
圖6 實際條紋邊緣圖像及其第256 列分布
式中:M′(i,j)為閾值分割后圖像像素點(i,j)的梯度幅值;k為孤立點梯度幅值中最大值。
根據(jù)條紋邊緣圖像梯度幅值分布特點,將每列灰度值大于0 的兩個像素點分別設為ROI 區(qū)域每列的上邊界和下邊界,實現(xiàn)從原始圖像中選取ROI 區(qū)域,ROI 區(qū)域如圖7 所示。由圖7 可知,ROI 區(qū)域包含比較多的焊縫特征信息,則提取焊縫特征運算量比較大。
圖7 ROI 區(qū)域
獲取ROI 區(qū)域中心需要利用中心提取算法,常見的中心提取算法有極值法、閾值法和重心法等算法。本文采用非線性加權重心法獲取ROI 區(qū)域每列中心,通過調(diào)節(jié)加權系數(shù)t實現(xiàn)對每列灰度值較大像素點的權重調(diào)節(jié)[11],使實際獲取的ROI 區(qū)域中心更接近條紋實際中心,將ROI 區(qū)域函數(shù)[12]設為fr(m,n),選取t為2.15,利用式(8)求取其中心行坐標,ROI 區(qū)域中心行坐標變化如圖8 所示。由圖8 可知,ROI 區(qū)域中心某些列的行坐標為0。
圖8 ROI 區(qū)域中心行坐標變化
式中:xj為ROI 區(qū)域中心第j列行坐標;fr(i,j)為ROI 區(qū)域像素點(i,j)灰度值;1 ≤i≤m,1 ≤j≤n;t為加權系數(shù)。
針對ROI 區(qū)域中心行坐標變化特點,通過搜索ROI區(qū)域中心行坐標為0 的像素點提取焊縫特征,將第一個中心行坐標為0 的像素點作為焊縫左端坐標,記為將最后一個中心行坐標為0 的像素點作為焊縫右端坐標,記為將焊縫左右端坐標進行相減運算得到焊縫寬度l為i-j,將焊縫左右端坐標進行相加相除運算得到焊縫中心為焊縫識別如圖9 所示。由圖9 可知,本文算法能準確地識別出焊縫。
圖9 焊縫識別
通過對4 幅采集圖像分別采用極值法、邊緣取中法和本文算法求取焊縫寬度和中心。焊縫寬度和中心如表1 所示。因為骨架表面反射率高于薄板表面反射率,中間背景像素點灰度值大于左右背景像素點灰度值。由表1 可知,使用極值法和邊緣取中法得到的焊縫寬度和中心都小于本文算法計算得到的焊縫寬度和中心,原因是其他算法將中間背景像素點看作是左右條紋,本文所提算法提取焊縫寬度和中心的精度高,去除了物體表面反射率不均勻的影響。
表1 焊縫寬度和中心
本文根據(jù)原始圖像行灰度分布特點,采用Scharr 算子求取原始圖像方向?qū)?shù)、梯度幅值和梯度方向,接著使用高斯濾波算法去除梯度幅值中噪聲,然后利用非極大值抑制算法細化較粗的條紋邊緣,最后采用閾值分割算法刪除孤立點,從而實現(xiàn)條紋邊緣檢測。
根據(jù)所得條紋邊緣實現(xiàn)從原始圖像選取ROI 區(qū)域,采用非線性加權重心法獲取ROI 區(qū)域中心,通過對ROI區(qū)域中心行坐標進行分析得到焊縫特征,從而實現(xiàn)焊縫識別。
通過將本文算法與極值法和邊緣取中法相對比,本文所提算法能夠較好地去除物體表面反射率不均勻的影響,提取焊縫寬度和中心的精度較高。