APP下载

自动上料机器人视觉识别系统*

2018-10-08王湘明刘明春王浩任郑黎成

沈阳工业大学学报 2018年5期
关键词:安全套像素点像素

王湘明, 刘明春, 王浩任, 郑黎成

(沈阳工业大学 信息科学与工程学院, 沈阳 110870)

根据国家标准GB 7544-1999(2000-05-01实施)《橡胶避孕套》要求,安全套出厂为每只必检,而主流检测方式为电干检.现阶段在一条标准的安全套生产线上,安全套的生产以及出厂打包封装等过程已经实现了自动化,但是安全套电干检的上料过程仍然需要人工的高度参与,由人工将每只待检安全套套在电检模型棒上进行检测.为了将操作人员从安全套电干检的上套过程中解脱出来,本文设计了一款与电干检系统相匹配的自动上料机器人来解决该问题.比较典型的自动上料机器人主要由拾取机械手、安全套姿态视觉识别装置、转移机械手、上套机械手以及控制系统组成,系统的工作流程如图1所示.

图1 自动上料机器人工作流程Fig.1 Workflow of automatic feeding robot

由图1可知,本文所研究的视觉识别系统是自动上料机器人工作时的重要环节,其主要工作内容可分为安全套姿态图像获取和安全套特征区域识别与定位两部分.

按照自动上料机器人系统的工作节拍及流程,要求本文所研究的视觉识别系统的目标识别时间小于100 ms,x、y方向目标定位误差范围为[-0.5 cm,0.5 cm],这就对系统中视觉识别算法的执行效率和定位精度提出了较高的要求.

在目标的识别与定位方面,现阶段比较典型的算法包括尺度不变性特征转换(SIFT,2004)、加速鲁棒特征(SURF,2006)、二进制鲁棒独立基础特征(BRIEF,2010)[1]、定向快速旋转(BRISK)特征(ORB,2011)[2]以及近几年提出的二值化鲁棒尺度不变特征(BRISK,2011)[3]等.其中,SIFT、SURF属于浮点算子,占用内存大,时间复杂度高.而ORB、BRISK特征算子是一种新型具有尺度不变性和旋转不变性的角点检测和描述算法,由于采用了二进制形式的描述以及Hamming距离作为匹配度量,使得算法自身的运算速度以及内存占用量有了明显改善,同时也为本文应用视觉识别算法来快速定位多形变多旋转的目标提供了可能.

1 姿态识别

1.1 摄像头标定

由于摄像头的设计缺陷、生产和装配误差等因素都会引起摄像头的畸变,而对于本文所涉及的自动上料机器人中的广角摄像头而言,其视场的四周区域会产生更加明显的畸变,故摄像机标定是视觉识别与定位的前期基础.对于三维空间中的任一点(xw,yw,zw),其齐次坐标描述为(xw,yw,zw,1),利用摄像机的小孔成像模型将该点从世界坐标系投影到二维图像平面坐标系下的过程为

(1)

式中:(u0,v0)为摄像机主点;α=f/dx,β=f/dy,分别为二维图像像素坐标系下u轴和v轴上的尺度因子;f为相机的焦距;dx和dy为图像中每个像素在图像坐标和像素坐标系下的换算比例;γ为描述两图像坐标轴倾斜程度的参数(称为倾斜因子);R为摄像机坐标系相对于世界坐标系的3×3旋转矩阵;T为摄像机坐标系相对于世界坐标系的3×1平移矩阵.

在实际成像系统中,由于各种误差因素的存在,使得像点、光心和物点三个点并不一定在同一条直线上.为了更加准确地描述成像系统,本文引入透镜畸变[4],其计算表达式为

x=xd+δx(x,y)

(2)

y=yd+δy(x,y)

(3)

式中:δx(x,y)和δy(x,y)为非线性畸变值的x、y轴分量;x、y和xd、yd分别为图像上任意点的理想坐标值和实际坐标值.

OpenCV中的非线性畸变描述公式为

(4)

式中:k1、k2为径向畸变;a1、a2为切向畸变.在实际应用中舍弃高阶系数,可得在摄像机标定过程中的畸变系数矩阵与内参矩阵分别为

D=[k1,k2,a1,a2]

(5)

(6)

