APP下载

焊接机器人实时引导中光条快速提取算法研究

2015-04-19刘常杰张云昊

激光技术 2015年5期
关键词:条纹高斯灰度

刘常杰,李 斌,郭 寅,张云昊,刘 洋

(1.天津大学精密测试技术及仪器国家重点实验室,天津300072;2.清华大学 精密仪器系,北京100084)

引 言

由激光三角法原理发展而来的结构光视觉测量方法在目前工业领域应用愈加广泛,该方法具有结构简单、精度较高、可靠性好等优点。其中,结构光条纹图像包含被测量物体表面的3维形貌信息,是被测点3维坐标求取的依据。光条提取是结构光视觉传感器最常用的算法,提取精度决定测量精度,提取算法稳定性决定测量稳定性[1]。

目前常用的激光条纹中心提取算法有极值法、灰度重心法[2]、梯度重心法[3]、方向模板法[4]、互相关算法[5]、高斯拟合法[6]、曲线拟合法[7]和 Steger方法[8]等。极值法处理速率极快,但精度低,受噪声影响严重。灰度重心法处理速率快,易受环境噪声影响,常结合阈值分割进行处理。基于骨架的灰度重心法解决了精度差的缺点,精度能达到亚像素级,但算法复杂、处理时间长,难以满足实时性的要求。梯度重心法结合梯度法改进的阈值法和重心法相结合,具有一定的精度、抗噪性和鲁棒性,但难以满足高精度测量。方向模板法处理速率快,但提取精度不高、易受环境影响。互相关算法有较高的精度和实时性。高斯拟合法和曲线拟合法精度高,但处理速率较慢,且不适合窄光条提取。在此基础上提出的自适应窗曲线拟合方法和变边限高斯拟合方法[9]一定程度上提升了算法速率。Steger方法精度高、稳定性高,但运算量很大,很难实现结构光条纹实时性提取。为解决Steger算法运算量大的问题,基于感兴趣区域(region of interest,ROI)的结构光条纹中心混合图像处理方法和基于脊线跟踪的结构光条纹中心提取方法先后提出,大大提高了处理速率[10]。

作者在嵌入式Linux系统中采用一种激光条纹快速提取方法,并在自制6410开发板上进行实验验证,采用灰度中心法粗略提出条纹中心,并用承上启下的搜索方式进行优化搜索,然后采用优化的Hessian矩阵法对条纹进行精确提取。该提取方法具有精度高、速率快的特点,从而可运用到视觉传感器中,满足其实时性和高精度的要求。

1 硬件平台

本研究应用在视觉测量系统实时引导机器人高精度焊接中,如图1所示,系统需要实时测量出被测特征与理论位置的差别,并实时引导机器人对轨迹进行微调整,从而实现高精度焊接。柔性视觉器通过激光条纹信息获取预焊点3维坐标,并反馈到焊接系统,进而调整焊枪的位姿,对其误差进行补偿,提高焊接质量。对于高节拍的生产线而言,每个机器人需要在1s左右的时间对一个焊点进行精确焊接,而传感器进行图像采集到返回给机器人补偿信息的过程不超过0.5s。因此要保证视觉测量系统的高精度和实时性,实现对激光条纹中心的快速、精确提取对结构光测量系统的研究具有重要意义。

Fig.1 Welding robot and structured light vision sensor

在已有的柔性传感器设计中,现有硬件平台有个人计算机(personal computer,PC)、微控制单元(micro control unit,MCU)、复杂可编程逻辑器件(complex programmable logic device,CPLD)平台、现场可编程门阵列(field-programmable gate array,FPGA)平台、微处理器(advanced risc machines,ARM)平台等。PC机成本比较高、处理速率一般。MCU+CPLD平台数据处理速率较慢、多任务处理能力较弱、FPGA平台处理速率快、多任务处理能力较弱、可扩展性不强,适合图像采集和预处理,高速的、重复的处理过程适合在FPGA中处理。ARM平台设计复杂、多任务处理能力强、可扩展性强,适合进行高层处理算法。考虑到本应用中柔性传感器不仅完成图像采集和处理工作,还要完成传感器和机器人的通信工作,因此选用可以使用Linux操作系统、易于开发和后期扩展、主频高、处理速率快的ARM11平台。

