廉 杰, 吕学勤, 顾冬霞, 王 敏
(1.上海电力大学, 上海 200090; 2.国网上海青浦供电公司, 上海 201700;3.国网上海市北供电公司, 上海 200040)
焊接信息的自动提取对于实现焊接自动化有着至关重要的作用。目前,随着基于视觉传感器的焊缝识别技术的不断深入发展,其速度和准确性不断提高,应用范围也越来越广。其中,由电荷耦合元件(Charge Coupled Device,CCD)摄像机和激光组成的激光视觉传感器,具有结构简单、测量精度高等特点,因而在焊接自动化领域得到了广泛应用[1]。激光视觉传感是通过由结构光投射在焊缝表面而形成激光的条纹,获得焊缝宽度、深度等轮廓信息的一种技术[2]。为了能够准确地提取焊缝特征信息,需要首先获取光条纹中心线,然后对其进行进一步的特征分析和处理,从而获得精确度更高的特征信息。
SUNG K等人[3]考虑到图像处理时间有限,对激光进行了预处理,将其转换为5条激光线,并计算每个像素列中的激光强度,选取平均强度最高的峰值组形成一组激光线,然后通过分割和合并得到特征点。但是其激光线提取的精度不高,最终会影响图像特征点的提取精度。CUI H R等人[4]采用Steger算法获取光条纹中心线,有效地提高了提取结果的准确性。
Steger算法[5]是一种被广泛采用的亚像素中心线提取算法,具有很高的精度,其原理是通过Hessian矩阵和泰勒展开求得光条横截面上一阶导数过零点,然后计算得出光条纹中心线位置。但是,在连续的焊接工作中,会产生大量需要识别的焊缝图像,而对于每一个焊缝图像来说,计算Hessian矩阵意味着对每个点都需要进行至少5次大模板的二维高斯卷积运算,导致焊缝信息识别的计算量很大,无法满足提取光条纹中心线的实时性要求。因此,研究人员对该算法进行了改进。南方等人[6]基于Steger算法,通过随机Hough变换得到边缘区域的边缘线,然后根据宽度值对边缘区域进行分割,通过设置合适的参数来提取光条纹中心线。该方法在一定程度上提高了计算速度,但仍有改进的空间。
综上所述,在基于机器视觉的焊缝识别方面,相关学者贡献了一些非常优秀的研究成果,但仍存在算法计算量大、无法满足实时性要求的问题,且算法在提取焊缝特征信息的精度方面仍有欠缺。为了提高实时性和准确性,本文提出了基于改进算法的焊缝光条纹中心线提取方法。
本文采用基于视觉传感的机器人焊接系统,主要由机器人本体、视觉传感器、计算机控制平台等部分组成,如图1所示。
图1 基于视觉传感的机器人焊接系统
系统采用十字滑块作为焊接机器人的机械臂,将激光视觉传感器系统刚性固定于焊枪的前部,且使线激光器与CCD摄像机的中心线在同一平面内,呈小于90°的夹角,则此时摄像机刚好可以完整拍摄到待焊接工件上的激光条纹[7]。CCD摄像机采集到的焊缝图像被传回计算机控制平台,经过一系列的图像处理,提取出焊缝的宽度、深度等特征信息后,根据相关工程设定,向机器人执行机构发出控制指令[8]。通过激光视觉传感器的引导,焊接机器人可以实时跟踪焊缝,完成焊接任务。
焊缝图像的处理一般分为预处理和后处理两部分。工业环境中,受焊接导致的飞溅、烟尘及电噪声等因素的影响,摄像机采集的图像中会包含大量的噪声信号。通过滤波去噪等预处理操作,可以有效地去除噪声信号,获得更为真实的图像信息[9];而后处理的任务则是提取滤波后图像的宽度、深度等特征信息。图2 为CCD摄像机采集的V型焊缝图像。
图2 V型焊缝图像
中值滤波作为一种常用的平滑滤波方法,能够在有效消除图像噪声的基础上,很好地保护原始图像信号[10]。其定义为
Yi,j=Smed[Xi,j]=Smed[Xi+m,j+n;(x,y)∈W],
(1)
式中:Yi,j——窗口W中的全部像素灰度值的中值;
Smed——求取中值运算;
Xi,j——中心坐标(i,j)处的像素值;
(x,y)——图像像素坐标;
W——图像中选取的窗口部分;
L,H——窗口的水平和垂直长度,一般为奇数。
图3为中值滤波后的V型焊缝图像。
图3 中值滤波后的V型焊缝图像
在诸多的图像分割算法中,Otsu法能够较快地自动筛选出最佳阈值,并根据最佳阈值来实现图像的二值化。该算法计算简单,能够克服亮度和对比度造成的影响,是阈值选取的最佳算法[11]。本文采用Otsu法分割图像,确定其最佳阈值的公式为
(2)
式中:T——背景与前景之间的类间方差;
Smax——求取最大值运算;
w0——背景图像在整体图像灰度中的占比;
t——分割阈值;
u0——背景图像的灰度均值;
u——整体图像的灰度均值;
w1——目标图像在整体图像灰度中的占比;
u1——目标图像的灰度均值。
当T取最大值时,t即为最佳的分割阈值。图4为焊缝图像阈值分割后的结果。由图4可以看出,阈值分割后的图像清晰,所需特征信息都保存完整,且无明显的噪声区。
图4 焊缝图像阈值分割后的结果
传统的Steger算法可以精确地求出光条纹中心线的位置,并且达到亚像素精度。首先由Hessian矩阵得到光条纹的法线方向,然后在法线方向上利用泰勒展开求导,即可求得中心位置[5]。对于图像中光条纹上的任意一点(x,y),Hessian矩阵可以表示为
(3)
式中:g(x,y)——高斯函数;
f(x,y)——图像中坐标为(x,y)点的像素;
rxx,rxy,ryy——光条纹图像沿相应方向的二阶偏导数。
求解Hessian矩阵是一个运算量很大的过程,主要原因是需要在整个图像范围内,对所有的点进行复杂的大模板的二维高斯卷积运算5次以上。对于工业要求下的焊缝信息获取,采用传统Steger算法很难实现快速提取包含焊缝轮廓的结构光条纹中心线,使得整个特征提取过程的实时性受到极大影响。因此,需要根据焊缝图像的特点,对传统Steger算法进行改进,以提高算法的速度。
由于结构光条纹为一条曲线,在整幅图像中所占的像素数很少,且与背景的像素灰度值相比,其灰度值很高,具有明显的差异。为了减少运算量,提高运算效率,设置固定边长的矩形方框,将图像进行网格化处理,分割后的图像如图5所示。对每个方框取灰度均值,判断该区域是否有结构光条纹所在的像素点,提取出所有包含结构光条纹的矩形框,使其并集能构成完整的结构光条纹图像[12]。此时,只需要对提取的矩形区域进行高斯卷积即可,有效地避免了对非感兴趣区进行大量的不必要的高斯卷积运算。
图5 焊缝图像矩形网格分割示意
由于高斯函数具有可分离性,故可将图像的二维高斯卷积进行简化,用一次高斯行卷积和一次高斯列卷积进行替代,从而降低运算复杂度[13]。当二维高斯模板的大小为n×n时,对其进行一次二维卷积的运算量为n2次乘加,而两次一维卷积的运算量为2n次乘加,可以看出,卷积的运算量大幅减小。另外,微分形式的高斯卷积核也具有可分离性,可以进行简化替代,简化后的公式为
(4)
式中:gx,gy,gxx,gxy,gyy——二维高斯核函数;
g′(x),g′(y),g″(x),g″(y)——一维高斯核函数。
根据上述分析,对原算法进行改进,对图像的5次二维卷积可以转化为10次一维卷积。此时,图像中一个像素点的卷积运算量将由直接计算二维卷积的5n2次乘加降低为10n次乘加,对分辨率为M×M的图像采用大小为N×N的卷积模板运算的计算复杂度从O(5×M×M×N×N)降到O(10×M×M×N),处理速度大幅提高。
采用精度较高的灰度重心法与本文所提出的改进算法同时进行光条纹中心线提取,结果对比如图6所示。由图6可以看出,在V型焊缝处,采用灰度重心法提取到的光条纹中心线存在多次跳变,并产生了3个间断点;在I型焊缝处,用灰度重心法提取到的光条纹中心线存在一处跳变;对于两种类型的焊缝,采用本文改进算法提取到的光条纹中心线均没有明显的间断点,整体也更为平滑,更能准确反映光条纹中心线的特征,降低特征提取误差。
图6 两种算法提取的光条纹中心线
为检验本文算法的提取速度,对本文算法、灰度重心法、传统Steger算法分别进行运算时间的测试,3种算法的平均耗时分别为29 ms,12 ms,193 ms。可见,本文算法提取速度快于传统Steger算法,接近于灰度重心法的速度。在保证提取质量的基础上,本文算法满足了实时性要求。
为了保证焊缝坡口特征信息提取的准确性,同时提高提取速度,对基于激光视觉的焊缝图像光条纹中心线提取进行了研究。建立了基于激光视觉传感的焊缝坡口图像识别系统,对典型的V型和I型坡口的焊缝光条纹中心线提取方法进行了测试和对比。改进后的Steger算法不仅能准确地提取出光条纹中心线,而且提取速度可以满足实时性的要求。