本文使用的摄像头图像传感器为30万逐行扫描全彩CMOS,分辨率为640×480,像素尺寸为6.0μm×6.0μm,镜头焦距范围为2.8~12mm.采用标准的9×9黑白棋盘格标定板(方格尺寸为2cm×2cm)为基础工具,用张氏标定法对摄像机进行标定,最终得出摄像机畸变矩阵及内参数矩阵分别为

D=[-0.369 24,0.103 539,0.003 03,-0.000 24]

(7)

(8)

1.2 视觉识别

由于图像在获取时受背景光、拍摄状态以及传输干扰等不确定因素的影响,将会在最终的图像中产生噪点、模糊、过曝等现象,本文采用中值滤波来解决该问题.同时鉴于边缘检测对安全套特征区域识别与定位的重要性,利用Canny边缘检测算法来实现目标边界的提取[5].

1.2.1 算法设计思想

由于整个自动上料机器人的动作需要配合电干检系统的工作节拍,故对视觉识别与定位算法的实时性和有效性提出了较高的要求.当前环境下影响整个视觉识别与定位效率的因素主要有检测时所需的特征点数和所采取的检测算法,因此,在特征点检测阶段提出了一种预检测与精检测结合的两步检测算法.

1) 预检测.由于视觉识别的特征区域为安全套的顶部,而该区域相对于整只安全套在边界上有明显的曲率变化.在图像进行预处理并提取出边界之后,根据边界的曲率变化趋势便可以在整幅图像中划定出一块疑似特征区域.

2) 精检测.在预检测所划定的疑似特征区域内进行二次特征算子检测并生成特征描述子.由于在自动上料机器人中摄像头的安装位置与拾取机械手的最终回程位置是相对固定的,所以在视觉识别的整个过程中主要考虑的是被检测物体与匹配模板之间的旋转和非线性形变.在精检测阶段,特征算子以及特征描述子分别采用ORB算子和BRISK描述子.

1.2.2 预检测实现

FAST角点定义:若某像素点与其周围邻域内足够多的像素点处于不同的区域,则该像素点可能为角点,也就是某些属性与众不同.考虑到灰度图像,若该点的灰度值比其周围领域内足够多的像素点的灰度值大或者小,则该点可能为角点[6].FAST算法步骤如下:

1) 以任意像素点P为中心,做一半径为3个像素的离散化Bresenham圆,则在该圆的边界上共有16个像素,检测模型如图2所示.

图2 FAST 9~16的关键点检测模型Fig.2 Critical point detection model for FAST 9-16

2) 获取该像素点P的亮度值,记为L.

3) 设定合适的阈值t,对于点P,将其离散化Bresenham圆的邻域位置设为n,第n∈{1,2,…,16}个点表示为Pn,将Pn分为3类,即暗点,亮点与相似点.

4) 如果在圆上有9个连续的像素点,它们的像素值要么都比L+t大,要么都比L-t小,则当前点P就是一个角点.

受FAST算法启发,以半径长度为3个像素的Bresenham圆为例来阐述安全套的边界曲率检测过程,检测模型如图3所示.

图3 曲率检测模型Fig.3 Curvature detection model

图3中,黑色方格代表当前被检测物体的轮廓点,绿色方格代表当前检测点的Bresenham圆邻域,蓝色的方格PO1和PO2代表轮廓与Bresenham圆邻域交叉的像素点.用PO1与PO2的标值之差来近似计算这两点之间的圆弧弧度.为PO1与PO2的标值之差设定一个合适的范围[Pmin,Pmax],则可以分离出可疑边界点集C,即

C={Pmin≤|P1i-P2i|≤Pmax,Pi∈U}

(9)

式中:U为图像的边界点集;P1i、P2i为点Pi的Bresenham圆邻域与轮廓的两个交叉点标值.

对可疑点集C中的所有像素点进行如下分类运算:

1) 根据相邻两个边界点Pi、Pi+1与形心连线的向量角度关系对将可疑点集C进行划分,即

(10)

2) 分别针对集合Qup、Qdrop、Qdown中的像素点求取当前点P与其它各个点Pi之间的欧氏距离Distence(P,Pi).

3) 以集合Qup为例,根据欧氏距离从点集Qup中进一步分离出呈现聚类效应的点集J,即

(11)

