《武汉工程大学学报》  2017年02期 193-198   出版日期:2017-05-04   ISSN:1674-2869   CN:42-1779/TQ
双目视觉在类人机器人测距中的应用


[J]. Journal of Wuhan Institute of Technology,2017,39(2):193-198.基于双目立体视觉的测距技术是国内外学者研究的主要热点,在机器人定位、导航、避障以及工业技术测量等领域有着广泛的前景[1]. 基于机器人的双目立体视觉技术从两个不同的视角去捕获世界中的同一个物体,从而得到不同的感知图像,最后依据三角测量的原理得出两幅图像的位置偏差,从而得到物体的三维坐标 [2]. 文献[3]提出了一种用张正友棋盘标定法与“绝对误差累计”的小窗口匹配法相结合的方法来实现双目立体视觉的测距. 文献[4]采用基于外极线约束和灰度相关性的立体匹配算法. 在双目测距的研究中,立体匹配可以说是最困难、最热门的研究问题之一. 为了能够获得更好的匹配效果以及使得测距更加精准,在进行特征点提取与匹配之前,本文采用基于局部二值模式算子(LBP)中旋转不变统一模式算子和优化后支持向量机(SVM)的方法来对目标进行识别. 这样则无需人为的去选择目标点或线区域,只需对少量的特征点进行匹配,从而提高了计算效率. 本文基于双目视觉原理,对类人机器人测距的方法进行了改进,在一定程度上,提高了类人机器人测距的效率和准确性. 1 双目立体视觉测量原理双目立体视觉属于机器视觉的一种重要形式. 双目立体成像原理图如图1所示. 2台焦距均为[f]且平行放置的摄像机在同一时间获取同一物体[P];基线距[B]为左摄像头的投影中心与右摄像头的投影中心之间的距离,分别在2个摄像机上获取了物体[P]的图像且分别成像于位置[O1X1,Y1],[O2X2,Y2]. 根据三角形相似关系,由此可以得到 [Z=B?fD?] (1)其中视差[D=X1-X2],公式中[B]和[f]可以在立体标定中得到,[X1]与[X2]则在图像处理中得到. 因此本文只需要找到目标物体在左右两摄像机上的投影并计算出其坐标,便可实现距离的测量. 2 摄像机标定摄像机标定的主要目的是为了获得设备的内参数和表示两个摄像头相对位置的外参数,可以由已知特征点的世界坐标以及图像坐标来求得摄像机参数[5-7]. 其中内参数有:焦距[fx]、[fy]和基准距[u0]、[v0];外参数有:旋转矩阵[R]和平移向量[T]. 本文采用的是棋盘标定法[8]来对摄像机进行标定. 利用对10幅以上不同方向的棋盘提取若干角点. 由于相机成像可以被看作是针孔模型,依据成像原理可得图像坐标与世界坐标之间的转换关系如下: [Zcuv1=fx??????0???????u0????00??????fy??????v0?????00?????????0?????????1????????0R????T?0?????1Xw?Y??wZ?w???1] (2)其中,[u????v????1T]为图像坐标,[Xw????Yw????Zw????1T]为世界坐标. 一般摄像机很难保证左右摄像机图像严格的平行对准,为了避免畸变,需要通过数学计算的方法来校正图像,从而使得左右摄像机图像极线平行,这样可以大大节省匹配时间. 3 基于LBP算子和SVM的目标识别在实际的赛场上,由于足球会受到光照的影响而引起较大的颜色畸变,单纯地依靠颜色对目标球体进行识别效果不佳. 由于球体表面有显著的纹理特征,因此本文使用LBP算子[9]提取样本的纹理特征并利用SVM对检测对象进行分类的方法来实现对目标球体的识别. 3.1 LBP算子获取样本纹理特征首先在HSL(色相、饱和度、亮度)空间下对图像做分割处理,初步确定待检区域. 将待检区域转化为灰度图像,以备下一步操作. 然后利用LBP算子提取该区域的纹理特征. 局部二值模式(LBP)纹理描述算子分为灰度不变LBP算子、旋转不变LBP算子、uniform旋转不变LBP算子3种方法. 经过实验发现,其中,uniform旋转不变LBP模式更能满足目标球体在平移、旋转时特征不变的需求,并且计算量最小.提取LBP的特征向量的具体步骤如下:首先将待检部分划分为16×16的小模块;然后将每个小区域中的每个像素依次与相邻位置8个像素的灰度值进行比较,如果相邻像素点的灰度值大于中心像素点的灰度值,则该像素点所在的位置被标记为1,否则标记为0. 因此,经过计算可以产生8位二进制数,从而该区域中心位置像素点的LBP值可以获得;再计算每个小区域的直方图,并对其进行归一化处理;最后将每个小区域的统计直方图组合成为一个特征向量,即可得到整个待检区域的纹理特征向量. 目标识别算法具体流程,如图2所示. 3.2 GA优化的SVM分类模型利用SVM分类器对样本进行分类,SVM[10]通过某一种事先选择的非线性映射将输入向量映射到一个高维特征空间,在此构造一个最优分类超平面[11]. 首先需要对训练样本以及测试样本进行特征数据归一化预处理;然后对样本进行分类,SVM分类决策函数为: [fx=sgni=1myiαi?Φx?Φxi+b????????????????????? =sgni=1myiαi?kx,xi+b] (3)其中,非线性变换通过核函数来实现,本文内积核函数选用径向基核函数(RBF),公式如下: [Kx,y=e-x-y2/2σ2] (4)核函数参数的选取十分关键,将影响到分类器的性能,在所有的参数中最重要的参数是模型的惩罚因子C以及核函数参数g. 本文利用遗传算法GA优化SVM模型的参数[12],具体步骤如下:1)对C和g进行二进制编码,从而得到初始化的种群;2)对种群中的各染色体进行解码,从而获得C和g的值;3)利用训练样本集来训练SVM分类器模型,并利用训练好的模型来计算测试样本的识别率;4)最后依据识别率来作为遗传算法是否终止的条件,若满足条件则停止迭代,并输出最优参数,否则继续遗传迭代,直至得到最优解为止. 对于已经识别为目标的图像,使用霍夫圆拟合确定目标球的具体位置. 4 极线约束的SIFT图像匹配图像匹配的实质在于已知其中一幅图像中的一点,去寻找另外一幅图像中相对应的点,从而满足这两个点为空间中同一个点的投影 [4]. 机器人在实际的运动中必然会受到光照强度的影响或者会存在视角的改变,而sift算法无论改变旋转角度,图像亮度还是拍摄视角,仍然能够得到较好的检测效果. 但是实际上机器人所识别的图像中大量的包含着相似的结构,为了提高特征匹配的精度,选用基于极线约束的SIFT特征匹配算法[13]对左右摄像机图像进行立体匹配. 根据目标识别中所得到的目标球的位置,利用此算法检测并选取目标球上少量特征点,将这些特征点标识在图像上,最后根据特征点与双目图像的相对目标关键点进行匹配. 算法的主要步骤如图3所示.5 实验过程与结果分析基于双目视觉基本原理,在原有的单目类人机器人上安装了两个高清摄像头,左右两个摄像头处于同一平面水平位置,其中心距离为6 cm,距离地面的高度为40 cm. 同时从双目摄像机中获取两幅图像,分别对它们进行目标识别、特征提取和立体匹配等操作,并得到相应二维像素匹配点坐标;然后将匹配点坐标带入摄像机标定后所建立的方程中构建方程组进行求解,即能得到相应特征点的三维坐标,以此计算出双目类人机器人与目标的距离. 在进行立体标定之前需要对两个摄像机进行单个的标定. 在程序计算之后,会得到摄像机的内外参数,右摄像头与左摄像头的标定方法相同. 实验之后,分别保存左右摄像头参数结果. 通过两台摄像机标定的结果来进行立体标定,从而得到表示两个摄像头之间的位置关系的旋转矩阵和平移向量,导入OpenCV中,结果如下. 左摄像头内参数矩阵: [K1=686.387????????????????0??????????????? ?323.713????????????0?????????????? ??686.387????225.297????????????0???????????????????????????? ?0???????????? ?????????????????1] (5)右摄像头内参数矩阵:[K2=686.387????????????????0???????????????? 326.927????????????0????????????????686.387??? ?235.912????????????0??????????????????????????? ??0???????????????? ???????????1] (6)本文按文献[14]中提及的校正算法对左右图像进行校正. 在OpenCV中提供了一个校正算法,通过调用cvStereoRectify函数、cvInitUndistortRectifyMap函数、cvRemap函数来消除畸变,从而进行校正. 经过立体校正后的左右摄像机图像如图4所示. 机器人目标识别阶段,首先在HSL空间下对图像进行分割,初步确定待检区域,并将待检区域转化为灰度图. 然后利用LBP算子获取样本纹理特征,本文对LBP算子的3种方法进行了实验,分别为灰度不变LBP、旋转不变LBP、uniform旋转不变LBP,效果如图5所示. 其中采样点数量均为8,采样半径均为10. 由实验结果可知,3种LBP算子分别得到256个特征、36个特征、9个特征,分别用时60 ms、52 ms、49 ms. 因此选取计算量小、耗时短的uniform旋转不变LBP算子来提取样本纹理. 接下来使用优化后的SVM分类模型对样本进行训练和测试. 本文选取200个训练样本,其中150张为目标球图片,50张为非目标球图片,经LBP处理后,将纹理特征矩阵输入SVM进行训练. 将测试样本集的纹理特征矩阵输入GA优化的SVM分类模型进行分类处理,并输出识别结果和识别率. 其中,GA终止代数设为100,种群大小设为50,交叉概率为0.4,变异概率为0.01,选择算子采用轮盘赌算法确定. 实验发现大约21次左右即可达到最优分类精度,平均识别率为92.7%. 对于已经识别为目标的图像,使用霍夫圆拟合确定目标球的具体位置,效果如图6所示. 由标定部分的分析可得转换关系,根据此关系代入已知点的像素坐标可得,左目摄像头的坐标转换公式为: [Zc1u1v1?1=m111????m112????m113????m114m121????m122????m123????m124m131????m132????m133????m134X?YZ??1] (7)右目摄像头的坐标转换公式为: [Zc2u2v2?1=m211????m212????m213????m214m221????m222????m223????m224m231????m232????m233????m234X?YZ??1] (8)采用最小二乘法求解[15][X,Y,ZT]. 再根据相对位置求出摄像机到目标的距离. 为了验证本文所使用算法的有效性,将本文算法与所对比的算法分别进行实验,运算结果如表1所示. 其中,算法1为张正友棋盘标定法与“绝对误差累计”的小窗口匹配法相结合的双目测距方法;算法2将改进的平面摄像机标定法与基于外极线约束以及灰度相关性特征点匹配相结合的双目视觉目标定位方法;算法3为本文算法. 对3种算法的误差进行分析,结果如图7所示. 其中,星号线为算法1的误差,虚线为算法2的误差,实线为本文测距算法的误差. 本文算法平均误差相比算法1和算法2分别下降了18.9%和23.9%. 由测距结果可知,实现了对目标的测距,误差在允许的范围内,基本上满足了双目类人机器人对目标测距的要求. 由误差对比可知,本文所使用的方法在大部分情况下测距的精度更高、稳定性更好. 对3种算法的时间复杂度进行分析,结果如图8所示. 其中,统计了4组实验数据,实际距离分别为300 mm、700 mm、1 500 mm、2 300 mm时3种算法运行的时间. 本文算法运行时间相比算法1和算法2分别下降了25.6%和54.1%. 由数据结果可知,运行时间在允许的范围内,基本上满足了双目类人机器人对目标测距的实时性要求. 由时间复杂度对比可知,本文所使用的方法在保证较高测距精度的情况下,降低了运算的时间复杂度. 6 结 语鉴于双目视觉系统模拟了人眼及众多生物的视觉处理方式,在视觉处理技术日趋成熟的今天,双目视觉乃至多目视觉将会成为未来视觉技术发展的风向标,并被广泛运用到各个领域. 本文建立了一套基于改造后的双目类人机器人实验平台,提出了一种简单可靠地对目标进行识别、测距的方法. 本文提出的目标识别的方法相比较于传统方法,在精度以及计算速度上都有了明显的提高. 该方法经过多次测试,测试结果表明,该方法在类人机器人测距中具有测量精度较高、实时性好、对目标的识别更为准确等优点. 本文算法提高了系统的鲁棒性并且取得了较为理想的结果. 今后可以进一步研究目标运动轨迹预测,从而实现机器人完成高难度动作.