目录
A. Datasets and Metrics(数据集和指标)
B. Comparison with the State-of-the-art
Abstract:
本文介绍了一种利用点和线的直接视觉里程计(VO)算法。直线上的像素一般采用直接法。然而,原始光度误差仅定义为点。似乎很难把它扩展到线条上。在以往的研究中,要么忽略直线上点的共线约束[1],要么在优化系统中引入大量的计算量[2]。本文扩展了线的光度误差。证明了二维直线上点的三维点是由直线端点的深度逆决定的,并导出了该问题的封闭解。这一特性可以显著减少变量的数量,加快优化速度,并能使共线约束得到精确满足。在此基础上,我们引入了一种两步法来进一步加快优化速度,并证明了该方法的收敛性。实验结果表明,该算法优于当前最先进的直接VO算法。
Introductions:
视觉同步定位和地图(VSLAM)是许多机器人和计算机视觉应用的基本模块,从自主导航到增强现实(AR)。没有闭环的轻量级VSLAM系统通常被称为视觉里程(visual odomery, VO)[3],这对于需要在资源有限的嵌入式设备上进行实时姿态估计的应用非常重要。由于VSLAM和VO的重要性,它们在计算机视觉和机器人社区得到了广泛的关注。
如今,深度学习技术在各种计算机视觉任务中优于传统方法。在VO方面,基于学习的方法近年来取得了显著的进展[4]-[8]。然而,由于这些方法需要强大的GPU,因此它们在嵌入式系统上的实时应用是不可行的。传统的VSLAM和VO系统仍然更适合这些应用。传统的方法一般分为两类:基于特征的(间接)方法[9]和直接方法[1]。基于特征的方法长期以来在该领域占据主导地位。同时,最近的研究[1],[2]表明,即使在低纹理场景下,直接方法也具有较高的准确性和鲁棒性,而这些场景通常对基于特征的方法具有挑战性。因此,本文主要研究VO的直接法。
直接法一般采用具有足够大梯度的像素,通常包括线上的角和点。如图2 (a)所示,在许多人为的场景中,直线上的点的数量明显超过角的数量。通过光流跟踪拐角的定义很好[10]。然而,在直线上跟踪点是有问题的,因为沿直线存在一维的模糊性。如图2 (b)所示,放弃共线约束可能会导致深度估计精度降低。虽然已经探索了线条来克服这个问题,但它们通常会显著增加优化中的计算负荷[2],[11]。这项工作是基于我们之前的工作,DPLVO[2],我们寻求加速计算。本文的主要贡献包括:
我们把光度误差扩展到直线。原来的光度误差只对点有定义,难以应用到直线上。与文献[2]中简单地将共线约束引入成本函数不同,我们提出了一种新的方法来参数化三维共线点,从而使将直线纳入光度误差中变得可行。具体地说,我们证明了二维直线上任意点的三维点是由二维直线两端的深度逆决定的。此属性可以显著减少变量的数量。同时,该方法在优化过程中完全满足了共线约束,提高了优化精度。
我们引入了一种两步方法来限制由于在优化中引入长期线关联而导致的计算复杂性。在每次迭代中,我们首先使用固定的逆深度和关键帧姿态拟合3D线条。然后我们使用新的线参数来调节逆深度的优化和关键帧位姿。这两个优化问题很容易解决。证明了该方法总是收敛的。虽然本文的重点是VO,但其思想也可以纳入直接视觉惯性里程计(VIO)系统[12]。
Related work:
点和线广泛存在于人造场景中。基于特征和使用点和线的直接VSLAM或VO已被广泛研究。
Line Match:
使用线条的挑战之一是执行线条匹配。基于描述符的行匹配方法在以往的算法中被广泛采用[13]-[16]。行描述符LBD[17]通常用于此目的。由于传统的线检测方法,如LSD[18]可能不稳定,这可能导致线匹配失败[17]。
尽管基于深度学习的线条检测方法[19]-[23]显示出很好的结果,但这些方法通常对计算量要求很高。另外,运动摄像机观察到的三维线段,当线段的一部分出现在或移出摄像机的视场时,线段的外观也会发生变化,这种变化也可能导致匹配失败。最近,人们提出了基于跟踪的解决方案来克服这个问题。Wang等人[17]提出了利用时空相干性进行线匹配的线流。文献[2]提出了直线匹配的跟踪-扩展-再分布方法。该方法从一条直线上采样一些点,然后通过最小化极线上的光度误差来跟踪这些点,这可以自然地纳入DSO的前端[1]。因此,我们采用这种方法来建立直线关联。
Feature-based Method:
仅使用点[9],[24]-[26]的基于特征的方法在低纹理区域的性能下降。线条可以在低纹理环境中补充点。针对点[9],[25],[26]建立的ORB-SLAM框架可以很容易地扩展到线[13]。但这一策略显著增加了前端和后端的计算负荷[13]。在室内环境中采用线路的结构可以提高性能[27],[28]。由于曼哈顿世界的假设,这些方法很难应用于室外场景。
Direct Method:
直接法在估计相机姿态和点深度时最大限度地减少光度误差[1],[29]。漂移对于VO系统是不可避免的。最近的一些研究[30]、[31]将环路检测引入直接法进行漂移校正。虽然闭环可以纠正漂移,但它只能纠正关键帧姿态的漂移。准确的动态跟踪姿态对于许多实时应用也很重要,例如运动规划,如图2所示。直接法采用共线性的必要性。线提供了另一种提高性能的选择。
光度误差是测量参考图像和目标图像中点的强度值之间的差值。与基于特征的方法不同,基于特征的方法可以针对不同类型的特征定义几何距离,而光度误差仅针对点定义。因此,直接法很难推广到直线上。在文献中,一般采用共线约束来调节深度估计。在[11]和[32]中,将三维直线拟合到共线点上,然后将共线点投影到这条直线上。在这些方法中,线没有与点和关键帧姿态共同优化。在[2]中,将共线约束与光度误差相结合,共同优化带点和关键帧位姿的三维直线。但在优化过程中不能保证完全满足共线约束,且直线的存在大大增加了优化的计算量。此外,[2]中的三维直线在其第一次二维直线观测的后投影平面上以二自由度表示。虽然这种参数化减少了未知量,加快了优化速度,但二维线的估计误差可能导致次优结果。此外,[2]中的三维直线通过拟合共线三维点来初始化,这些点在初始估计时没有考虑共线约束。如果共线点质量不好,如图2 (b)所示,则三维线初始化将不准确甚至失败,从而使三维线退化或失去对共线点深度估计的调节能力。在本文中,我们试图克服这些缺点,并展示如何有效地优化具有点和关键帧姿态的3D线的全四自由度。
Windows Optimization
我们采用滑动窗口策略来优化全成本(12),以平衡精度和效率,如图4所示。以往的直接VO算法一般采用边缘化[1],[2]。由于3D线可以在相机的视场中存在很长时间,所以我们希望在线可见时保持更新。另外,由于(12)中可能包含错误的线关联,我们希望在优化过程中发现点到线的距离(4)过大时,删除错误的线关联。错误的联想一旦被边缘化,就很难消除。因此,这项工作没有采用边缘化的方法。我们采用了类似于[9]中描述的局部束调整的优化策略。具体来说,我们在滑动窗口和可见点和线内细化活动姿势。(12)中的其他参数为固定参数。让我们以(11)中定义的术语EL为例。如果qi;1和qi;2变得不可见,则它们被固定,如图4 (a)中的灰色点所示。因此,EL成为仅依赖于l的函数。对于较长的3D线段,该策略可能引入许多先验共线约束[2]。我们采用[2]中介绍的方法来加快计算速度。在这个框架中,可以很容易地消除错误的关联和较大的光度误差。我们采用[37]中引入的思想来有效地解决由此产生的优化问题,其中,如果涉及的参数变化很大,则增量构建Schur补,并对残差进行再线性化。
Two-step Minimization
线扩大了未知数的数量,并与点和姿势相关联。因此,用点和位姿联合优化直线会增加计算量。我们引入了一个两步最小化(12)的方法。让我们首先关注(12)的最后一项。在这个术语中,点、线和姿势是相关的。给定相机姿势和2D端点的反深度,这个问题相当于将3D线拟合到点集,即^L = fL^jL^ = arg minL EL;l2lg, EL定义在(11)中。另一方面,如果^L中的线参数是固定的,则姿态和反深度的最终成本函数E可以像只考虑光度误差一样有效地最小化。我们可以重复这两个步骤。该算法被称为两步最小化算法,在算法1中进行了总结。注意,一个Levenberg-Marquardt (LM)步骤可能包含不止一次迭代以降低成本[38]。一个问题是两步最小化算法是否收敛。下面的定理给出了这个问题的答案。定理2:两步最小化算法总是收敛的。我们在附录中证明定理2。
V. FRONT-END
我们的前端类似于DPLVO[2],对点、线和帧进行管理。主要区别在于三维线初始化和二维线组合。
3D LINE INITIALIZATION 在DPLVO[2]中,从新的2D直线上采样一些点。然后在不考虑共线约束的情况下单独估计它们的三维点。通过拟合这些3D点来初始化3D线。如图2 (b)所示,如果三维点精度较低,则会导致线初始化降低甚至失败,从而影响算法的稳定性。在本文中,我们考虑在直线初始化阶段施加共线性。具体来说,给定一个新的2D线l,我们通过最小化光度误差来跟踪后续图像中沿极线采样的2D点,就像在DPLVO中一样。这形成了一组对应x $ x 0 g。由于位姿误差和沿直线l的模糊性,这种跟踪不太可能产生精确的点-点对应,但可以产生精确的线-线对应。我们将一条二维直线l0拟合到跟踪点x0g上。假设π和π 0分别是l和l0的反投影平面。如果π和π 0之间的夹角大于3◦,我们计算三维线逐线三角剖分[17]。然后可以计算出l端点的逆深度,然后用于随后的直线跟踪。在[17]的激励下,当有新的线关联时,我们通过平均来更新三维端点。跟踪过程中光度误差较大的线将被去除,然后从这些线中采样的点将被视为DSO[1]中的法向点。
2D LINE CONMBINATION 如图5 (a)所示,LSD线检测器[18]可能会返回一条2D线的几段。在DPLVO[2]中,将参数相似的附近线合并。这种方法可以整合相邻但不同的线,如图5 (a)中红色虚线矩形所示可能位于坡度较低的区域。因此,当合并线的投影重叠或两条线的平均梯度之间的夹角较大时,我们不合并两条线。如图5所示,合并后的线可能会穿过低梯度区域。因此,原始的片段被投影到合并的线上。2D点分别从投影线段中采样。如果近似平行线彼此太近,我们将沿直线的梯度大小相加,并保留累积大小最大的那一条。我们还尝试将新检测到的线与现有的线合并,以避免引入新的参数。
VI. EXPERIMENTAL RESULTS
A. Datasets and Metrics(数据集和指标)
我们使用ICL-NUIM[39]和TUM monoVO[40]数据集来评估比较算法的性能。ICLNUIM数据集包含8个室内序列,TUM monoVO数据集包含50个来自室内和室外环境的闭环序列。为了处理不确定性行为,我们将每个序列前后运行10次,并采用累积误差曲线来总结结果,如[1]所示。该曲线显示了误差低于一定阈值的跟踪序列的数量,显示了算法的准确性和鲁棒性。ICL-NUIM数据集为每个序列提供了地面真值轨迹。从而比较了两种算法的绝对轨迹误差。另一方面,TUM单ovo数据集不提供地面真值轨迹。相反,它提供了闭环基础真理。我们采用[40]中定义的对准误差ealign、旋转漂移er和尺度漂移es来评估算法的性能。
B. Comparison with the State-of-the-art
我们将我们的算法(称为EDPLVO)与最先进的视觉里程计算法(包括DSO[1]、DPLVO[2]和ORB-SLAM[9])进行了比较。图6和图7分别显示了ICL-NUIM数据集[39]和TUM monoVO数据集[40]的结果。结果表明,我们的算法优于其他算法。ORB-SLAM和DSO的结果来源于DSO网站[1]。我们的算法与DPLVO密切相关。为了公平比较,我们使用第V节介绍的行管理方法替换DPLVO中的行管理方法,使两种算法具有相同的前端,并将这种方法命名为dplvo++。如图6所示,dplvo++的效果优于DPLVO。由于这两个数据集在低纹理环境中都很丰富,因此ORB-SLAM的性能并不好。由于所提出的线光度误差(10)对光度误差施加了精确的共线性,并且对3D线的全部四个自由度进行了优化,因此我们的算法比dplvo++实现了更好的精度。
图1展示了我们算法生成的点云和线。图8分别是我们的算法和dplvo++[2]生成的轨迹和闭环位置的点云。结果表明,EDOLVO的漂移比dplvo++小。
C. Ablation Study(消融研究)
然后,我们研究了算法中不同组成部分的影响。我们考虑了该算法的两种变体:•EDPLVO - LA:未建立线关联。也就是说(12)中的共线性项被去掉了。EDPLVO联合:联合调整成本函数(12)中的所有变量。我们采用[34]中介绍的四自由度表示来参数化三维直线。结果如图7所示。由于调节共线点,EDPLVO - LA优于DSO。此外,EDPLVO - LA的性能也接近dplvo++[2]。EDPLVO优于EDPLVO - LA并不奇怪,因为线关联为姿态引入了额外的约束。EDPLVO和EDPLVO关节的结果差异很小,但EDPLVO的效率明显更高,如下所述。
D.Runtime:
本文的主要贡献集中在后台。因此,我们评估了我们的算法,EDPLVO Joint, DSO[1]和dplvo++[2]的后端运行时间。运行时是在一台具有i7 3.4 GHZ CPU和16G内存的笔记本电脑上使用TUM monoVO数据集获得的。我们的算法EDPLVO Joint、DSO[1]和dplvo++[2]的后端平均运行时间分别约为96ms、123 ms、141 ms和172 ms。我们的算法在比较算法中具有最快的后端速度。需要注意的是,虽然EDPLVO Joint中的3D线条采用四自由度参数化[34],dplvo++对3D线条采用两自由度参数化,但EDPLVO Joint的速度仍然比dplvo++快。
VII Conclusions:
本文提出了一种新的直接VO算法。我们证明了二维直线上像素的三维点是由二维直线端点的反深度决定的,这使得将直线纳入光度误差是可行的。与DPLVO[2]相比,我们的算法显著减少了优化中的变量数量,使共线性得到精确满足。此外,我们引入了一种两步优化方法来加快优化速度并证明其收敛性。实验结果表明,该算法显著降低了优化的计算量,并获得了比现有VO算法更精确的结果。