式中,Dmax、Dmin分别为点集J内部各点之间的最大、最小欧氏距离.

经过以上步骤筛选出的最终可疑点集J所代表的是一段曲率变化连续、缓慢、无突变且满足一定要求的边界.求取该可疑点集J的几何中心点,并以该点为中心做特定大小的矩形掩膜区域,在该区域内进行二次精检测.

1.2.3 精检测实现

计算FAST特征点时,要在一个图像邻域内进行.将该点所在区域的中心点设为E,同时找出这个图像邻域内的重心位置H,则E与H的连线矢量方向便是该特征点的方向,如图4所示.

一般零阶矩是物体的质量,一阶矩和零阶矩可以算出物体的几何中心,而二阶矩可用于计算物体的方向.对于二维pq阶矩,数学上可表述为mpq=∑xpyqI(x,y),其中,I(x,y)为图像像素.对图像而言,m10/m00=∑xI(x,y)/∑I(x,y)代表了图像像素在x方向上的偏重,即重心的x坐标;同理,m01/m00=∑yI(x,y)/∑I(x,y)代表了图像像素在y方向上的偏重,即重心的y坐标,因此,重心坐标为(m10/m00,m01/m00),由此可以得特征点主方向为

图4 特征点主方向Fig.4 Principal direction of feature points

(12)

BRIEF描述子是基于这个图像块中特征点之间像素两两比较后的二进制串,取值满足

(13)

式中:e(x)为点(u0,v0)的灰度值;e(y)为点(u1,v1)的灰度值.当选取N组测试点时,二进制串表达式为

(14)

在融合特征检测子主方向信息之后,可得BRIEF描述子为

(15)

式中:F为二进制串fN的矩阵形式;Rθ为角度的旋转矩阵.

BRISK特征点描述子是上述BRIEF描述子的一种改良算法.首先在图像金字塔空间得到特征点的位置和尺度,然后为特征点赋予描述子.在生成特征点描述子的过程中,BRISK算法所采用的是均匀采样模式:以特征点为中心,构建不同半径的同心圆,在每个圆上获取一定数目的等间隔采样点.为了避免上述邻域采样模式引起混叠效应,需要对同心圆上的采样点进行高斯滤波,其标准差σi正比于每个采样点对应于各自中心的距离.采样点个数为60,尺度为1的均匀采样模式如图5所示.

图5中,以采样点为中心、σi为方差进行高斯滤波,滤波的范围用红圈表示,滤波半径大小与高斯方差的大小成正比;用蓝圈表示经过高斯平滑后最终用到的60个采样点.

图5 BRISK描述子采样模式Fig.5 Sampling pattern of BRISK descriptor

对M个采样点两两组合,共有M(M-1)/2种组合方式,即M(M-1)/2组点对,采用集合(Zi,Zj)表示,这些采样点的平滑像素值分别表示为I(Zi,σi)和I(Zj,σj)[7],用于估计局部梯度值G(Zi,Zj),估算表达式为

(16)

所有的采样点对(组合方式)可用集合A表示,定义短距离点对子集S、长距离点对子集l分别为

(17)

(18)

式中:σmax=9.57T;σmin=13.67T;T为特征点所在的尺度.

要解决旋转不变性,则需将特征点周围的采样区域旋转至主方向,旋转后得到新的采样区域.BRISK描述子的生成过程借鉴了上述BRIEF描述子的编码方式,由短距离点对S两两比较来产生二进制编码,计算规则为

(19)

1.3 匹配及定位

经过上述两步算法检测之后,对生成的模板图像角点描述子和视频帧图像角点描述子进行以汉明距离为度量的最近邻域匹配[8],采用RANSAC算法剔除因图像遮挡或背景混乱而产生误匹配关系的关键点[9].当最终匹配角点的质量达到要求后,对该区域经预检测筛选后的边界点集求均值,并以该点为中心做半径为15个像素的Bresenham圆.根据边界点集与Bresenham圆周的交点得出其中点,并以中点代表当前安全套特征区域的几何形心.

1.4 视觉识别系统工作流程

本文所研究的自动上料机器人视觉识别系统对安全套特征区域的定位过程主要分为摄像机标定、中值滤波、Canny边缘检测、预检测+精检测两步检测法的目标识别、最近邻域匹配、RANSAC误匹配剔除、形心定位等过程,其工作流程如图6所示.

