王书宇,田建艳,蔡文站,李济甫,王素钢,李丽宏
太原理工大学 电气与动力工程学院,太原 030024
抓取和放置工件是工业环境下机器人系统的主要任务之一,视觉伺服是机器人系统的重要控制手段[1],采用图像技术对工件进行识别在现代化智能生产线上具有重要的意义[2]。
图像纹理是一种通过像素及其周围空间邻域的灰度分布来表现的局部纹理信息,传统的目标识别算法根据图像的颜色纹理建立具有较高辨识度的局部特征描述子,如SIFT、SURF、ORB等,然后进行特征匹配从而实现目标检测[3]。但工业环境中大部分工件为弱纹理工件,如PVC零件、金属零件等,对于这些弱纹理工件,其表面纹理缺乏,纹理像素较大,并且纹理像素之间的色调差异较小,导致传统的局部特征描述子辨识度较低,无法建立从场景到模型的稳定特征点匹配关系,对于弱纹理工件识别效果不佳[4]。Rusu等[5]基于三维点云提出了快速点特征直方图描述子(fast point feature histogram,FPFH),把关键点邻域内的几何特征转换为多维直方图进行描述。但点云描述符对噪声比较敏感,描述符质量依赖于点云的质量,尤其是金属零件等非朗伯体表面,获取的点云数据有严重的缺失和形变失真,都会降低点云描述符的可靠性[6]。
模板匹配是用事先定义好的模板在输入图像中搜索,从而找到匹配区域的一种高级机器视觉技术,不需对大量的数据样本进行训练[7]。基于灰度的模板匹配对光照变化敏感,计算时间长,且不具备旋转不变性[8]。基于形状的模板匹配具有尺度不变性和旋转不变性,如基于Hu矩[9]、Zernike矩、形状上下文[10]等方法,但都需要先进行边缘提取得到目标单独轮廓,才能进行相似度计算,而对于堆叠的工件,由于工件之间相互遮挡,工件轮廓分割难度较大,导致识别效果不佳。吴晓军等[11]提出了基于图像边缘的几何模板匹配算法,将边缘的梯度方向和亚像素坐标作为匹配信息,该方法对光照、遮挡和旋转具有较强的鲁棒性,但当工件堆叠时工件发生倾斜且尺度发生变化,导致目标物与模板相差较大,匹配效果较差。
当工件散乱堆叠时,对工件进行分拣则需要空间的6D位姿信息,而对于弱纹理工件,由于很难提取纹理特征进行描述,大部分方法都基于特征显著的边界信息,HE等[12]提出了规整化直线检测子(complete line segment detector,CLSD)用于检测直线轮廓,但需先对物体模型进行渲染,生成大量不同视角下的边界特征描述子再进行匹配,计算复杂度高且精度较低。
工业零件的孔洞常作为装配、定位、识别的特征,Li等[13]以螺钉安装孔为基准特征用于AGV的精准定位,王青等[14]为了实现飞机大部件的最佳位姿装配,提出一种基于制造准确度与对接深孔协调准确度的大部件位姿优化算法。由于同一工件上的孔洞在不同角度、位置、尺度以及堆叠情况下的几何约束均保持不变,因此本文针对目前工业现场弱纹理堆叠工件识别困难的问题,着重研究带孔弱纹理工件的识别问题,以工件表面的孔洞为特征,提出一种改进几何模板匹配算法用于带孔弱纹理堆叠工件识别,不需进行纹理特征的提取、样本训练和建立不同视角的模板,根据孔特征之间的几何约束进行工件识别,本文以合页为例进行工件识别,可用于机器人打磨前代替人工进行分拣。本文将从工件图像预处理,工件孔特征提取和带孔弱纹理工件识别三个部分对工件识别过程进行阐述。
在进行孔特征提取之前,先对工件图像进行预处理,包括工件图像灰度化和对灰度化后的图像进行边缘检测,图1给出了预处理阶段的实验结果。
图1 预处理阶段实验结果Fig.1 Experimental results of preprocess stage
工业相机采集的工件图像是RGB彩色图像,如图1(a)所示为采集的原始图像。对三个通道依次进行处理耗时较长,为了提高系统的处理速度,采用加权平均法[15]将彩色工件图像转变成灰度图像以降低算法的时间复杂度:
式中,R、G、B为彩色图像中像素点的三个颜色分量;Gray为使用加权平均法灰度化后对应像素点的灰度值。
边缘是图像像素值发生跳变的位置,是图像的显著特征之一,包含了重要的形状信息和语义信息。与Sobel等单一边缘检测算法相比,Canny边缘检测算法所提取的边界具有较高的连续性和聚合性,因此本文采用Canny算法进行边缘检测,包括高斯模糊、计算梯度幅值和方向、梯度幅值非极大值抑制与双阈值滞后边界跟踪。
(1)高斯模糊
由于图像中的噪声通常是高频信号,很容易被识别为伪边缘,因此先采用高斯模糊减少噪声,降低伪边缘的干扰,从而提高边缘检测的质量。
(2)计算梯度幅值和方向
采用Sobel一阶微分算子分别计算水平和垂直方向的梯度,如式(2)所示,S x和S y分别为水平和垂直方向的Sobel算子,将两个算子分别与原图像进行卷积,分别得到水平和垂直方向的梯度幅值矩阵G x和G y,根据式(3)和式(4)计算求得梯度幅值矩阵G和方向θ。
(3)梯度幅值非极大值抑制
对梯度幅值矩阵G进行非极大值抑制(non maximum suppression,NMS),沿着每个像素点的梯度方向比较前后两点的幅值,若该点大于前后两点则保留,否则置为0,达到保留局部最大梯度而抑制所有其他梯度值的目的,同时实现细化边缘的效果。
(4)双阈值滞后边界跟踪
采用双阈值法确定边界,即一个低阈值和一个高阈值来区分边缘像素。若梯度值大于高阈值,标记为强边缘点,为真实边缘;若梯度值小于低阈值,直接剔除;若梯度值介于高低阈值之间,标记为弱边缘点,并进一步判断其8连通邻域内是否存在强边缘点,若存在,则这个弱边缘点认为是真实边缘,否则直接剔除该点。
如图1(b)所示为Canny边缘检测后的图像,可以看出,两个工件的边缘已经连接在一起,不易分割,而未被遮挡的孔洞轮廓清晰且未与工件边缘相连,易于后续的孔轮廓提取以及工件识别。
在工件图像预处理的基础上进行工件孔特征提取,首先求解每个轮廓的最小面积外接矩形(minimum area bounding rectangle,MABR),再进行几何约束得到孔特征对应的孔轮廓,最后计算孔轮廓对应的最小外接圆(minimum enclosing circle,MEC),得到孔特征的圆心坐标,为后续工件识别奠定基础。
Canny边缘检测后的轮廓不仅包括孔轮廓,还包括工件的边缘、噪声干扰等,因此必须从所有轮廓中将孔轮廓提取出来,通过求取每个轮廓的最小面积外接矩形,并进行几何约束,从而达到提取工件孔轮廓的目的。
2.1.1 求解轮廓凸包
在求解轮廓最小面积外接矩形时,通常先求轮廓的凸包代替轮廓的二维点集,这样不仅可以减少点集顶点的个数,而且从根本上把一个无序的点集变成了有序的凸多边形,形成了线性的结构,从而简化了最小面积外接矩形的求解步骤,提高运算效率。假设单个轮廓上的所有点构成点集S,则包含S中所有点的最小凸多边形称为S的凸包,采用Graham算法构造每个轮廓的凸包,具体步骤为:
步骤1找到点集S中纵坐标最小的点p0,若存在多个纵坐标相同的点,选择其中横坐标最小的点。
步骤2以p0为参考点,分别求出p0与点集S中剩余点的极角,并从小到大排序得到点集S1={p i|pi=(x i,yi),i=0,1,…,n}。
步骤3由于凸包逆时针相邻两边的向量叉乘为正值,根据式(5)依次对S1中的点进行判断,若α为正值,则p i为凸包顶点,否则剔除该点,更新得到凸包点集S2。
2.1.2 求解轮廓最小面积外接矩形
在遍历过程中,逆时针旋转到下一条边后不需要再重新扫描所有点,只要分别从上一条边确定的三点出发,向后比较找到最大值即可,三个点的指针都只会对每个顶点访问一次,因此整个过程的时间复杂度为O(m)。
2.1.3 几何约束提取孔轮廓
对每个轮廓对应最小面积外接矩形的宽W、高H、宽高比ratio进行几何约束从而提取孔轮廓:式中,Rth为最小面积外接矩形宽和高的约束阈值,与相机和工件平面的高度有关,实际采集并计算多幅图像距离,取Rth=35像素;rmax为最小面积外接矩形的宽高比约束阈值,由于最小面积外接矩形的W为x轴逆时针遇到的第一条边,W和H无绝对的大小关系,所以需分别判断,圆的外接矩形近似于一个正方形,宽高比接近于1,但考虑光照对图像采集的影响以及工件堆叠时工件倾斜导致孔轮廓发生形变,宽高比发生改变,因此取rmax=2。
依次求取每个轮廓的最小面积外接矩形,并进行几何约束,对满足式(10)的轮廓即可认为是孔轮廓,对图1(b)中的轮廓进行几何约束,提取的孔轮廓如图2所示。
图2 几何约束提取的孔轮廓Fig.2 Hole contours extracted by geometric constraints
由图2可知,对比于图1(b),对轮廓进行几何约束可以很好地将工件的边缘和噪声剔除,保留需要的孔轮廓。
采用随机增量法求解孔轮廓的最小外接圆,得到孔特征的圆心坐标,主要思想是:将孔轮廓所对应的凸包随机排序,得到新的点集P={p0,p1,…,p n},以p0p1为直径作圆得到初始圆心o和半径r,遍历剩余的所有点,根据式(11)判断点到当前圆心的距离,如果其余点均在该圆内,则该圆为最小外接圆,否则进行循环迭代,不断更新圆心o和半径r,直至遍历所有点,得到孔轮廓的最小外接圆,同时得到最小外接圆的圆心坐标,算法流程图如图3所示。
图3 随机增量法求最小外接圆流程图Fig.3 Flow chart of obtaining minimum enclosed circle by randomized incremental algorithm
式中,p=(p x,p y);o=(o x,o y)。
如图2所示,红色标记为孔轮廓最小外接圆的圆心位置,根据纵坐标位置从大到小排列存储,便于后续工件识别,孔特征圆心坐标如表1所示。
表1 图2中孔特征圆心坐标表Table 1 Center coordinates of hole features in Fig.2
在提取工件孔特征的基础上,首先采用改进几何模板匹配算法进行工件识别,再根据孔特征之间是否存在边缘剔除误识别工件,从而实现对带孔弱纹理工件的识别。
传统的几何模板匹配是基于模板的显著边缘进行匹配,只适用于平面物体的检测,当工件堆叠时工件发生倾斜时目标物与模板相差较大,导致传统的几何模板匹配识别效果不佳,且无法得到工件的6D位姿信息。本文所提出的改进几何模板匹配算法是根据工件表面的加工特征(如:孔洞、槽等)之间的几何约束进行工件识别,包括特征之间的距离约束和角度约束。在提取孔特征的基础上,采用改进几何模板匹配算法进行工件识别,实验结果如图4。
如图4(a)和图4(b)所示分别为工件在水平放置和30°倾斜放置时的模板工件特征图,A、B、C、D分别为从上到下4个孔特征,可以看出真实工件满足:与的约束条件,所以可根据孔特征之间的几何约束进行工件识别:
图4 工件识别阶段实验结果Fig.4 Experimental results of workpiece recognition stage
式中,dth为相同距离约束的阈值;θ为相同角度约束的阈值;δ为之间的角度约束阈值。由于在图像采集、圆心计算过程会产生误差,其距离、角度不完全相同,但误差依然很小,因此取dth=8像素,θ=4°,δ=7°。
首先根据距离约束寻找工件上下两个孔特征:
改进几何模板匹配算法主要分为以下三个步骤:
步骤1已知各个孔特征的圆心坐标,根据式(5)寻找符合距离约束的上下两孔特征。
步骤2提取步骤1中上下两孔特征间的所有孔特征。
步骤3对步骤2中提取的孔特征根据式(12)~式(14)进行判断,符合约束条件的孔特征与上下两孔特征相组合,构成真实工件。
已知图2的孔特征圆心坐标如表1所示,采用上述步骤进行工件识别,计算得到序号为0、2、3、4的孔特征满足式(12)~式(15)的约束条件,构成真实工件,识别结果如图4(c)所示。
由图4(c)可知,本文所提出的改进几何模板匹配算法可以有效地对上层带孔弱纹理堆叠工件进行识别。
基于孔特征之间的几何约束进行工件识别,在多工件识别时会出现不是同一工件的孔特征也满足约束条件,从而导致误识别情况发生,实验结果如图5,图5(a)中存在误识别的工件。由于真实工件的4个孔特征之间无其他边缘,而误识别的工件为跨工件识别,孔特征之间存在其他工件的边缘(如图5(a)黄色边框所示),因此可以根据工件孔特征之间是否存在其他边缘信息,对已识别的工件进行判断,从而将误检的工件剔除,结合边缘信息对图5(a)进行判断识别结果如图5(b)所示。由图5(b)可知,结合边缘信息对已识别的工件进行判断,可以将图5(a)中误识别的工件剔除,从而降低工件的误检率。
为了定量评价工件的识别结果,使用查全率(Recall)和误检率(false positive rate,FPR)作为评价指标[16],其计算公式为:
式中,REC为查全率;FPR为误检率;TP为工件被正确识别的个数;FN为工件未被正确识别的个数;FP为误识别工件的个数;TOTAL为应该被识别工件的个数。
为了验证本文提出的以工件表面孔洞为特征的改进几何模板匹配算法的有效性,对合页在任意旋转、堆叠情况下进行实验,采集堆叠图像200张进行工件识别实验,实验环境为CPU Intel Core i5-8250U,基于Visual Studio 2017和OpenCV 3.2进行实验。首先对所采集图像中应该被识别工件的约束阈值进行统计,统计结果表明,dth的最大值为7.2像素,θ的最大值为2.7°,δ的最大值为6.0°,综合考虑工件识别的容错率以及运行时间,取dth=8像素,θ=4°,δ=7°。采用上述约束阈值在不同约束条件下进行工件识别实验,统计结果如表2所示。
表2 不同约束条件下合页识别统计结果Table 2 Statistical results of hinges recognition with different constraints
由表2可知,约束条件不会对真实工件产生影响,只是加速对误识别工件的剔除,因此当减少约束条件时,并不会对识别的查全率产生影响。分别减少式(12)~(14)的约束条件时,工件的误识别率以及剔除误识别工件的时间相较于3个约束条件时明显增加。其中,式(12)的约束条件对误识别率的影响最大,因此本文选择3个约束条件进行工件识别,以降低工件的误检率,工件识别查全率为98.3%,误检率为0.9%。
工件的部分识别结果如图6所示,图6所识别工件的信息如表3所示,图6工件识别中每个步骤的运行时间如表4所示。
表3 图6中工件识别结果信息表Table 3 Information of workpieces recognition results in Fig.6
表4 图6中工件识别运行时间表Table 4 Running time of workpieces recognition in Fig.6ms
图6 部分工件识别结果Fig.6 Partial workpieces recognition results
由图6可知,本文所提出的改进几何模板匹配算法可以有效地对上层的带孔弱纹理堆叠工件进行识别,当上层工件被分拣后再进行工件识别,循环完成对工件的识别和分拣。所提出的改进几何模板匹配算法是基于工件的孔洞进行识别,工件的正确识别依赖于几何特征的准确检测,所以需要良好的光照条件易于孔洞与工件表面产生明显的亮度差,便于工件孔轮廓提取,以提高工件识别的查全率和降低工件识别的误检率。
由表3可知,工件识别的平均偏差为0.63像素,而工件在图像中长度为290像素,实际长度为115 mm,因此工件识别的平均偏差约为0.25 mm,满足实际工件抓取的精度要求。
由表4可知,工件识别平均运行时间为52.4 ms,满足实际工件抓取的速度要求,在图像处理过程中,除加载图像外,最耗时的步骤是工件孔特征提取。
本文对带孔弱纹理堆叠工件的识别进行研究,提出了改进几何模板匹配算法对具有孔洞特征的工件进行识别,有效解决了传统工件识别方法中工件的平移、旋转和堆叠对识别结果干扰的问题。在后续的研究中,(1)由于工件孔特征提取耗时较长,可以先对每个轮廓进行预判断,包括尺寸、面积等,从而将明显不符合孔轮廓特征的轮廓剔除,减少计算量,提高运行速度;(2)还需解决由于光照不均匀而引起的误检和漏检情况,进一步提升算法的鲁棒性。由于已经得到工件孔特征的圆心坐标,再基于EPnP(efficient perspective-n-point)算法并结合目标工件孔洞实际的几何尺寸,可以得到工件的精准6D位姿信息,进行坐标变换后可引导机器人对工件进行分拣。