由于视觉测量系统实时引导机器人高精度焊接系统在室内进行时,外界光强影响变化不大,该系统对精度和速率要求较高。根据系统要求,本文中提出优化Steger快速条纹提取算法,并在自制6410开发板上进行验证,该方法可以降低外界噪声的影响,提高提取速率和精度。

2 优化Steger快速条纹提取算法

2.1 Steger方法概述

Steger方法是一种高精度、高鲁棒性的激光条纹中心提取方法[8],通过高斯卷积算出的Hessian矩阵得到条纹的法线方向,在此方向上进行泰勒展开求取条纹中心亚像素坐标,常用在精密测量中。

Steger方法具有精度高、稳定性好的特点,但由于图像上的所有点都要参与大规模高斯卷积计算,导致运算量极大,算法处理速率很低,不能满足实时性要求。因此作者在此方法的基础上进行优化,大大缩短处理时间。本文中算法首先采用中值滤波对图像进行预处理,然后用灰度重心法粗略提取条纹中心,最后运用Hessian矩阵法对粗提的条纹中心特定处理区域内的条纹进行亚像素中心精确提取。

2.2 中值滤波

首先对图像进行中值滤波[11],对图像进行预处理,去除大部分由测量环境和图像采集过程中等引起的椒盐噪声。

2.3 灰度重心法粗提取

2.3.1 灰度重心法粗略提取中心位置 在预处理之后,本文中采用灰度重心法对光条进行粗提取,其原理是计算图像中光线灰度分布的重心位置,逐行进行计算,采用优化的扫描方式分割出条纹区域,计算出此区域光条灰度重心的横坐标作为其光条中心位置,假设图像像素大小为M×N,对第j行阈值分割后的连续m个像素参与计算,把这m个像素中像素的横坐标设为xi,相应灰度值为Ii,其中i∈[1,m],计算得出第j行的光条中心横坐标为Xj,其中j∈[1,N],具体计算公式如下:

2.3.2 扫描方式 在进行灰度重心法粗提取的时候,采用优化的扫描方式对图像进行搜索,可以大大缩短搜索时间,提高算法的速率。

针对图像上连续或间断的条纹图像,本文中在图像相邻行之间光条中心位置采用优化的搜索方式,缩小搜索范围,从而提高处理速率。从第1行开始对图像进行整行搜索进行梯度阈值法分割图像,然后提取中心,如果不满足要求,则下一行继续整行搜索,直到第i行阈值分割后进行灰度重心粗提取得到条纹中心Xi,则在第i+1行Xi左右各7个像素进行阈值分割中心提取工作,这样只需所搜这15个像素即可,如果找到中心则进入下一行,没找到中心则再改行重新进行整行搜索,以此类推完成整幅图像。图2为不连续条纹搜索示意图。

Fig.2 Coarse search of center location of discontinuous laser strips

2.4 优化Hessian矩阵方法精提取

在粗提取后,对图像使用优化Hessian矩阵方法进行精提取,由于传统求Hessian矩阵方法的过程中,图像上的每个点至少要进行5次高斯卷积计算,运算量极大,难以达到实时性条纹提取要求。由于高斯卷积具有可分离性,在不影响结果的前提下,可将2维高斯卷积改用两次1维高斯卷积[12]代替,两次卷积使用同一个1维模板,先沿竖直方向进行卷积,计算出结果后再沿水平方向进行卷积,以求得最终结果。这样将1维卷积中的重复部分除去,将图像处理的5n2次乘加减少为8n次乘加,结合灰度重心粗提取,在粗提取的条纹附近自动分割出条纹所在区域作为图像处理区域,做此优化后,可大幅减小算法的运算量,并保证Hessian矩阵算法的精度。

