张良桥,陈国良,许晓东,连达军,王 睿
(1. 中国矿业大学环境与测绘学院,江苏 徐州 221116; 2. 中国矿业大学国土环境与灾害监测国家测绘 地理信息局重点实验室,江苏 徐州 221116; 3. 苏州科技大学环境学院,江苏 苏州 215009)
目前室内定位技术主要有视觉导航定位、GPS定位、视觉SLAM定位、超声波定位、WLAN定位[1]等方法。视觉导航定位技术图像处理量比较大,要求计算机具有较高的性能,定位实时性效果较差,同时受光线环境条件限制大。超声波导航定位由于超声波容易受到镜面反射等因素的影响,无法比较全面地获取周边环境信息。GPS导航定位在室内环境下,接收到的信号弱,存在定位精度低、可靠性不高的问题。WLAN定位楼层定位准确度低,容易受到信号干扰,能耗较大。然而视觉SLAM技术具有性价比高、应用范围广、信息采集丰富等优点,逐渐成为室内定位技术的主流方法之一。
时定位与地图构建(simultaneous localization and mapping,SLAM),也称为(concurrent mapping and localization,CML)是指一个机器人放入未知环境中的未知位置,是否有办法让机器人在运动的同时描绘周围的地图与确定自身位置。视觉SLAM是以相机作为唯一传感器的SLAM技术。视觉SLAM根据采用的相机种类不同可以分为:单目视觉SLAM[2-3](Mono SLAM)、双目视觉SLAM[4](Binocular SLAM)、RGB-D SLAM[5]3类。这3类视觉SLAM各有优劣,单目视觉SLAM应用具有灵活、简单、价格便宜等优点,但是它只能获得单张相片,不能获得距离深度信息,而且在应用时需要初始化地图;双目视觉SLAM应用广泛,可以获得距离深度信息,定位精度高,但是相机标定比较复杂,成本比较高且稳健性低;RGB-D SLAM在获得彩色图像的同时获得距离深度信息,但是其成本高,体积大,应用环境有限。由于在日常生活中,单目相机(手机、平板电脑、笔记本电脑等数码电子产品的摄像头均是单目相机)更常见,且应用灵活简便、价格便宜,单目视觉SLAM[6]是最常见的视觉SLAM技术。
单目视觉SLAM流程包括前端和后端两个部分[7],前端主要是特征检测与匹配和运动估计,后端包括后端优化和回环检测。主要技术路线如图1所示。
特征检测与匹配是SLAM关键步骤之一,检测匹配结果直接影响到最终结果的精度。文献[8]提出了一种在对象或场景的不同视图之间提取图像不变特征的方法,首次提出了尺度不变与特征变换(scale invariant feature transform,SIFT)算法。这种算法能够保持旋转、尺度缩放不变性,但是算法复杂度较高,计算量较大。文献[9]首次提出了加速稳健性特征(speed-up robust feature,SURF)算法,通过试验证明了其在效率上的优越性,该算法对于光照变化和仿射、透视变换具有较好的稳健性,同时具有尺度不变性。文献[10]于2011年首次提出由Oriented FAST关键点和Rotated BRIEF描述子两部分组成的ORB方法。ORB方法很少受图像噪声影响,可以满足实时性的要求,计算速度也比SIFT、SURF算法快。
本文从现有方法出发,对获得的单目图像运用不同算法进行提取同名点并进行特征匹配,通过随机采样一致性[11](random sample consensus,RANSAC)算法进行噪声点剔除,求解基础矩阵,获得相机位姿。为了更好地体现估计结果,在算法中采用阈值思想,设置最小特征匹配数。
ORB-SLAM技术[12]由Mur-Artal R等提出,主要包括跟踪、建图和回环检测3部分。在整个流程中,通过ORB算法进行特征点检测与匹配,使用BA(bundle adjustment)非线性迭代优化,获得相机位姿与地图数据。ORB-SLAM整体流程如图2所示。
ORB(oriented FAST and rotated BRIEF)算法具有局部不变特征,ORB特征由关键点[13-14](oFAST,oriented FAST)和描述子(BRIEF,binary robust independent elementary feature)两部分组成。该算法将FAST角点检测与BRIEF特征描述符进行融合改进,针对FAST算法缺陷,加入了尺度与旋转描述,同时计算了特征点的主方向,对于BRIEF算法,添加了旋转不变性,同时执行greedy搜索,解决了特征描述子之间相关性较大的问题。为了更好地提取FAST关键点,本文提出一种设置阈值的FAST检测方法,如图3所示。基本思想是:一个像素与周围像素亮度差别在超过一个阈值T,则该点为关键点。具体关键点检测方法如下:
(1) 确定检测范围:在图像中选取像素x,设该像素亮度值lx,选取x为圆心半径为3个像素的圆上16个像素点。
(2) 与阈值大小比较:确定一个阈值T,假设圆上有连续12个像素点的亮度在lx-T与lx+T之间,该点x确定为特征点。重复上述步骤,直至所有特征点检测完成。
(3) 非极大值抑制:计算特征点响应值M,x邻域内存在多个关键点时,比较M大小,M最大的保留,其余删除。
(1)
式中,lxy为x邻域圆上像素编号(y≤16)。
oFAST利用灰度质心法,假设关键点与质心之间存在偏移量,该向量可表示关键点主方向。局部区域中定义阶矩
(2)
式中,I(u,v)为像素点(u,v)的灰度值。
图像质心为
(3)
方向角为
(4)
BRIEF是一种特征描述子,需要对图像进行高斯平滑处理,以关键点为中心,在邻域内挑选n个点对,I(x,y)相互比较灰度值,x>y取1,反之取0,生成n维特征描述符。将n个点对(xi,yi)定义为2×n矩阵
(5)
利用θ对其进行旋转
Sθ=RθS
(6)
式中,Rθ表示角度为θ的旋转矩阵,Sθ为旋转后对应的矩阵。这时BRIEF描述子具备了旋转不变的性质。
由于帧间估计误差的存在[15],机器人在移动过程中不可避免地存在相机位姿误差漂移,运行时间越长,数据量越大漂移量也就越大,即误差越大。为提高算法稳健性,减小试验误差,本文采用一种基于关键帧的回环检测方法,通过检测闭环,建立当前时刻与之前时刻的约束关系为姿态优化与地图纠正,实现全局一致性估计。具体方法为:初始化关键帧序列,将第一张图像作为关键帧添加到关键帧序列帧[16],设置检测间隔,处理间隔一定数量的关键帧,通过RANSAC算法去除噪声点,计算匹配成功的内点inliners,设置阈值,若inliner大于阈值舍弃,否则认为关键帧。关键帧与当前帧作比较,判断是否形成闭环,建立约束关系。
试验数据与平台:试验采用OPPO手机单目相机获取的图像数据,TUM数据中rgbd_dataset_freiburg1_room数据集图像数据,Linux系统Ubuntu16.04处理系统。
通过张正友棋盘标定法对摄像头进行相机标定,标定完成后,在室内环境下采集图像数据。使用开源数据集TUM数据rgbd_dataset_freiburg1_room数据集任意连续两帧图像和手机摄像头拍摄实验室室内课桌上台灯图像,利用SIFT、SURF、ORB进行特征检测与匹配,两种来源图像数据3种算法试验结果统计见表1、表2,关键点检测、图像匹配、筛选后正确匹配结果如图4、图5所示。
表1 rgbd_dataset_freiburg1_room图像匹配统计结果
表2 手机拍摄图像匹配统计结果
表1和表2给出了不同图像数据源通过SIFT、SURF、ORB 3种算法进行特征检测与匹配的结果。试验证明SURF算法检测关键点数量最多且分布密集,SIFT次之,ORB算法关键点分布均匀且数量较少,正确匹配率高。关键点太多不利于提高算法处理效率与实时性,运用ORB算法计算量较小且匹配精度较其他两种算法较高,因此ORB算法具有较好的稳健性和实用性。
采用提供机器人真实轨迹的TUM数据中的rgbd_dataset_freiburg1_room数据集,数据集中提供机器人真实轨迹,通过估计轨迹与真实轨迹对比,能够清晰地验证基于图像特征检测与匹配的ORB-SLAM算法有效性。试验结果如图6、图7所示。
图6和图7分别描述了运用基于图像特征检测技术的ORB-SLAM算法跟踪得到的机器人轨迹与真实轨迹,通过计算相对位姿误差(relative pose error,RPE)为0.144 8 m,可以发现通过基于图像特征检测与匹配技术的ORB-SLAM算法得到的机器人轨迹基本与真实轨迹重合,满足一定精度下的工作需求。
本文运用SIFT、SURF、ORB 3种特征提取匹配算法对不同来源的室内图像进行处理比较,验证了ORB算法的稳健性与实时性。基于此算法的优良性质提出了一种基于图像特征提取与检测的改进ORB-SLAM算法,运用阈值的思想剔除噪声关键点,在后端工作中引入闭环检测策略优化位姿获得较精确的相机轨迹图。试验证明,与传统视觉SLAM轨迹跟踪算法相比,该算法提高了轨迹跟踪稳定性与精度。