曹梦龙,陈志强
(青岛科技大学 自动化与电子工程学院,山东 青岛 266061)
随着机器人技术的发展,SLAM(simultaneous localization and mapping)技术的重要性也逐渐得以体现,SLAM技术是机器人研究领域的重难点之一,主要用来解决机器人在封闭空间或者未知环境中的定位以及地图构建的问题。机器人想要成功的实现导航必须要对周围环境有足够的了解和对自身位姿有准确判断。位姿通常也被称为机器人的状态,它包含了机器人的位置和方向等必要信息,如果机器人要对一个区域进行地图构建,那么这个区域必定是未知的或者是受限的,SLAM技术可以很好的解决这些问题。
早期的激光SLAM是以EKF-SLAM[1]、UKFSLAM[2]等为代表的基于卡尔曼滤波的SLAM技术,这些算法常被用于载有激光传感器[3]及惯性测量单元(IMU)[4]的移动机器人上,已知机器人的初始位置,通过IMU测得的数据推算下一时刻机器人的位置,同时激光传感器测量得到周围环境中物体的相对位置,以此类推。除此之外还有蒙特卡洛粒子滤波的PF-SLAM[5]、以及组合算法FASTSLAM[6]等。此类SLAM算法都是基于概率一步步预测出结果的,很容易出现偏差导致机器人出现定位不准确的情况,且使用雷达获取的地图不够精确,很多情况下都需要知道周围环境的详细信息。视觉SLAM的提出很好的解决了这一问题。
视觉SLAM相比于激光SLAM,它以机器视觉代替了激光传感器,从而能够更加准确高效地获取周围环境信息[7]。视觉SLAM发展至今,其主体主要包含5个部分:数据输入、前端VO、后端优化、回环检测以及建图[8]。文献[9]用路径提取代替了特征提取,将Gmapping激光SLAM与ORB-SLAM结合,并通过金字塔滤波器与曲率过滤器,实现了机器人定位功能,且该方案具有较强的鲁棒性,当环境中存在运动物体时,可以充分利用这一特征。文献[10]提出了一种基于运动矢量的改进视觉SLAM方法,提取运动物体的特征点,并根据运动矢量计算帧间相机的位姿,再剔除前后相似度高的点,经闭环检测后,得到精确的位姿估计。近年来,基于特征提取的视觉SLAM方法逐渐成为主流方法,但同时存在着特征点不足无法准确进行特征匹配的问题。王富民等[11]针对水下相机拍摄的图像不清楚,特征点不足的情况,提出了将图像进行直方图均衡化的处理方法,有效的提高了水下图像的特征点数量,进而增强了三维点云图的质量。CAIL等[12]将仿射变换(affine transformation)这一数学方法应用到ORB特征提取中,对样本进行归一化处理,进一步优化了前端特征点的提取方法。
前后两帧之间的关系是视觉SLAM的前端主要研究的内容,帧与帧之间的匹配程度决定了SLAM的准确性和可靠性,是十分重要的一个环节。本工作提出了一种基于除雾算法[13]的图像增强的方法,用来解决弱光环境下移动机器人所采集到的图像不清晰从而影响匹配的问题。该优化方法可以增加所提取的特征点数量,且经过汉明距离筛选法筛选误匹配点对数后,改善了前端SLAM的整体效果。
前端视觉里程计能够根据前后两帧的图像来计算相机的位姿,图像中的有效匹配点数及关键点数决定了该次匹配的质量,从而决定了整个位姿的计算,特别是在弱光环境下这一点要求更高。本工作提出的图像增强算法在相机获取RGB图像后,采用除雾算法对采集到的图像进行预处理。经优化后的SLAM流程框架见图1。
图1 经优化的SLAM算法流程图Fig.1 Flow chart of optimized SLAM algorithm
在弱光环境下SLAM前端估计相机位姿的过程中,很容易因相机采集到的图像特征点不足而造成计算误差。文献[13]指出,几乎所有彩色图像的某个区域内,总会存在像素点的某个颜色通道的值几乎为零,称之为暗通道,表示为
式(1)中,Jc为任意一个彩色通道,δ(x)表示以像素点X为中心的区域。简而言之就是提取一个图像中每一个色素的RGB分量最小值,存入一副和原始图像大小相同的灰度图中,由以上说法可得结论为
在计算机视觉中,雾图像的模型通常被定义为
其中,P(x)是相机读入的待处理图像,J(x)为期待得到的预处理后的图像,ρ为大气光成分,γ为透射率。想要求解目标图像J(x),将上式变形得到
假设ρ已经给定且γ(x)为常数值γ~(x),等式两边同时求取最小值运算可得
J为预期得到的图像,根据式(1)可得
则得到γ(x)的预估计值为
在计算机视觉中,ρ的值可通过自定义得到,从暗通道中按照亮度的大小取前0.1%的像素,然后在这些像素位置中找到对应的原图位置,寻找亮度最高的点的值作为ρ的值,对于弱光环境下的图像,在γ=0时就可得到较好的去雾效果。因此可计算得到
有效的特征点数量决定了帧与帧之间的匹配质量,采用ORB算法进行特征提取需要FAST关键点及BRIEF描述子两个部分,传统的FAST关键点提取因其不具备足够的可分辨性,即受距离远近的影响较大,因此具有方向性的关键点(Oriented FAST)可以更加准确有效的提取关键点,Oriented FAST算法的实现步骤:
1)在图像中选取一个像素点α,假设它的亮度为Iα,设定一个像素阈值T(T可经多次试验后按具体情况取值)。
2)选取以像素点α为中心的半径为3个像素点的圆,该圆由16个像素点组成。
3)若其中有连续的12个点的亮度超过了区间±T(即大于Iα+T或小于Iα-T),则可将像素点α作为一个特征点。
4)在以像素点α为中心半径为3的区域D中,定义该区域的矩为
通过矩可以找到该区域图像的质心:
5)将图像块中心O与质心B连接起来的方向向量即为特征点的方向,定义为
6)重复以上步骤,对每一个像素点进行相同操作。
经上述方法提取出特征点后,需要进一步对所提取的特征点周围图像区域进行描述,即BRIEF描述子。BRIEF描述子是二进制描述子,其描述向量由0和1组成,在上述具有方向信息的特征点的前提下,计算出的BRIEF描述子也具有良好的旋转不变性,在特征点附近随机选取128对像素点(p,q),按照以下规则排列为128维的二进制数矩阵:
由于弱光环境下图像的特征点数量并不是很多,暴力匹配(brute-force matcher)是一种很适合的方法,记前一帧图像为It,提取到的特征点为,,m=1,2,3,…,M下一帧图像为It+1,提取到的特征点为,n=1,2,3,…,N,描述子的距离以汉明距离(Hamming distance)为度量,该算法流程图见图2。
图2 特征提取算法流程图Fig.2 Flow chart of feature extraction algorithm
本算法实验操作系统为Ubuntu20.04,内存50 GB,CPU 2 GHz,运行环境为Opencv3.4.13。提取Oriented FAST关键点时所设定的像素阈值T经实验验证设定为像素点亮度Iα的20%。实验部分分为对单张图像的特征点提取实验及分析、前后两帧图像间的特征点匹配实验及分析、本算法与其它图像增强方法对比实验分析以及经优化方法后的三维点云地图建立实验分析。
为了体现本工作提出的优化算法在提取及匹配特征点方面的优势,进行了单张图像特征点提取实验分析及前后两帧图像特征点匹配实验分析,所用到的图像均为手持相机在弱光环境下拍摄得到。由于弱光环境下图片较模糊,导致无效特征点(即不具有准确性和有效性的特征点)的数量增加,会严重影响前后帧的匹配质量。经本研究算法对图像进行增强,可有效解决上述问题,见图3。
图3 优化前后图像特征点提取对比图Fig.3 Comparison of image feature points extraction before and after optimization
实验结果表明,经本算法优化后,单一图片特征点的提取数增加,且有效特征点的数量也明显增加。特征点提取数据表和特征点匹配数据表见表1、表2。如表1所示,即增加了所提取的特征点数量,也提高了有效特征点在总特征点数中的占比,在减少计算量的同时也改善在弱光环境下的匹配质量不高的问题。
前后两帧图像特征点匹配的质量很大程度上取决于单个图片的特征点提取数量及质量,图4在单个图片实验的基础上进行了与当前图片相邻帧之间的特征点匹配实验,从实验数据表2可得,本算法不仅对特征点提取部分有所优化,同样的对特征点匹配部分也有明显的优化效果。证明了本优化算法对视觉SLAM前端部分的适用性及有效性。
表1 特征点提取数据表Table 1 Feature point extraction data table
图4 优化前后图像特征点匹配对比图Fig.4 Comparison of image feature point matching before and after optimization
表2 特征点匹配数据表Table 2 Feature point matching data table
考虑到周围环境的多样性及复杂性,本研究在对比实验的选择上选取了两组具有代表性的弱光环境图像作为实验对象,并选取了两种常见的具有代表性的图像增强方法与本研究算法进行对比:一种是文献[11]所述的基于直方图均衡化的图像增强,这种方法通用性较强;另一种是文献[14]的图像增强算法,该算法在对数域里对图像的两个分量进行处理,具有良好的图像增强效果。对比实验见图5、6,表3、4。
图5 特征点提取对比实验Fig.5 Comparative experiment of feature point extraction
图6 特征点匹配对比实验Fig.6 Comparative experiment of feature point matching
表3 特征点提取对比实验数据Table 3 Data of comparative experiment of feature point extraction
表4 特征点匹配实验对比数据Table 4 Data of comparative experiment of feature point matching
由以上对比试验数据可以看出,虽然另外两种算法同样对弱光图像的特征点提取及匹配有一定的优化作用,但总体效果不如本研究的优化算法。文献[14]算法在亮度方面的提升明显不如本算法,而文献[11]中的方法所得到的图像对比度明显过高,进而增加了无效特征点及无效特征点对的数量。本优化算法在保证了整体性平衡的同时,无论是总体特征点数量还是有效特征点数量都明显高于其他算法,进一步验证了本优化算法在弱光环境下对视觉SLAM前端部分的有效改进。
为验证本优化算法在三维点云建图方面的有效性,在RGB-D对象数据集(RGB-D Object Dataset)中挑选了rgbd-scenes作为实验数据,所建立出的三维点云图如图7所示。
实验结果与原图相比,在保持了原图像的整体框架的基础上,提高了许多细节之处的清晰度及完整度。
图7 优化前后三维点云对比图Fig.7 Comparison of 3D point cloud before and after optimization
本工作针对弱光环境下机器人SLAM所可能产生的特征点提取不足或前后两帧之间特征点匹配质量不高,进而影响机器人最终的定位准确性或建图完整性这一问题,提出了一种基于弱光环境下图像增强的优化方法,在视觉SLAM前端部分对算法整体进行改进,经实验验证本研究算法增加了所提取特征点数及有效特征点的占比。同时,经过优化方法处理后的三维点云图在保证整体框架不变的同时,提高了清晰度及完整度。