图6 视觉识别系统工作流程Fig.6 Workflow of visual identity system

2 实验验证

本文在实验中所用计算机平台的硬件配置为Intel Core i5-2450M & 2.5 GHz处理器、4 Gbit内存,用Opencv2.4.13+VS 2013编写了自动上料机器人视觉识别测试软件.该软件主要包括视频监视模块、视觉识别与定位模块(涵盖本文算法、BRISK、ORB+BRISK 3种独立的测试算法)、通信模块以及摄像头校准模块.在测试软件中分别利用本文算法、BRISK算法、ORB+BRISK算法对特征区域与匹配模板呈0°、30°、90° 3种姿态的安全套进行视觉识别与定位测试,匹配结果如表1所示.

表1 匹配效果比较Tab.1 Comparison in matching effect

表2为利用上述3种算法分别对3种姿态的安全套各进行50次测试结果的统计值.表2中匹配成功的判别标准为:剔除误匹配后的匹配特征点对个数大于等于7,则认为匹配成功;如果匹配特征点对个数小于7,则认为匹配失败.

表2 3种算法的性能比较Tab.2 Performance comparison of three algorithms

表3~5所示为上述3种算法分别对3种姿态的安全套各进行50次测试的定位误差统计均值,误差为安全套顶部区域的形心位置与拾取机械手回程位置之间的实测距离和实验计算距离的差值.

表3 姿态1的定位误差比较Tab.3 Comparison in location errors of first gesture cm

本文所提出的两步检测算法与单纯的BRISK算法相比,特征算子提取时特征点分布更均匀,而单纯BRISK算法所提取的特征点过于稀疏.对于安全套这种易发生形变的柔性目标,BRISK算法容易出现无法匹配的情况;ORB+BRISK算法所提取的特征点分布比较散乱且无目的性,要完整描述安全套顶部区域特征所需的特征点数和定位时间是最多、最长的,而且匹配时经过RANSAC处理后难以剔除的误匹配点较多.两步检测算法由于经过预检测之后确定了可疑区域,所以最终的特征点分布更加密集、更有指向性,在保持较高匹配成功率的同时,每次匹配还具有较高的匹配质量.

表4 姿态2的定位误差比较Tab.4 Comparison in location errors of second gesture cm

注:表中‘-’代表BRISK算法对当前姿态下的安全套无法识别和定位其特征区域,故无有效数据.

表5 姿态3的定位误差比较Tab.5 Comparison in location errors of third gesture cm

综合可得,由于两步检测法在预检测阶段根据边界曲率划定了疑似目标区域,规避了在整个图像范围内最为耗时的特征描述子生成过程,同时也使得精检测过程具有更好的目的性,单一情况下的定位误差较其余两种算法相比至少减少5倍,3种姿态下安全套的最大定位误差比其余两种算法至少减少10倍,并且可以控制在±0.1 cm范围内.与其余两种算法相比,本文两步算法具有最高的识别效率和最低的定位误差,整体上符合自动上料机器人对视觉识别系统的要求.

3 结 论

针对自动上料机器人对视觉识别与定位算法高实时性、高效性的要求,提出了一种预检测与精检测的两步法.该算法与纯净的ORB算法或ORB+BRISK算法相比,除了注重图像的被检测区域与目标模板之间所存在的相似性之外,还优先考虑了被检测区域的边界属性.在精检测阶段仅对区域内的图像进行特征描述子的提取并采用最近邻域算法对该特征描述子与目标模板的特征描述子进行模板匹配[10]操作,以验证二者之间的相似程度.实验结果表明,两步检测算法对安全套特征区域的定位成功率可达97.6%,定位误差范围为[-0.1 cm,0.1 cm],定位时间为32 ms,完全满足安全套自动上料机器人对视觉识别与定位的要求.

猜你喜欢

安全套像素点像素
像素前线之“幻影”2000
基于局部相似性的特征匹配筛选算法
“像素”仙人掌
基于像素点筛选的舰船湍流尾迹检测算法
基于canvas的前端数据加密
ÉVOLUTIONDIGAE Style de vie tactile
新型女用安全套的使用及综合咨询
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
高像素不是全部
怎样戴安全套才能防艾滋