本文中提出的优化条纹处理方法,结合灰度重心粗提取,在粗提取的条纹附近自动分割出条纹所在区域作为图像处理区域,依据条纹宽度在整条条纹取边缘整像素坐标后左右各取N个像素点,即为该段图像的处理区域,如果条纹是分段的,则处理区域也分段处理。在选出的所有区域内使用1维高斯卷积代替2维卷积求得相应的Hessian矩阵,根据Hessian矩阵计算出每点对应的条纹法线方向,在此方向上进行泰勒展开计算出极值点,即为亚像素级的激光条纹中心坐标。

设求取Hessian过程中,g(x,y)为N阶高斯卷积模板,G(x,y)为高斯函数的 2 阶偏导,I(x,y)是以(x,y)为中心、大小为N×N的图像矩阵,Ixx,Ixy,Iyy为高斯函数的2阶偏导与图像的卷积,Hessian矩阵可表示为:

同理可求得Ixy和Iyy。

求得Hessian矩阵后,可根据Hessian矩阵的特征值和特征向量得到条纹的法线方向。图像上点(x0,y0)的法线方向由该点2阶方向导数绝对值取极大值的方向得到,即为其Hessian矩阵最大特征值的绝对值所对应的特征向量(nx,ny)。求得法线方向后将此点图像灰度分布函数沿该方向2级泰勒展开,表示为I(x0+tnx,y0+tny),光条灰度值在该方向上近似呈现高斯分布,光强越大,越靠近光条中心,因此求出该方向上的灰度极值,即当I(x0+tnx,y0+tny)的1阶导数为0 时,得到的点 (x0+tnx,y0+tny)即为点(x0,y0)法线方向上对应的亚像素条纹中心点,该点的切线方向即为条纹方向。其中,Ix和Iy为高斯函数的1阶偏导与图像的卷积,且:

Fig.3 Processing area

图3a为原算法处理区域,图3b为本文中算法处理区域。本文中算法只在图3b所示的处理区域内对条纹进行高斯卷积计算,相比原算法对如图3a所示的处理区域进行计算,大大减小了运算量,并保证了Hessian矩阵算法的计算精度,实现了激光条纹的快速提取。

2.5 本文中算法流程图

算法及系统流程图如图4所示,图5是焊接机器人实时引导流程。

Fig.4 Algorithm flowchart in this article

Fig.5 Flowchart of welding robot real-time guidance

3 实验与分析

根据以上算法,在自制6410开发板上进行了实验验证。实验分为三部分:(1)采用优化Steger方法提取激光条纹实验;(2)与Steger算法比较试验;(3)算法精度验证实验。

3.1 硬件系统设计[13]

考虑传感器要完成图像采集和图像处理工作,并与机器人进行实时通讯,还有激光器的控制工作,并基于系统对算法的高处理速率、实时性和多任务处理的要求,以及系统后期的可扩展性,因此选用ARM11平台、SAMSUNG公司的S3C6410核心芯片进行硬件设计,S3C6410主频可达667MHz,运算能力强、功能齐全、开发资料丰富、可扩展性强。该系统采用底板加核心板的硬件结构,节约空间,可完成柔性传感器的设计。该系统包括以下几个模块:采集模块采集电荷耦合器件(charge coupled device,CCD)相机拍摄的图片信息;存储模块用于存储图片信息和其它信息(存储模块包括NAND FLASH闪存和双倍速率同步动态随机存储器(double data rate synchronous dynamic random access memory,DDR SDRAM));通信模块用于与机器人和激光器的实时通信(通过局域网(local area network,LAN)进行数据传输,通过通用输入输出端口(general purpose input output,GPIO)控制激光器开关);调试模块用于开发阶段的调试工作,包括通用异步收发传输器(universal asynchronous receiver/transmitter,UART),其中 6410 有1个RS-232C标准(electronic industry association recommended standard 232,EIA-RS-232C)串口和3个晶体管-晶体管逻辑电平(transistor-transistor logic,TTL)串口,通用串行总线(universal serial bus on-the-go,USB OTG)端口和联合测试行为组织(joint test action group,JTAG)3种端口。各个模块由ARM内核通过AHB系统总线(advanced high performance bus,AHB)进行控制,系统图如图6所示。

