基于多特征融合的高鲁棒性视觉SLAM改进算法
2020-04-29朱鸣镝
朱鸣镝, 陈 婵
(上海理工大学 光电信息与计算机工程学院, 上海 200093)
0 引 言
同时定位与地图构建(SLAM)是计算机视觉和机器人领域的主流研究方法。这是指搭载有特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。将相机作为唯一外部传感器的SLAM称为视觉SLAM。由于相机价格低,重量轻,易于装配在其他硬件上,并且图像包含丰富的信息,近年来视觉SLAM技术取得了很大进展[1]。
根据图像信息如何用于位姿估计,视觉SLAM可以分为直接方法:基于特征的方法和混合方法。 本文主要讨论基于特征的SLAM方法。图像基本上是亮度和颜色的矩阵。 直接从矩阵水平考虑姿态估计是非常困难的。 因此,可以从称为特征的图像中选择更多角点,这些角点在摄像机角度稍有变化后保持不变。因此,可以在每个图像中找到相同的功能。 然后就可以基于这些特征讨论姿势估计问题。每个特征点都有一个描述符,可以定量测量与其他特征的相似性。
为了从图像中提取角点,Harris等人[2-3]改进并提出了基于Moravec角点检测器的Harris角点检测算法。并且David[4]提出的SIFT角点检测算法和Bay等人[5]提出的SURF角点检测算法已经证明在许多应用中特别成功。一方面,视觉SLAM中的特征点应该是独特的,对于视点和光照变化是不变的,同时对模糊和噪声具有弹性;另一方面,检测算法应该是计算上有效且快速的。然而,Harris、SIFT和SURF计算成本都很高,很难在视觉SLAM中实现实时速度。随着图像处理技术的发展,Rosten等人[6]提出了FAST特征检测算法,大大提高了速度,并应用于PTAM[7]等一些实时SLAM应用。 Rublee等人[8]提出的ORB特征检测算法将灰度质心法应用于FAST,使其具有旋转不变性。 Mur-Artal等人[9-10]在2015年提出的ORB-SLAM使用ORB提取特征,这是目前最先进的视觉SLAM算法。然而,越来越多的项目正在将SLAM应用于智能手机和嵌入式设备,因此提高SLAM的速度仍然是一个亟待研究的重要问题[11]。
本文提出了一种改进版的特征点提取算法,能够很好地应用于视觉SLAM当中。在特征点检测中,使用多尺度AGAST角点检测[12]算法找出具有尺度不变性的兴趣点。然后,结合重心法,改进的AGAST算法可以获得很强的鲁棒性。在特征描述中,提取特征点的LATCH特征,并且这两个特征组合形成新的二进制AGAST-LATCH特征检测算法。
1 OARL算法
实时性能是视觉SLAM的重要前提,因此提高算法的速度始终是一项重要的研究。ORB算法本质上是FAST和BRIEF的组合。因为Mair 等人[12]提出的AGAST算法提升了FAST算法的速度与在光照变换下的鲁棒性,但并未改善其对尺度变化与旋转变换下鲁棒性不高的缺陷。因此在本节中,研究提出了一种更好的特征提取过程,OARL算法(Oriented AGAST and Rotated LATCH),就是将AGAST算法与BRIEF算法相结合。OARL算法对 AGAST 兴趣点构建尺度空间并加入灰度质心法,使得AGAST算法对旋转变换与尺度变化有着良好的鲁棒性。OARL加快角点的提取,同时确保算法的性能。本文的方法是在灰度图像上进行的。 图1显示了本次研究提出的OARB特征提取过程。
图1 OARL特征提取过程概述
1.1 AGAST算法
FAST算法是在视觉SLAM和其他实时系统中查找特征点的首选方法。AGAST 特征检测算法对 FAST 进行了改进,使得其相比FAST来说,运算速度更快,耗时更少,对复杂场景图片有更好的表现。该算法检测角点所用的判据与FAST一致,如图2所示,FAST算法将像素“p”与Bresenham圆上的16个像素进行比较,其周围半径为3。 当存在亮度高于或低于中心点的连续N个像素时,像素“p”被判断为角点。与 FAST 不同的是,AGAST 提供了一种更详细的配置空间,采用“非较亮”与“非较暗”对原配置空间进行扩展。本文采用了以下概念:Sn→x表示为n→x的像素对于核n的状态,分配如式( 1) 所示:
图2 中心像素点n以及其周围16个像素点p
(1)
其中,S'n→x是前一个状态;I是该像素的亮度;u意味着状态仍然未知。该结果使得二叉树与三元树相比时能在每个节点上单独评估。此外配置空间大小也会增加到6N,而 616 ≈2 × 1012,所以将可能的节点N设置为16。阈值t越大,检测到的角点越准确,计算越快,但角点数越少; 阈值t越小,检测到的角点越多,但计算越慢。
对于一幅待检测图像来说,通常都具有表示均匀表面的同质化区域和(或)杂乱区域或具有纹理的结构化区域。所以,不是从训练图像(如FAST)学习像素配置的分布,而是首先概括学习结构化和同质区域的概率并根据该分布优化决策树。图像均匀的概率可以通过像素状态与核(Ps)相似的概率来建模。“更亮”和“更暗”状态是镜像状态,这意味着,例如,测试图案上的更亮像素将在其变为中心像素时将当前核像素评估为更暗。由于这种镜像,状态“更亮”和“更暗”被假定具有相同的概率(Pbd),选择其与Ps(Ps+ 2Pbd= 1)总和为1。因此,像素配置pX的概率可用如下公式进行计算:
(2)
根据式(2)的概率分布设定,利用特定场景下的训练集来确定概率数值,然后通过逆向归纳法构造出如图3所示的最优二叉决策树,在进行决策树切换时,AGAST采用了一种自适应的解决方案。先建立2棵树,其中一个专门用于同质化,另一个用于对图像进行结构化;在每个决策树的末端,对其执行基于该叶的像素配置的适当的专用树的跳转,如图2所示。当像素的邻像素发生变化时,AGAST会在2个专用树间进行切换。叶节点的灰度越浅,则在其配置中的像素越平等。AGAST算法在生成专用树时,离线完成的对叶节点的评估使得其在专用决策树之间的切换没有额外的成本。另外,左树实现了更少的像素评估,而右树则可以优化纹理区域。同时AST在任意场景中的适应性能也得到了改善,无须进行额外的训练。
图3 AGAST算法示意图
Fig. 3 Schematic of the adaptive and generic accelerated segment test
1.2 改进后的AGAST算法
1.2.1 尺度不变性AGAST
在SLAM中,当相机前后移动时捕获的相同对象将具有不同的比例,因此比例不变性对于特征检测非常重要。由于AGAST特征检测算法不具有尺度不变性,研究中设置了比例因子F(默认取1.2)并构建L(默认取8)层图像金字塔,在此基础上提取角点和计算不同尺度图像上的描述符。这使得角点具有比例不变性。然后将AGAST9-16(圆周上共有16个像素,阈值为9)算子应用于尺度空间每一层,再记录下候选点所在尺度空间位置,最终求出候选点及其AGAST分数V。
1.2.2 旋转不变性
AGAST不包含特征点的方向信息,因此难以构造旋转不变特征描述。在本节中,研究添加了一个有效计算的方向方法。本节的方法使用灰度质心[2]方法来测量角点的方向。与普通方向参数算法相比,强度质心对随机噪声具有更高的鲁棒性。
本文采用灰度质心法来计算角点方向。首先定义一个图像块B的灰度矩为Mpq,数学计算公式为:
(3)
其中,I(x,y)表示此坐标处的灰度值。 本次研究中采用矩来计算图像块B的质心C,由其运算求得从角中心O到质心C的矢量OC,这样就可以得到角点的方向θ,如图4所示。 研究中给出的数学定义如下:
(4)
改进前后的算法运行效果如图5所示。由图5可看出,加入图像金字塔和灰度质心法的AGAST角点面对具有尺度不变性和旋转不变性的数据集具有了更好的鲁棒性,准确率更高。
图4 图像块的质心C和点的方向θ
Fig. 4 The centroid of the image block isCand the direction of the point isθ
(a) 改进前的AGAST算法
(b) 改进后的AGAST算法
1.3 LATCH算法
在先前的二进制描述符的设计中,设检测到的图像关键点为中心选取检测窗口W,W是固定的预定尺寸的图像块大小,一个二进制描述子bw由T对抽样坐标序列S={st}t=1,2,…,T={[pt,1,pt,2]}t=1,2,…,T组成,其中pt,1=(xt,1,yt,1)和pt,2=(xt,1,yt,2)定义在W坐标系,索引t既与W中的一对坐标关联,又与高斯核σt=(σt,1,σt,2)t=1,2,…,T相关联。对于每一抽样对st,比较pt,1和pt,2经过光滑后的灰度,从而由式(5)来设置二进制中相应位的值,即:
(5)
其中,W(pt,1,,σt,1)和W(pt,2,σt,2)是图像块W中坐标pt,1和pt,2经标准差σt,1σt,2高斯滤波后的值。最终的二进制串bw由式(6)来定义:
(6)
(7)
将g替换式(6)中函数f就确定了基于三元组方法的二进制串bw。
LATCH算法描述子形成过程如图6所示。在运行时间上,LATCH描述子保持了二进制描述子的优势,比基于直方图描述子快好几个数量级,在鲁棒性方面,LATCH在大多数数据集上的效果优于其他二进制描述子,缩小了与基于直方图描述子的差距[13]。
图6 LATCH算法描述子形成过程
1.4 特征匹配
特征点匹配方法采用了汉明距离匹配法,基本原理是计算2个等长的字符串中对应位置的不同字符的个数。判断2个向量相似程度一般有2种方式,即:距离测度法和相似性函数法。本文在汉明距离测度的基础上再用余弦相似度作为约束,通过设定相似性的函数的阈值来去除多余的匹配点对。
1.4.1 匹配算法的改进
OARL算法匹配过程中, 如果匹配图像局部点领域信息相近和图像视角不同, 会引起2个不同特征点描述符的匹配程度超过同一点的特征描述符匹配程度。因此在匹配的2幅图像中如果出现形状相似区域, 就会产生大量误匹配。本文使用余弦相似度进行二次匹配, 对误匹配对进行消除。
1.4.2 向量空间余弦相似度匹配
判断2个向量相似程度的准则一般有2种,分别是: 距离测度法和相似性函数法。其中,距离测度法是根据向量空间上存在的距离来判断向量间的差异程度。相似性函数是用函数值的大小来表明两向量间的差异程度。本文在汉明距离测度的基础上再用余弦相似度作为约束,通过设定相似性函数的阈值来去除多余的匹配点对。对该方法过程可阐释如下。
先使用汉明距离选取初步特征点对,然后再使用余弦相似度函数进一步筛选,如果2个向量的余弦值大于阈值K则保留,反之删除 。K可以根据实验得到,对于 2 个向量x和y,余弦相似度S(x,y)可用式(8)进行计算:
(8)
使用余弦相似度对产生缩放和旋转、亮度对比度改变、模糊、视角变化的4类图像进行测试,选择平均阈值K=0. 977,测试结果见表1。
表1 测试结果
2 算法流程设计
本文提出的OARL算法设计流程如图7所示,以实现检测和描述的优势互补以及快速性和鲁棒性的有效结合。
图7 OARL算法流程图
在多尺度AGAST角点检测上,对输入图像进行图像金字塔尺度空间的构建,而后对每一图层进行AGAST角点检测和尺度评判与特征的选取。在二进制描述阶段,首先采用灰度质心方法对特征周围固定大小的图像块进行方向补偿,而后对旋转后的图像块进行抽样和三元组的选取比对,从而为特征点形成二进制描述子,为后续的特征匹配做好基础准备工作。
3 实验环境及分析
研究用Mikolajczyk数据集[14]作为测试用图,以正确匹配率作为评价指标来评估OARL算法,实验测试设备是ubuntu16.04操作系统的台式电脑,在其上进行了所有实验,CPU3.5 GHz, 8 GB内存,采用Microsoft Visual Studio code2018编程实现,本文使用2个性能指标来评价算法:计算时间,重复率[15]。其中,重复率中的距离阈值设定ε=1.5,映射到另一幅图像中重叠误差阈值设定为小于0.2。
3.1 平均计算时间
这里,将研究中的OARL算法与传统的SIFT、SURF、ORB算法各自选择2 000特征点进行比较,结果见表2,可以看出本文的OARL算法与ORB算法的运算时间是同一数量级的,稍快一些,仍然保持实时性,比SIFT,SURF的运算速度低好几个数量级。
表2 各算法运算在不同数据集上的时间
3.2 匹配精度
首先,研究在Mikolajczyk的数据集中选择了4组图像,从图像模糊、不同光照、不同比例和不同视角等方面评估算法的性能。仿真在4组测试图片中的每一组上执行OARL原始方法50次。图8、图9和表3显示了结果。表3中,第三列和第四列显示从左侧和右侧的图像中提取的特征点的数量。第五列显示检测时间。最后一列显示了成功匹配的数量。可以看出,在模糊、亮度变化、视点变化、变焦和旋转的情况下,本文的ORAL算法平均匹配时间与ORB算法为相同数量级,但是正确率却平均提升了5%左右。本文的OARL算法在不同环境变化下,准确率均高于ORB算法,这主要是因为,OARL算法的三元组F范数有着良好的抗干扰性和应对局部表观变化的能力,并且具有旋转机制,从而使得改进算法具备较好的尺度和旋转不变性,缩小了与传统的SIFT和SURF算法之间在鲁棒性的差距。
图8 OARL算法在Mikolajczyk数据集上的效果
图9 ORB算法在Mikolajczyk数据集上的效果
从图8、图9可以看出,与ORB算法相比,本文的OARL算法比ORB算法匹配要更加整齐,这也显示出匹配精度的优劣,表3的结果也显示,在相同检测角点情况下,匹配的正确率高于主流的ORB算法和传统的直方图的特征点描述法,速度却可以达到实时检测。
表3 各种算法在不同情况下重复率
4 结束语
本文提出了一种新的特征提取过程,称为OARL算法,可为图像构建一个尺度金字塔,并检测每个金字塔层中的AGAST角点,再测量每个角点的方向。图像集和序列的实验结果表明,与OpenCV中使用的ORB算法相比,所提出的OARL算法将精度提高了5%以上。通过实验可以得知,本文提出的OARL算法同时在面对旋转、尺度变化以及亮度变化的情况下都具有良好的鲁棒性,且精确度优于ORB算法,但速度却依旧可以达到实时运算。