局部自适应图像增强的ORB-SLAM2算法
2022-02-17李宪华田硕宇
李宪华,田硕宇,宋 韬
(1.安徽理工大学机械工程学院,安徽 淮南 232001;2.安徽理工大学人工智能学院,安徽 淮南 232001;3.上海大学机电工程与自动化学院,上海 200444)
随着科技的不断进步,近年来自主移动机器人在越来越多的领域为人们的生产生活提供便利,如自动驾驶、扫地机器人和快递派送机器人等。在这些应用场景中,自主移动机器人应具备定位、环境感知、路径规划和语义识别能力,才能做到初步的自主运动,而定位和环境感知能力是自主移动机器人完成各种任务的基础,只有确定机器人自身的位姿信息和周围的环境,才能进行更深层次的操作。同步定位与建图技术(Simultaneous Localization and Mapping,SLAM)是自主移动机器人领域的研究热点。根据SLAM硬件设备的不同,可分为激光雷达SLAM和视觉SLAM,两者各有优劣。激光雷达SLAM精度高、工作稳定、算法简单,但传感器的探测范围有限、成本高、所建地图缺乏语义信息;视觉SLAM结构简单、成本低廉,可以从所建地图中提取语义信息,但对于低照度、低纹理的环境鲁棒性不足。能否从环境中提取出语义信息对自主机器人完成各种任务具有重要的意义。因此,视觉SLAM在服务型自主机器人中的应用更加广泛。随着研究的深入,从第一个能够实时运行的视觉SLAM算法MonoSLAM出现,到如今的PTAM、ORB-SLAM、RGB-DSLAM、DTAM、LSD-SLAM、SVO、DSO以及语义SLAM,视觉SLAM技术已经有了长足的进展。
文献[1]以EKF(扩展卡尔曼滤波)为后端,追踪前端稀疏的特征点,用相机当前状态和所有路标点来估计系统的位姿。文献[2]实现跟踪和建图的并行化,文献[3-4]在PTAM的基础上,引入了回环检测机制,使用ORB法提取特征点,在具有较高精度的同时能够实时运行。文献[5]使用深度图像估计相机位姿,简化算法的同时提高了系统的鲁棒性。文献[6-7]均是基于直接法的SLAM,不同的是后者生成的是半稠密地图。文献[8]结合特征点和直接法的优点,速度极快,但舍弃了后端优化和回环检测,导致精度下降、重定位困难。文献[9]基于稀疏直接结构和运动公式的视觉里程计的方法,但同样舍弃了回环检测。文献[10]将数据关联从传统的像素级别提升到物体级别,提高了复杂环境下的精度。
与上述的视觉SLAM算法相比,ORB-SLAM2在保证实时性的前提下,不论是在小尺度还是大尺度环境下仍具有较高的精度,在光线变化和高速移动的场景仍有很好的鲁棒性。虽然ORB-SLAM2在很多复杂环境下都具备良好的鲁棒性,但也存在有以下问题:在低纹理环境下,两级固定阈值提取特征点存在鲁棒性不足;在低光环境下,系统的漂移误差较大。
ORB-SLAM2的地图由关键帧和地图点构建。关键帧包含当前时刻相机的位姿信息,因此关键帧的数量和生成的关键帧的质量直接影响到算法的估计精度。通过提高系统在低光环境下提取到的特征点数量,使得更多的帧能够满足特征点选取条件,从而生成更多的关键帧,进而提高算法的精度。通过将一帧划分为更小的图像块,使用自适应伽马值的图像增强算法对图像低照度区域进行增强。这种算法解决了特征点过少且分布不够均匀的问题,并且提高了关键帧的质量,使得系统在低光环境生成了更多的关键帧、减小了系统的漂移误差。
1 ORB-SLAM2算法介绍
ORB-SLAM2算法将一系列连续帧作为估计相机位姿的输入参数,建立周围环境的地图。该算法基本延续了多线程跟踪和建图(Parallel Tracking And Mapping,PTAM)跟踪线程和建图线程并行框架,并在此基础上加入了回环检测机制,减少了系统的漂移累计误差。
ORB-SLAM2由Tracking、Local-Mapping和Loop-Closing 3个线程构成。Tracking 用于前端估计,Local-Mapping和Loop-Closing用于后端优化。在Tracking线程中ORB-SLAM2使用FAST角点算法提取特征点,采用BRIEF方法计算描述子,通过构建金字塔模型和计算质心标定方向解决在尺度不变性和旋转不变性问题。在系统初始化成功后,通过当前帧的特征点和地图点的匹配估计当前帧位姿。有了初步的匹配后,会进入局部地图追踪步骤以求解更精细的当前帧位姿,最后为了提高系统鲁棒性以比较宽松的条件决定关键帧。在Local-Mapping和Loop-Closing两个线程中只对关键帧进行处理。前者主要对局部地图进行更新和优化,包括关键帧的插入和剔除,地图点的创建和删除;后者主要分为闭环探测和闭环矫正两个过程对全局地图进行优化。
2 特征点提取算法
2.1 现有的特征点提取算法
关键帧的数量和质量直接影响到算法的估计精度,但在低照度、低纹理的环境下捕获的图像不仅亮度较低,而且对比度不高。采用ORB-SLAM2中的两级固定阈值算法,很难提取到足够的特征点,从而导致关键帧的缺失,最终造成SLAM系统的精度下降,甚至导致追踪失败。而在低照度、低纹理的环境下,SLAM系统基本不可能重定位成功。为了能在低照度、低纹理环境下生成优质的关键帧,文献[11]对每个像素点设置自适应阈值,以达到在不同亮度、对比度的图像里均能提取到数量、分布合适的特征点。文献[12-13]通过对图像进行低光增强处理,增强了系统在低光环境的鲁棒性。文献[14]将点线特征结合,解决了低纹理环境下特征点提取不足的问题。文献[15]将直接法与特征点法相结合,基于灰度不变的思想在相邻帧提取特征点,而非传统ORB对每一帧都提取特征点并计算描述子,运行速度更快,且低纹理环境下有着更好的鲁棒性。文献[16]通过对重复运动进行检测筛选出质量更高的关键帧,减轻系统负担的同时取得了良好的鲁棒性。文献[17]将相对运动量作为关键帧的选择条件,并且引入劣质帧剔除算法,提高了关键帧的生成质量,增强了系统的追踪性能。综上,对于提高SLAM系统在低照度、低纹理环境下的鲁棒性的研究已经取得了大量成果,但仍然存在不足之处:
1)每个特征点取不同阈值、对每一帧进行图像增强和点线结合等方法,虽然提高了SLAM系统在低光环境的定位精度,但增加了对每一帧的处理时间;
2)半直接法将最耗时的特征点匹配用基于图像强度的思想来替代,在低纹理环境有着良好的准确性和鲁棒性,但由于其依赖灰度不变的思想,故难以应对复杂的光照环境(见图1)。
图1 ORB-SLAM2在MH5中的估计地图
图1为ORB-SLAM2在MH5数据集中计算出的估计地图。图1中放大部分为低光区域,蓝色方框表示关键帧,绿色的轨迹为算法估计的相机运动路线。可以明显看到,关键帧的生成并不均匀且数量较少。
综上所述,如何在低照度、低纹理的环境下提取到更多、分布更均匀的特征点是解决问题的关键。本文提出了一种局部自适应图像增强算法,将每一帧划分为若干图像块,对其中低照度、低纹理的图像块进行图像处理。通过自适应阈值伽马变换,对低照度、低纹理的图像块进行增强,提高在这些低光环境下提取到的特征点的数量,最后在EuRoC数据集中对改进后的特征点算法进行实验验证。
2.2 改进的特征点提取算法
1)图像块的划分 图像处理是一项耗时操作,如果对一整幅图像进行处理,会增加算法的运行时间;如果能只对图片的低照度、低纹理区域进行图像处理则可以减少图像处理的时间。因此,本文提出一种劣质帧检测算法,将每一帧划分为若干大小为30*30像素的图像块,边缘大小不足的部分直接划分为一块。具体的图像块数量取决于帧大小,每一帧分割出的图像块数量相同。对每个图像块根据亮度和对比度进行划分,对低照度、低纹理的图像块进行图像增强,避免了对每一帧的所有部分都进行图像增强,降低了算法的计算时间,提高了Fast角点算法提取出特征点的可能性。
首先,以30*30的大小对每一帧进行分割,计算每个图像块的亮度和对比度,将图像块分为高照度、高纹理,低照度、高纹理,高照度、低纹理和低照度、低纹理4类。
亮度计算公式
(1)
对比度计算公式
(2)
式中:F(i,j)表示图像块在(i,j)处的灰度值;M、N表示图像块的行数和列数。
对图像块分类完毕后,对具有高纹理的图像块直接使用固定的高阈值提取特征点;对于照度良好但低纹理的图像块使用较低的固定阈值提取特征点;将低照度、低纹理的图像块进行图像增强处理,对图像处理后的图像块提取特征点。
2)自适应伽马变换 传统伽马变换改变图像对比度是通过幂函数曲线将对比度拉伸,伽马指数小于1时增强图像低照度的对比度;指数大于1时,增强高照度图像的对比度。但不同亮度和对比度下的图像灰度分布不尽相同,采用单一的伽马指数经验值往往达不到理想的效果。传统的伽马变换公式(3)如下
(3)
式中:I(i,j)为输入图像;O(i,j)为输出图像;γ为控制参数。
对于低纹理的图像块,通过调节参数γ可以获得较为不错的效果,但单一的参数无法满足不同灰度分布的图像块。因此,如果参数γ可以根据不同灰度分布的图像块自动调整,就可以解决这个问题。自适应伽马变换算法的通式如下
(4)
本文结合文献[18]提出的γ值计算方法提出了一种改进的自适应阈值算法,其中参数γ的计算公式如下
γ[i,j,N(i,j)]=α[128-GFmask (i,j)/128]
(5)
其中GFmask(i,j)定义在一个大小为(2K+1)*(2K+1)的窗口上,由输入图像经高斯滤波后的反色矩阵得出Iinv(p,q)。具体计算方法如下
(6)
公式(5)中的α的计算方式根据图像块的亮度不同,计算的公式也有差别,如下所示:
①当图像块的整体平均灰度大于128时;
(7)
②当图像块的整体平均灰度小于128时;
(8)
图2是经过局部自适应图像增强后,ORB-SLAM2算法和改进算法在同一帧里提取到的特征点。如图2所示,改进算法在图像的低光区域提取出了更多特征点。
图2 ORB-SLAM2和改进后的算法在同一帧提取到的特征点对比
图3为改进算法的流程图。系统将当前帧送入特征点提取器中,首先,将图像进行分割成若干小的图像块;然后,以图像的对比度为判断依据,对高对比度的图像块直接提取特征点,对于对比度不足的图像块根据其整体平均灰度的大小对α取不同的值,对图像块进行自适应伽马值变换;最后,对图像增强后的图像块提取特征点。
图3 改进算法流程图
与传统的ORB-SLAM2算法相比,改进后的算法在相同环境下提取出了更多的特征点,提高了两帧间成功匹配的可能性,因此在低光区域生成了更多的关键帧(见图4)。
图4 改进后算法在MH5数据集的地图
3 实验研究
3.1 公开的数据集分析
数据集测试实验的系统环境为Ubuntu 18.04,测试实验的硬件支持为i7-10750H,虚拟机分配了4个处理器内核,运行内存为4GB。测试使用了EUROC数据集中的MH01-easy、MH03-medium和MH05-difficult 3个数据集。对ORB-SLAM2和改进特征点选择算法进行了轨迹、绝对误差、相对误差、平均追踪时间方面的比较。测试结果取对每个数据集在5次测试中最好的1次。测试中的轨迹、绝对误差(APE)、相对误差(RPE)由evo[19]软件包提供的方法计算。表1为本文选择的3个数据集的简要描述。
表1 EUROC数据集
1)SLAM定位精度分析 SLAM的位姿估计精度是评估系统性能的重要指标。在SLAM中关键帧和地图点构成了地图,一系列的关键帧则构成了相机的运动轨迹。图5分别是ORB-SLAM和改进的特征点选择算法在MH05-difficult数据集中轨迹的对比,其中灰色虚线为真实轨迹,蓝色实线为算法估计轨迹。
(a)ORB-SLAM2算法
在图5(a)中,右下角的轨迹与实际轨迹有着明显的误差,因为此时相机进入了低照度的环境,没有提取到分布均匀的特征点,导致在这一区域生成的关键帧较少,最终产生了较大的误差;改进后的算法如图5(b)所示,与真实轨迹相比没有产生较大误差,改进后的算法即使在低照度的环境下,仍能提取出足够的特征点,且均匀分布在图像上。
对于定位精度,通过绝对轨迹误差来进行评估,即计算SLAM系统的估计值与相机的真实位姿值之间的差。通过计算ATE可以直观地反映算法的精度和轨迹全局一致性,具体如下
(9)
式中:Fi为第i帧的ATE,定义如下
(10)
式中:S为相似转换矩阵,用来计算从估计位姿到真实位姿的转换。
图6为ORB-SLAM2和改进后的算法在MH5数据集中的ATE曲线。在第70s时相机进入了低照度环境,在第80s时离开低照度环境。
(a)ORB-SLAM2
由图6可以看出,改进后的算法相较于ORB-SLAM2在低照度环境下的绝对轨迹误差更小。改进后的算法主要提高了SLAM系统在低照度环境下的准确性和鲁棒性,因此在其他区域的绝对轨迹误差与ORB-SLAM2相比没有较大差别。
2)SLAM系统漂移估计 系统漂移误差通过相对位姿误差(Relative Pose Error,RPE)来表征。RPE指在固定时间差内,相邻两个关键帧的位姿变化量的差,其计算公式如下
(11)
其中transEi代表取相对位姿误差中的平移部分。Ei表示第i帧的RPE,定义如下
(12)
表2为ORB-SLAM和改进后的算法在3个数据集中的相对位姿误差的均方根误差(Root Mean Square Error,RMSE)的比较。
表2 RMSE比较
表2中,改进的算法主要提升低光环境下系统的精度,对于照度良好的MH1、MH3数据集在精度方面的提升不高;低照度区域的MH5数据集,改进算法的误差为原来的 83%。
图7为ORB-SLAM2与改进算法在MH5数据集中的RPE曲线。
(a)ORB-SLAM2
由图7(a)可得,在80s之后的低光环境里,由于无法提取到足够的特征点,一系列的帧质量均不达标,导致最终生成的关键帧不足,ORB-SLAM2在此处产生了最大的RPE。如图7(b)所示,在相同的低光环境里,改进算法能提取出更多的特征点,提高了算法在低光环境下的鲁棒性。与ORB-SLAM2相比,改进算法的最大系统漂移误差仅为原来的43%。
3 )算法实时性分析 实时性是评估SLAM系统优劣程度的重要指标之一,平均追踪时间指算法对每帧在Tracking线程处理的平均时间,即对图像进行分割、提取特征点和生成关键帧的过程。表3为ORB-SLAM2与改进算法在MH1、MH3和MH5 3个数据集中平均追踪时间的比较。
表3 平均追踪时间比较 ms
如表3所示,MH1和MH3数据集均处于光照良好的环境,引入图像块划分算法后,运行时间有所增加;在MH5数据集中,改进算法对每一帧的处理时间取决于当前帧的质量,低光、低纹理的图像块越多,处理时间随之增加,改进算法的每一帧的平均处理时间更长。但相比于低光环境中系统产生的较大误差以及可能的追踪失败的情况,在不影响系统的实时性的前提下,运行时间的稍有增加是可以容忍的。
4 结论
本文提出了一种基于改进特征点提取的ORB-SLAM算法,通过自适应伽马变换对图像低光部分的增强,提高了SLAM系统在低光环境下提取特征点的能力,使得改进后算法的总体系统漂移误差与ORB-SLAM2相比减少了17%,最大漂移误差降低了57%,同时提高了SLAM系统在低光环境下的鲁棒性。