Fig.6 Hardware framework

3.2 软件系统设计

采用稳定性好、资源丰富易开发的Linux系统平台,并以V4L2作为视频驱动框架,进行应用程序设计:传感器上电自启动,等待机器人进入预设位置的命令后开始进行测量任务,使用V4L2的用户层接口函数来完成图像采集工作,进行激光条纹中心提取,进行数据处理后算出机器人偏移位置数据,机器人接到数据后调整位置进行焊接,之后再进入下个焊接任务点以完成整个焊接任务。

3.3 激光条纹提取实验

激光条纹提取实验在自制6410开发板平台上进行,将传感器与PC机相连,将处理后的图片和数据通过socket网络传给PC机进行数据分析。选用工作距200mm、波长635nm的激光器投射激光,选用Toshiba Teli Corporation CCD工业相机采集图像,在室内环境条件下,以特征孔为被测对象,将激光条纹打到被测孔特征上进行实验验证。采用本文中算法进行激光条纹中心提取,进行高斯卷积时取σ=1.5,n=3,进行精提取时取N=3,图像像素大小设置为768×576,如图7所示,采用本文中算法进行中心提取后的图像如图8所示,图中包括原始图像和提出的条纹中心。

Fig.7 Stripe images to be processed

Fig.8 Extraction results of stripe

3.4 与Steger算法比较实验

3.4.1 精度比较实验 对图7中的条纹图像进行处理,并对Steger方法和本文中算法的提取精度进行了分析比较,实验结果如表1所示。由表1可知,本算法与Steger算法之间的误差约为0.071pixel,具有很好的精度。

Table 1 Comparison of stripe center extraction accuracy

Fig.9 Image of single linear stripe

3.4.2 运算速率比较实验 对图9所示的单线状条纹图像进行处理,并对Steger方法和本文中算法的运算速率进行了分析比较,理论上卷积运算量Steger方法有5n2×768×576=19906560次乘加,本文中的算法有8n×7×576=96768次乘加,Steger算法是本文中算法的200多倍。实验结果如表2所示,本文中算法提取速率比传统Steger方法提高100多倍,运行速率大幅提升,满足系统要求。

3.5 精度验证实验

为了防止连续采集图像时存在图像重叠,采集的图像有黑边、图像抖动和图像纯在黑边的现象,本文中对6410相机接口、TVP5150寄存器及相机驱动进行优化设置,保证图像采集的稳定性。

(1)设置TVP5150部分BT656输出。

(2)设置6410驱动部分为interlace模式、BT656格式、设置为720像素×576像素,每场为720像素×288像素,交替输出。

(3)设置应用程序为768像素×288像素格式,识别BT656的F位;偶数场存在0,2,奇数场在1,3。最后奇偶场合并为一帧。

Linux V4L2驱动为camera接口申请4块内存,由于相程序读取速率约为相机写入速率的4.5倍,为了在取多幅图像时防止内存中的数据在完全读出之前被新数据洗掉,本文中采用相机等待一场图像捕捉完毕后停止捕捉来采集图像,采集完毕后再开始捕捉的方法。以此方法可以保证采集图像的稳定性及对激光条纹提取算法验证的可靠性。

