何 煊,李 冰,翟永杰

(1.华北电力大学 自动化系,河北 保定 071003;2.华北电力大学 科技学院,河北 保定 071003)

0 引言

自动化焊接和焊缝识别是薄板焊接未来的发展趋势,其中,焊缝识别是自动化焊接的前提。目前,利用传感技术识别焊缝是实现提高自动化焊接水平的主要方式,也是焊接领域研究的热点[1],由于视觉传感技术具有测量精度高、非接触和不受电磁场干扰等显著优势,其被广泛应用于焊缝识别[2]。陈海永等采用图像伪彩色增强算法得到图像能量分布情况,使用差分搜索算法准确地提取条纹中心线,利用随机抽样一致算法分析图像特征历史数据,实现焊缝特征点预测[3];毛志伟等采用灰度形态学算法去除图像中飞溅、弧光和烟尘,利用图像相减和顶帽变换减小灰度值差异,将动态开窗和最小二乘法结合的方法提取焊缝特征点[4]。

针对原始图像行灰度分布特点,本文提出一种边缘检测和中心提取的焊缝识别算法,采用基于Scharr 算子的边缘检测算法得到条纹边缘,根据条纹边缘选取ROI区域,使用非线性加权重心法获取其中心,通过分析中心行坐标特点来提取焊缝特征,从而识别出焊缝。

1 主动视觉传感系统组成及工作原理

主动视觉传感系统主要由CMOS 相机、镜头、滤光片和一字线激光器组成[5⁃6]。主动视觉传感系统装置图如图1 所示。由图1 可知,一字线激光器相对于薄板倾斜角度为60°,CMOS 相机与薄板表面是垂直关系。当系统工作时,一字线激光器发出的激光平面投射到薄板焊缝表面,CMOS 相机实时采集包含焊缝信息的条纹图像。原始图像及其行灰度分布如图2 所示。

图1 主动视觉传感系统装置图

图2 原始图像及其行灰度分布

由图2 可知,原始图像中背景像素点灰度值较小,条纹像素点灰度值较大。

2 边缘检测

由于原始图像中背景像素点灰度值远小于条纹像素点灰度值,在此采用边缘检测方法获得原始图像中条纹边缘。首先使用梯度算子求取图像方向导数,常用梯度算子有Robert、Sobel 和Scharr 等[7⁃8]。本文采用Scharr 算子计算原始图像水平和垂直方向导数,将水平和垂直方向导数函数分别设为fs(i,j)和fc(i,j),计算过程如下:

式中:fs(i,j)和fc(i,j)分别为像素点(i,j)的水平和垂直方向导数值;fo(i-1,j+1),fo(i+1,j) 和fo(i-1,j-1) 等为原始图像相应像素点灰度值,1 ≤i≤m,1 ≤j≤n。

接着计算原始图像的梯度幅值和方向,将梯度幅值和方向函数分别设为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 滤波后梯度幅值图像及其列分布

式中:σ为高斯函数的标准差;G(x,y)为二维高斯函数。

实现条纹边缘细化需要使用非极大值抑制算法,非极大值抑制算法如式(6)所示。

式中M(i,j)为原始图像中像素点(i,j)梯度幅值。

条纹边缘细化图像及其第256 列梯度幅值分布如图5 所示。由图5 可知,图像中存在一些梯度幅值比较小的孤立点,影响后续ROI 区域选取。

图5 条纹边缘细化图像及其第256 列分布

删除条纹边缘细化图像中孤立点需要采用阈值分割算法,常用阈值分割算法有全局阈值法、Otsu 算法和最大熵法等[10]。本文利用全局阈值法进行阈值分割,将阈值分割后图像函数设为M′(m,n),利用式(7)实现阈值分割。条纹边缘及其第256 列梯度幅值分布如图6所示。

由图6 可知,该方法有效地删除了条纹边缘细化图像中孤立点,从而得到实际条纹边缘。

图6 实际条纹边缘图像及其第256 列分布

式中:M′(i,j)为阈值分割后图像像素点(i,j)的梯度幅值;k为孤立点梯度幅值中最大值。

3 获取ROI 区域中心

根据条纹边缘图像梯度幅值分布特点,将每列灰度值大于0 的两个像素点分别设为ROI 区域每列的上边界和下边界,实现从原始图像中选取ROI 区域,ROI 区域如图7 所示。由图7 可知,ROI 区域包含比较多的焊缝特征信息,则提取焊缝特征运算量比较大。

图7 ROI 区域

获取ROI 区域中心需要利用中心提取算法,常见的中心提取算法有极值法、阈值法和重心法等算法。本文采用非线性加权重心法获取ROI 区域每列中心,通过调节加权系数t实现对每列灰度值较大像素点的权重调节[11],使实际获取的ROI 区域中心更接近条纹实际中心,将ROI 区域函数[12]设为fr(m,n),选取t为2.15,利用式(8)求取其中心行坐标,ROI 区域中心行坐标变化如图8 所示。由图8 可知,ROI 区域中心某些列的行坐标为0。

图8 ROI 区域中心行坐标变化

式中:xj为ROI 区域中心第j列行坐标;fr(i,j)为ROI 区域像素点(i,j)灰度值;1 ≤i≤m,1 ≤j≤n;t为加权系数。

4 焊缝识别

针对ROI 区域中心行坐标变化特点,通过搜索ROI区域中心行坐标为0 的像素点提取焊缝特征,将第一个中心行坐标为0 的像素点作为焊缝左端坐标,记为将最后一个中心行坐标为0 的像素点作为焊缝右端坐标,记为将焊缝左右端坐标进行相减运算得到焊缝宽度l为i-j,将焊缝左右端坐标进行相加相除运算得到焊缝中心为焊缝识别如图9 所示。由图9 可知,本文算法能准确地识别出焊缝。

图9 焊缝识别

5 实验分析

通过对4 幅采集图像分别采用极值法、边缘取中法和本文算法求取焊缝宽度和中心。焊缝宽度和中心如表1 所示。因为骨架表面反射率高于薄板表面反射率,中间背景像素点灰度值大于左右背景像素点灰度值。由表1 可知,使用极值法和边缘取中法得到的焊缝宽度和中心都小于本文算法计算得到的焊缝宽度和中心,原因是其他算法将中间背景像素点看作是左右条纹,本文所提算法提取焊缝宽度和中心的精度高,去除了物体表面反射率不均匀的影响。

表1 焊缝宽度和中心

6 结论

本文根据原始图像行灰度分布特点,采用Scharr 算子求取原始图像方向导数、梯度幅值和梯度方向,接着使用高斯滤波算法去除梯度幅值中噪声,然后利用非极大值抑制算法细化较粗的条纹边缘,最后采用阈值分割算法删除孤立点,从而实现条纹边缘检测。

根据所得条纹边缘实现从原始图像选取ROI 区域,采用非线性加权重心法获取ROI 区域中心,通过对ROI区域中心行坐标进行分析得到焊缝特征,从而实现焊缝识别。

通过将本文算法与极值法和边缘取中法相对比,本文所提算法能够较好地去除物体表面反射率不均匀的影响,提取焊缝宽度和中心的精度较高。