以此方法对本文中的算法进行重复性实验,在相同环境中,对条纹图像进行多幅连续拍摄,计算出的每幅条纹图像的中心线理论上均应相同,而实际情况由于多种原因而有误差:硬件系统的制造误差及实验环境的影响导致每次采集的图像不能保证完全相同;算法本身的误差也会直接影响条纹提取的精度。现忽略了硬件系统及实验环境的影响,且修改后的相机驱动不会影响图片采集,直接分析本文中的算法对条纹精度提取的影响,实验中取条纹图像的第11行条纹进行多次中心提取分析,如表3所示,采用本文中的算法进行激光条纹中心提取,具有较小的重复性误差。

Table 3 Repetitive experiments of the algorithm in this paper

4 结论

采用优化的Steger算法对激光条纹进行了亚像素级别的条纹中心提取,并在自制6410开发板上进行实验验证。该方法对图像条纹进行预处理,并采用优化处理区域,提高了算法精度,大幅减小运算量,提升了算法运行速率。实验结果表明,在保证Hessian矩阵算法高精度和高鲁棒性的前提下,使用优化Steger算法进行激光条纹中心提取,精度高、速率快、鲁棒性好,适合用于视觉测量系统实时引导机器人高精度焊接中。

[1] CHEN H D,ZHOU G,WANG C J,et al.An algorithm for laser stripe matching based on the epipolar constraint[J].Laser Technology,2003,27(6):584-587(in Chinese).

[2] LI D,GENG N,KANG J N.Research on laser stripe centre extraction algorithm under complex background[J].Computer Applications and Software,2013,30(3):271-273(in Chinese).

[3] WU J Y,WANG P J,CHEN J H,et al.Method of linear structured light sub-pixel center position extracting based on gradient barycenter[J].Journal of Image and Graphics,2009,14(7):1354-1360(in Chinese).

[4] YANG J H,YANG X R,CHENG X Y,et al.Review of extracting the centers of linear structured light stripes for 3-D visual measurements[J].Journal of Guangdong University of Technology,2014,31(1):74-78(in Chinese).

[5] LIU Zh,LI Sh,FENG Ch.Laser stripe center extraction based on cross-correlation algorithm[J].Chinese Journal of Lasers,2013,40(5):197-202(in Chinese).

[6] SUN P Q,YANG Y Y,HE L L.An improved Gaussian fitting method used in light-trap center acquiring[J].Electronic Design Engineering,2012,20(13):179-181(in Chinese).

[7] HE Zh H,WANG B G,LIAO Y B,et al.Subpixel algorithm using a curve fitting method[J].Chinese Journal of Scientific Instrument,2003,24(2):195-197(in Chinese).

[8] STEGER C.An unbiased detector of curvilinear structures[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1998,20(2):113-125.

[9] LI Y Y,ZHANG Zh Y,YUAN L.Survey on linear structured light stripe center extraction[J].Laser& Optoelectronics Progress,2013,50(10):100002(in Chinese).

[10] YANG W.Research on method for extracting center of structured light stripe[D].Harbin:Harbin Institute of Technology,2009:6-31(in Chinese).

[11] YU X J.Application of median filtering for removing image noise[J].Computer Knowledge and Technology,2008,8(3):1795-1796(in Chinese).

[12] HU K,ZHOU F Q,ZHANG G J.Fast extrication method for subpixel center of structured light stripe[J].Chinese Journal of Scientific Instrument,2006,27(10):1326-1329(in Chinese).

[13] ZHANG Q T,YANG XE Y,LIU T,et al.Design of a smart visual sensor based on fast template matching[J].Chinese Journal of Sensors and Actuators,2013,26(8):1039-1044(in Chinese).

猜你喜欢

条纹高斯灰度
采用改进导重法的拓扑结构灰度单元过滤技术
基于灰度拉伸的图像水位识别方法研究
数学王子高斯
谁是穷横条纹衣服的人
天才数学家——高斯
别急!丢了条纹的斑马(上)
别急!丢了条纹的斑马(下)
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于灰度线性建模的亚像素图像抖动量计算
有限域上高斯正规基的一个注记