卡卡卡卡咔11吧 关注:12贴子:1,320
  • 10回复贴,共1

ORB-SLAM相关论文翻译

只看楼主收藏回复



IP属地:上海1楼2017-12-28 09:41回复
    ORB-SLAM:一个准确的多功能SLAM系统
    概论:此文介绍了ORB-SLAM,一个基于特征点的单目实时SLAM系统,支持小型/大型,室内/室外环境。此系统对剧烈的运动噪声也具有鲁棒性,支持宽基线闭环检测与重定位,和全自动初始化。基于近年来的很棒的算法,我们从头设计了一个新的系统,使用特征点
    去做SLAM所有的任务:跟踪,建图,重定位和回环检测。我们使用了一种较好的方法,选取重建过程中的关键点与关键帧,得到了很好的鲁棒性,生成了简洁而可用于追踪的地图,其只会在场景发生变化时才会增长,并且持久建图。我们使用最流行的数据集的27段
    序列进行了透彻的测试。与其他最先进的单目SLAM相比,ORB-SLAM取得了空前的性能。为了社区的利益,我们将源码开源。
    关键词:持久建图,定位,单目视觉,识别,SLAM
    1.介绍
    众所周知,光束平差法(BA)被用来优化相机定位与稀疏集合重建,前提是需要强大的匹配网络和好的初始猜测。很长时间以来,这方法被认为无法在实时程序中负担得起,,例如视觉SLAM。视觉SLAM的目标是在重建环境的同时估计相机轨迹。现在我们知道为了
    实时获得精确结果又不要求过分的计算资源,一个实时SLAM算法需要给BA提供以下条件:
    ·在关键帧中与当前观测相关的场景特征点
    ·由于复杂度随着关键帧的数量而增长,关键帧的选取应避免冗余
    ·需要一个关键点与关键帧的强大的配置网络来产生精确的结果,即一套普遍的关键帧集合,观测到巨大视差变化和足够的闭环匹配。
    ·关键帧的初始位姿估计与点位置的非线性优化
    ·实时局部地图,使得优化能专注于scalability
    ·快速全局优化(例如位姿图)的能力做到实时闭环
    BA的第一个实时应用是Mouragon et. al.的视觉里程计,基于Klein与Murray开创性的SLAM工作——并行跟踪与建图(PTAM)。此算法虽然仅限于小尺度操作,但提供了简单而高效的关键帧选取,特征点匹配,点云三角化,每帧的相机定位和追踪丢失后的重定位
    方法。可惜一些因素严重限制了其应用:缺少闭环检测和对遮挡的恰当处理,重定位的视点的不稳定和需要人力介入才能启动的建图。
    在本文的工作中我们基于PTAM的主要思想,Galvez-Lopez和Tardos的地区识别工作,Strasdat et. al的尺度敏感的闭环检测和利用共视信息进行大尺度操作的思想,去从头设计了ORB-SLAM,一个全新的单目SLAM系统。其主要贡献为:
    ·利用相同的特征点做所有任务:跟踪,建图,重定位和闭环检测。这使得我们的系统更高效,简单,可靠。我们使用ORB特征点,使得实时计算不需要GPU,视点,光照变化稳定。
    ·大型环境下的实时操作。要感谢共视图的使用,跟踪与建图在一个局部共视区域中,与全局地图独立。
    ·实时闭环检测基于一个位姿图(我们称为“本质图”)的优化。本质图由系统维护的树生长而来,闭环检测的链接和strong边从共视图中来。
    ·实时相机重定位,对视点与光照变化非常稳定。这点保证了跟踪失败后的恢复与加强了地图的重用。
    ·新的自动的,鲁棒的初始化流程,基于模型选择的,从平面/非平面场景的生成的初始地图。
    ·一种“适者生存”的方法选择地图点与关键帧,在生成时宽松但剪裁严格。这种策略提高了跟踪的鲁棒性加强了持久操作因为冗余的关键帧被丢弃了。
    我们利用流行的公开数据库进行了广泛的测试,从室内到室外,包括手持,汽车和机器人的序列。值得一提的是,我们相比先进的直接法取得了更精确的相机位置,直接法使用像素灰度而不是特征点重投影来优化误差。我们会在IX-B节讨论其可能的原因。
    此处的闭环检测和重定位方法基于我们之前的工作。一个雏形之前已展示。在本文中我们加入了初始化方法,“本质图”和perfect all methods。我们也细细描述了所有的构建模块,进行了全面的实验验证。
    就我们所知,这是目前最完整,可靠的单目SLAM方案,为了社区的利益我们开放了源码。示例视频与代码可在我们的项目网站找到。


    IP属地:上海2楼2017-12-28 09:42
    回复
      2.相关工作
      A.区域识别
      Williams et al.的研究比较了几个区域识别的方法,得出结论:基于表面的方法,即图片与图片匹配在大型环境比map与map或图片与map匹配的方法更好。在基于表面的方法中,词袋技术,例如概率方法FAB-MAP,由于它们的高效名列前茅。DBoW2第一次使用了
      二进制词袋,通过BRIEF描述子与非常高效的FAST特征点得出。这与SURF和SIFT特征词袋相比,减少了超过一个数量级的大量的计算时间。尽管十分高效,但BRIEF没有旋转或尺度鲁棒性,仅限于平面内的轨迹追踪与相似视点的回环检测。在我们之前的工作中,我们
      使用了基于DBoW2与ORB结合的区域识别词袋。ORB是二进制特征,具有旋转和尺度鲁棒性(一定范围内),导致了非常快的区域识别与视点稳定性。我们证实了在高度回调和鲁棒要求的情况下,在4个不同的数据集下,其从一个10K的图片数据库中重获回环候选者所
      需要的时间减少了39ms。在本文的工作中我们使用了此区域识别的升级版,使用共视信息,到数据库匹配,返回若干候选者而不是最佳匹配者。
      B.地图初始化
      单目SLAM需要一定的步骤去创建初始地图,因为无法从单张图中获取深度。一种解决办法是从一个已知结构初始化。在滤波方法的环境下,在深度非常不确定的情况下,点也能通过使用逆深度参数化来初始化,期望在后面能够聚集到真实的位置。Engel et al.
      最近的半稠密工作,使用类似方法用非常随机的值去初始化像素深度。
      从两张图初始化的方法要么是假设局部场景的平面性,然后使用Faugeras et. al的方法从单应性矩阵恢复相机相对位姿,要么是计算本质矩阵,为平面的或一般的场景建模,使用Nister的五点法(其被应用于多种方案)。这两种方法在小视差的情况下都不能
      被很好地被约束,并且受苦于twofold ambiguity solution,如果平面中所有的点都接近于其中一个相机中心。另一方面,如果视差中有非平面场景,一个单独的基本矩阵能用八点法算出,相对相机位姿也能无ambiguity地被恢复。
      我们在IV部分展示了一个新的,基于场景模型选择的自动方法,选择是利用平面场景的单应性矩阵法还是非平面场景的基本矩阵法。Torr et al.提出了的一种统计性方法来进行场景模型选择。基于相似的理论,我们开发了一种启发式初始化算法,考虑并减少了
      在太近的情况下使用基本矩阵法的情况(即平面,类平面和小视差),帮助选择更好的单应性矩阵法。在平面情况下,考虑到操作安全性,我们抑制了从拥有twofold ambiguity的场景初始化的情况,因为这样会导致方案崩溃。我们延迟了初始化,直到能从显著视
      差产生单一方案。
      C.单目SLAM
      单目SLAM最初通过滤波解决。通过此方法所有帧都用来估计地图特征点位置与相机位姿。此方法拥有浪费计算资源的缺点——处理大量连续帧却只得到较少的信息,和累计线性误差的缺点。另一方面,基于关键帧的方法仅使用关键帧估计地图,使得计算资源被用
      到更繁重却准确的光束平差优化上,因为地图不是逐帧绑定的。Strasdat et. al证明了在相同的计算资源下,基于关键帧的技术比滤波更精确。
      最具代表性的基于关键帧的SLAM系统大概是Klein和Murray的PTAM。它是第一个提出利用同步的线程分离相机追踪与建图的思想,并被证实在小场景的AR程序中很成功。最初的版本后来改进了,增加了edge feature,追踪时旋转估计步骤和更好的重定位方法。P
      TAM的地图点与通过patch correlation匹配得到的FAST角点相关。这使得这些点只能用于追踪而不是区域识别。事实上PTAM不能检测大型回环,重定位是基于关键帧的低分辨率缩略图相关性,使得视点不稳定。
      Strasdat et. al展示了一个大尺度单目SLAM系统,其前端使用利用了GPU实现的通过FAST特征点匹配与“仅运动”BA的光流法;后端基于滑动窗口BA。闭环检测使用利用相似度约束(7自由度)的位姿图优化,这能够修正单目SLAM中出现的尺度漂移。基于此,我
      们汲取了闭环检测使用7自由度位姿图优化的想法,并应用到III-D部分中定义的“本质图”。
      Strasdat et. al使用PTAM的前端,但只在共视图中得来的局部地图中进行追踪。他们提出了一个双窗口优化后端,在内窗口持续进行BA,在限制大小的外窗口进行位姿图优化。然而,只有在外窗口大到能包含整个回环时,回环检测才比较高效。在我们的系统中
      ,我们利用了使用从共视图来的局部地图的优秀想法,然后从共视图建立位姿图,但将它们应用于一个完全重新设计的前端和后端。另一个不同点是,不同于使用回环的特定特征点(SURF),我们对相同的已追踪和建图的特征点也进行区域识别,得到了鲁棒的帧级
      别重定位和回环检测。
      Pirker et. al提出了CD-SLAM,一个包含闭环检测,重定位,大尺度操作和在试图在动态环境下工作的完整的系统。然而未提及地图初始化。并没有公开其实现,使得我们无法对精确度,鲁棒性和大尺度能力进行比较。
      Song et al的视觉里程计使用ORB特征点进行追踪,一个暂时的滑动窗口BA做后端。比较下来我们的系统更完整,因为他们没有全局重定位,回环检测和地图重用。他们也使用了已知相机与地面距离来减少单目尺度漂移。
      Lim et. al的工作在我们发表了我们的系统雏形后,也使用特征点来追踪,建图和回环检测。然而选择了BRIEF限制了系统在平面内的轨迹追踪。他们的系统只追踪从最后一帧来的点,所哟如果重访相同的位置,地图是没有被重用的(类似视觉里程计)而且
      存在增长性未集束问题。我们在VIII-E部分从质量上比较了此方法和我们的结果。
      Engel et. al最近的工作,即广为人知的LSD-SLAM,能够构建大尺度半稠密地图,使用了直接法(即直接通过像素灰度优化)而不是对特征点进行BA。他们的成果非常令人印象深刻,因为系统能够实时操作,无需GPU加速,建立半稠密图,相比只能通过特征
      点生成稀疏图的SLAM,对于机器人的未来应用更有潜力。尽管如此,他们仍然需要特征点进行闭环检测而且他们的相机位置精确度比PTAM和我们的系统要低得多,VIII-B部分我们进行了实验。这个令人惊讶的结果将在IX-B部分进行讨论。
      在直接法和特征点法之间折中的一个方法是Forster et al提出的半直接视觉里程计SVO。由于不需要每帧提取特征点,他们在四轴飞行器上能以高的帧率获得令人印象深刻的结果。然而没有闭环检测而且目前的实现主要考虑的是朝下看的相机。
      最后我们想讨论一下关键帧选取。目前所有的视觉SLAM都默认对所有帧和所有点进行BA是不现实的。Strasdat et al.的工作显示了最高效的方法是尽可能多地保留点和非冗余帧。PTAM的方法是很小心地插入关键帧避免计算复杂度增长过度。这个严格的关键
      帧插入策略使得在严苛的探索环境下会导致跟踪失败。我们的“适者生存”策略在复杂的情景下取得了空前的鲁棒性,通过尽可能快地插入关键帧,之后再去除冗余的方法,避免了额外的计算消耗。


      IP属地:上海3楼2017-12-28 11:09
      回复
        3.系统概览
        A.特征点选择
        我们系统的主要设计思想之一是建图和跟踪用的相同的特征点也被用来作区域识别来实现帧级别的重定位和回环检测。这使得我们的系统更加高效而且避免了需要向识别特征点中加入从附近SLAM特征点插值得到的深度信息,那是以前的做法。我们从每张图中
        提取特征点的用时需要少于33ms,所以我们排除了流行的SIFT(~300ms),SURF(~300ms)或者是最近的A-KAZE(~100ms)。为了获得全局区域识别的能力,我们需要旋转不变性,排除了BRIEF和LDB。
        我们选择了ORB,它是旋转的多尺度的FAST角点配合256位二进制描述子。ORB计算与匹配十分快,同时也有很好的视点不变性。这允许ORB能从宽基线中匹配,增加了BA的精确性。我们之前已经展示了ORB在区域识别上的优越性能。尽管我们目前的实现使用的
        是ORB,但本文的技术不仅限于这些特征点上。
        B.三个线程:追踪,局部建图和闭环检测
        (图1)
        从图1中可以看我们系统的概览。包含三个同步运行的线程:跟踪,局部建图和闭环检测。跟踪线程负责每帧定位相机和决定什么时候插入关键帧。首先,我们进行与前一帧的特征点匹配,然后使用“仅运动”BA优化位姿。如果跟踪失败了(例如遮挡或突然的
        移动),区域识别模块就会进行全局重定位。一旦有了相机的初始位姿和特征点匹配,就从系统维护的关键帧共视图生成局部可见图,见图2(a)和图2(b)。接下来利用局部地图点的匹配对们被重投影所搜索到,相机位姿又被所有的匹配优化。最后,跟踪线程决定
        (图2)
        了是否要插入一个新的关键帧。所有的跟踪步骤会在V部分详细介绍。创建初始地图的全新的步骤会在IV部分介绍。
        局部建图处理新关键帧并使用“局部BA”获得在相机位姿周围最佳的重建。新关键帧中未匹配的ORB会在共视图中相连的关键帧找到新的匹配来三角化新的点。有时候在创建完成后,根据跟踪时收集到的数据,一个严苛的点剪裁策略被用来保证只保留高质量的
        点。局部建图也负责剪裁冗余帧。我们将在VI部分细节介绍所有的局部建图步骤。
        闭环检测在每个新关键帧中都寻找闭环。如果闭环被检测到,相似度变幻(由积累尺度漂移导致)被计算,两端被对齐,重复的点被融合。最后基于相似度约束的位姿图优化,保证全局一致性。我们的主要创新点是在“本质图”上去做这个优化。本质图是共视
        图的稀疏的子图,将在III-D部分解释。闭环检测和矫正的细节步骤将在VII部分。
        我们使用给g2o中实现的Levenberg-Marquardt算法进行所有的优化。在附录中我们描述了每个优化中的误差术语,代价方程和变量。
        C.地图点,关键帧和它们的选取
        每个地图点p保存了:
        ·其世界3D位置X
        ·所有的观测向量(单位向量)n
        ·一个具有代表性的ORB描述子D,即其汉明距离最小/*译者注:什么鬼描述,和谁的汉明距离?确定不是码重?*/
        ·在ORB特征点尺度稳定的限制下,点被观测到的最小距离dmin和最大距离dmax
        每个关键帧K保存了:
        ·相机位姿T,从世界系转移到相机系的刚体变幻
        ·相机intrinsics,包括焦距和主点
        ·从帧中获取的所有ORB特征,不论有没有和地图点匹配。如果提供了畸变模型其坐标也是未畸变的。
        地图点和关键帧由宽松的策略创建,然而之后有非常严苛的裁减机制负责检测冗余关键帧和错误匹配的或无法追踪的地图点。这允许了运行时灵活的地图增长,提高了严苛情况下(例如旋转,快速移动)追踪的鲁棒性,当重访同一场景时其大小不会变大,而
        且是持续的。而且我们地图的离群值相比PTAM很少,代价是地图点也少。地图点和关键帧的裁剪分别在VI-B部分和VI-E部分被解释。
        D.共视图和本质图
        关键帧之间的共视信息在我们系统的几个任务中非常有用,在链接[7]中可见是无向加权图。节点是关键帧,边连接了有共视关系的关键帧(至少共视15个相同的地图点),边权重即为共视的点数量。
        为了修正闭环我们进行了位姿图优化,将误差沿图散布。为了不包含共视图的所有边(可能会很稠密),我们提出建立“本质图”,包含了所有节点(关键帧),但是边更少,仍然保持了strong network,其丢弃了精确的结果。系统建造了从最初关键帧逐渐生
        长的树,提供了共视图的最少边的子图。当一个新的关键帧插入,它被包含在共视最多的帧相连接的树中/*译者:???*/,当某关键帧被剪裁,系统更新此帧所影响的链接们/*译者:???*/。本质图包含了生长树,共视图边的子集(权重>=100)和闭环的边,得到了
        相机贼鸡儿强力的网络。图2展示了共视图,生长树和本质图的一个例子。在VIII-E部分的实验展示出,当进行位姿图优化时,本方案是如此精确,以至于一个额外的全局BA优化基本不能提升多少效果。本质图的高效和权重的影响在VIII-E结尾展示。
        E.词袋区域识别
        系统内置了基于DBoW2的词袋区域识别模块,进行回环检测与重定位。视觉单词只是描述空间的离散化,另一种广为人知的叫法是视觉词汇。词汇是用ORB描述子从一大堆图片中离线提取出来的。我们之前的工作显示出,如果图片足够广泛,相同的词袋在不同
        的环境下表现也会很好。系统逐步建立倒序排列的视觉单词,对每个单词都记录它出现在哪些个关键帧,使得数据库查询很快。当关键帧被裁剪,数据库也会更新。
        由于关键帧之间的视觉重叠,当查询数据库时不会出现一个特别高匹配的单独的关键帧。DBoW2原来的做法是考虑了重叠,将时间间隔不大的图片的得分相加。这有缺陷,在不同的时间重访同一地方的关键帧会不被包含进来。我们改为在共视图中将这些关键
        帧组合。而且我们的数据库返回的是所有分数在75%前的帧。
        在链接[5]中展示了词袋对特征点匹配的额外好处。当我们想计算两个ORB集合的相关度,我们可以将暴力匹配的范围减少到那些在特定级别上词汇树的同个节点上的特征点(我们选取了6个中的第2个),加速了搜索。在三角化新点,回环检测和重定位时的搜
        索匹配时我们也使用了这个技巧。我们利用旋转一致性测试改善了相关度,细节见链接[11],丢弃了离群值,保证了旋转一致性。/*译者:呵呵*/


        IP属地:上海4楼2017-12-28 15:53
        回复
          4.自动地图初始化

          5.跟踪
          在本部分,我们描述了对于相机的每帧,跟踪线程中的步骤。相机位姿优化,被分为若干步骤,“仅运动BA”在附录中有描述。
          A.ORB提取
          我们使用缩放因子为1.2,8个缩放级别的FAST角点。对于分辨率从512*384到752*480的图片,我们发现1000个角点比较合适,对于更高的分辨率,例如KITTI的1241*376,我们提取2000个角点。为了保证单应性矩阵的分布,我们用网格对每级别分割,想要在每
          个格子里至少提取5个角点。然后我们从每个格子里提取角点,如果角点数不够,则调整阈值。如果有些网格里没角点(缺少贴图或低对比度),也会调整。/*译者:呵呵*/接下来计算FAST角点的旋转和ORB描述子。ORB描述子被用在所有的特征点匹配,而不是PTAM
          中夫人图块匹配。
          B.从前一帧估计初始位姿
          如果上一帧的跟踪成功了,我们使用速度不变运动模型去预测相机位姿并对上帧观测到的地图点进行指导性搜索。如果没有足够多的匹配(即明显违反了运动模型),我们对上一帧所见地图点的周围也进行搜索。然后位姿由寻找到的匹配来优化。
          C.通过全局重定位估计初始位姿
          如果跟踪丢失,我们把帧转化为词袋然后和数据库中的关键帧候选者做全局重定位。我们用每帧的地图点的ORB计算相关度,如III-E部分解释。然后我们对每个关键帧进行选择性RANSAC迭代,试图用PnP算法找到相机位姿。如果我们有了足够的inliers找到了
          相机位姿,我们优化此位姿并试图与候选者关键帧匹配更多的地图点。最后相机位姿态又被优化/*译者:呵呵呵*/,如果有足够的inliers,跟踪步骤继续。
          D.局部地图跟踪
          一旦我们有了相机位姿的估计和初始特征点匹配集合,我们可以把地图中的点投影进帧中,然后寻找更多的匹配。为了在大地图中减少复杂度,我们只投影局部地图。这个局部地图包含了与当前帧共享地图点的关键帧集合K1,和在共视图中与K1是邻居关系的
          关键帧集合K2。局部地图还有一个参考关键帧Kref∈K1,与当前帧共享的地图点是最多的。现在,当前帧要搜索所有在K1,K2中能被见到的地图点:
          1)将地图点投影到当前帧,超出图片范围的丢弃
          2)计算当前视线向量v与地图点的平均视线向量n。如果v·n<cos(60°),丢弃。
          3)计算地图点到相机的距离d,如果d不属于[dmin,dmax](尺度不变区域),丢弃。
          4)计算d/dmin(帧尺度)
          5)比较地图点的典型描述子D和当前帧还未匹配的ORB特征点,at the predicted scale,and near x,然后将地图点与最优的匹配
          最后通过帧中所有匹配的地图点优化相机位置。
          E.新关键帧取舍
          最后一步就是决定当前帧是否作为新的关键帧。在局部地图中有个机制裁剪冗余关键帧,我们希望尽快插入关键帧,因为这使得充满挑战性的相机移动下(典型的是旋转)的跟踪更具有鲁棒性。以下是当前帧作为新关键帧的条件:
          1)从上次全局重定位以来已经过了超过20帧。
          2)局部建图闲置,或自上次新关键帧插入以来已经过了超过20帧。
          3)当前帧至少追踪到50个点
          4)当前帧与Kref相比的追踪点少于90%。
          不同于PTAM使用相对于其他关键帧的距离规范,我们使用最小视觉变化(即条件4).条件1保证了优秀的重定位,条件3保证了优秀的跟踪。如果局部建图在忙碌的时候新关键帧被插入(条件2),系统发出信号停止局部BA,因此新关键帧能够被尽快处理。


          IP属地:上海5楼2017-12-28 17:42
          回复
            6.局部建图
            在这部分我们描述了对于每个新的关键帧Ki局部建图的步骤。
            A.关键帧插入
            首先我们更新共视图,加入新节点,更新边。然后我们更新生长树,将Ki连接到共视最多的关键帧上。然后我们计算Ki对应的词袋,帮助三角化新点时的数据关联。
            B.近期地图点剪裁
            想要长存于地图中的地图点,必须经过严格的测试。当然这是在创建最初的3个关键帧之后,这保证了它们可跟踪并且不会(由于错误的数据关联)被错误地三角化。通过测试的地图点必须满足以下两个条件:
            1)当此点被预计能够被看见时,25%以上的跟踪要能够找到此点/*译者注:呵呵*/
            2)从地图点被创建开始已经经过了超过1个关键帧,它至少能被3个关键帧看到。
            一但地图点通过了此测试,只有少于3个关键帧时才会移除它。这是因为关键帧可能会被裁减,和局部BA会丢弃离群值。此策略使得我们的地图拥有很少的离群值。
            C.新地图点创建
            通过共视图中相连的关键帧们Kc的ORB三角化得到新的地图点。
            对于Ki中每个为匹配的ORB,我们在其他关键帧中寻找未匹配ORB来与之匹配/*译者注:呵呵*/。此匹配在III-E部分被解释而且丢弃那些不满足对极约束的匹配。ORB对们被三角化,为了接受新点,两个相机中的正深度,视差,重投影误差和尺度一致性被检
            查。一开始一个地图点被两关键帧观察到,但是可能会被其他的匹配到,所以它被投影到其余相连的关键帧,在V-D部分有相关内容。
            D.局部BA
            局部BA优化了当前处理的关键帧Ki,共视图中所有与之相连的关键帧Kc,和这些帧能看到的所有地图点。所有能看见这些点但不与Ki连接的关键帧也包含在优化中,但不处理。在优化过程中和结尾处被标记为离群值的观测被丢弃。关于此优化的更多细节见附
            录。
            E.局部关键帧剪裁
            为了维护一个紧实的重建,局部建图试图剪裁冗余关键帧。这是有好处的,因为BA的复杂度随着关键帧的数量增长,而且它允许了对同一环境的持久操作不会使得关键帧无条件增长,除非此场景北荣一直在变。我们对于Kc中90%的点都能在至少其他3个关键帧
            中以较好的尺度见到的那些帧进行丢弃。尺度条件保证了地图点维护精确测量的关键帧。这个策略启发于Tan et. al的工作,他们在检测改变的过程后丢弃关键帧。


            IP属地:上海6楼2017-12-28 18:33
            回复
              7.闭环检测
              闭环检测使用局部建图处理的最后一个关键帧Ki,试图检测并封闭回环。接下来描述这些步骤。
              A.回环候选者检测
              一开始我们计算Ki的词袋向量和它共视图中的邻居(权重>=30)的词袋向量的相似度,保留最低分smin。然后我们查询区域识别数据库,丢弃所有分数少于smin的关键帧。这和在DBoW2单位化分数在取得鲁棒性上是相似的操作,其从之前的图片计算,但是在这
              我们利用了共视信息。而且所有直接连接Ki的关键帧也被舍弃。为了接受一个回环候选者我们必须连续地检测3个一致的回环候选者(在共视图相连接)。如果有几处地方与Ki外表相似,可能会出现几个回环候选者。
              B.计算相似度变幻
              在单目SLAM有7个自由度(位置3个,旋转3个,尺度1个),所以地图会漂移。所有为了封闭回环,我们需要从当前关键帧Ki到回环关键帧Kl计算相似度变幻,来告知我们回环中的积累误差。这个相似度变幻也用作回环的几何确认。
              我们首先当前关键帧和回环候选关键帧的地图点ORB相似度,步骤在III-E部分。这是我们有了每个回环候选者的3D-3D相似度。我们对每个候选者进行RANSAC迭代,试图用Horn的方法找到一个相似度变幻。如果我们找到了足够的inliers的相似度Sil,我们优
              化它(见附录),进行导向搜索寻找更多相似度。我们再次优化,如果Sil有足够的inliers,Kl的回环被接受。
              C.回环融合
              回环矫正的第一步是融合重叠地图点,在共视图插入新边。首先当前关键帧位姿Tiw被相似度变幻Sil矫正,然后传播到Ki的所有邻居,所以回环的两边对齐了。回环关键帧和其邻居的所有可见地图点被投影到Ki,并且Ki的邻居和匹配们会在投影小范围内被
              搜索,见V-D部分。地图点匹配的和Sil的inliers的帧被融合。所有融合相关的关键帧的边会在共视图中高效地更新,连接回环的边会被创建。
              D.本质图优化
              为了高效地闭合回环,我们对“本质图”进行了位姿图优化,见III-D部分,沿着图散布闭环误差。优化利用相似度变幻修正尺度漂移。误差术语和代价函数见附录。在优化后每个地图点根据看见它的关键帧之一的修正进行变幻。


              IP属地:上海7楼2017-12-29 10:47
              回复
                8.实验

                9.结论与讨论

                (略)
                原文:http://webdiis.unizar.es/%7Eraulmur/MurMontielTardosTRO15.pdf


                IP属地:上海8楼2017-12-29 10:47
                回复
                  ORB-SLAM2:一个开源的支持单目,双目和RGB-D的SLAM系统
                  概论:我们展示ORB-SLAM2,一个支持单目,双目和RGB-D相机的完整SLAM系统,包括地图重用,闭环检测和重定位能力。系统使用标准CPU,在各种环境下实时工作,从小型室内手持序列,到无人机飞行的工业环境,到汽车漫游城市。我们的后端基于光束平差法,对
                  单目和双目的轨迹估计可以精确到米级。我们的系统包含了轻量级定位模式,使得对未建图的区域能够进行视觉里程计追踪,而且匹配到地图点允许0漂移定位。在29个流行公共序列上的测试表明了我们的方法取得了尖端的精确度,在某些情况下成为了最精确的
                  SLAM方案。我们公开了源码,不仅是为了SLAM社区的利益,也是为了成为一个对其他领域研究者的开箱的SLAM解决方案。
                  1.简介
                  (略)...ORB-SLAM2以下贡献:
                  ·(略)
                  ·我们的RGB-D结果表明利用光束平差法(BA),我们的结果比那些利用ICP或图片与深度误差最小化的先进方法更加精确。
                  ·利用双目点的远近点和我们双目的单目观察结果比其他先进的直接双目SLAM系统更精确。
                  ·轻量定位模式可在建图禁用的时候高效重用地图
                  (略)


                  IP属地:上海9楼2017-12-29 16:37
                  回复
                    2.相关工作
                    在这部分我们讨论了双目和RGB-D SLAM系统的相关工作。我们的讨论和IV部分的测试仅限于SLAM方法。
                    A.双目SLAM
                    早期一个卓越的双目SLAM是由Paz et al.基于Conditionally Independent Divide and Conquer EKF-SLAM的工作。当时它比任何其他方法都能在大环境下操作。最重要的是,它是第一个同时使用近点和远点(即由于视差过小而不能可靠得到深度的点)的双
                    目SLAM,对远点使用逆深度参数化。他们以经验论证了如果深度小于双目基线的约40倍的话,这些点是可以被可靠地三角化的。本文工作中我们延续了此策略,对“近点”和“远点”不同对待,见III-A部分。
                    大多数现代双目SLAM系统是基于关键帧的并在局部区域使用BA优化获得可扩展性。Strasdat et al.的工作在关键帧的内窗口和位姿图(位姿-位姿限制)的外窗口中使用关节优化BA(点-位姿限制)。通过限制这些窗口的大小此方法获得了时间复杂度的常数性,
                    /*译者注:即运行时间是稳定的常量*/代价是不保证全局一致性。Mei et al.的RSLAM使用了地标和位姿的相对代表并在活动区域使用相对BA来限制成时间常数性。RSLAM能够进行环两头扩展活动区域的闭环检测,但不强求全局一致性。最近Pire et al.的S-PTAM使
                    用局部BA,然而缺少大型闭环检测。类似此方法,我们对局部区域的关键帧进行BA,这样独立于全局地图,使得我们能在大型环境下操作。类似RSLAM,我们的系统利用回环的第一组头尾对齐整个回环,所以跟踪能继续使用旧地图定位,然后在全局BA前,位姿图优
                    化来最小化回环中的累计漂移误差。
                    最近Engel et al. 的双目LSD-SLAM用的是半稠密直接法,最小化图片中高梯度区域的光度误差。由于不依赖特征点,此方法理论上对运动模糊或低纹理环境更加鲁棒。然而,作为直接法,其性能会在未模型化的情况下性能严重下降,例如卷帘快门或非lamberti
                    -an反射。
                    B.RGB-D SLAM
                    最早而有名的RGB-D SLAM之一是Newcombe et al.的KinectFusion。此方法将感应器的带的所有深度数据融合到一个体积稠密模型,用来使用ICP进行相机位姿追踪。此系统由于其体素表示方法与缺少闭环检测只能应用于小场景。Whelan et al.的Kintinuous通
                    过使用滚动的环形缓存能够在大环境下操作,包含了区域检测进行闭环检测,位姿图优化的功能。
                    也许第一个流行的开源系统是ndres et al.的RGB-D SLAM。这是个基于特征点的系统,前端通过ICP和特征点匹配计算帧与帧之间的运动。后端利用从启发式搜索来的闭环检测约束进行位姿图优化。类似地,Kerl et al. 的DVO-SLAM的后端从一个视觉里程计最
                    小化光度和深度误差来计算关键帧和关键帧之间的约束来优化位姿图。DVO-SLAM也使用启发式搜索所有之前的帧选取闭环候选者,而不是依靠区域识别。
                    最近的Whelan et al.的ElasticFusion建立了环境的基于面元的地图。这是一个以地图为中心的方法,忽略相机位姿,在闭环检测时,对地图进行非刚体变幻,而不是标准的位姿图优化。其精细的重建和准确的定位令人印象深刻,但目前的应用仅限于单间室内
                    ,因为复杂度与地图中面元的数量成正比。
                    正如Strasdat et al.提出的,我们的ORB-SLAM2使用深度信息来为从图片提取特征点综合双目的坐标系。这样不可知我们的输入是双目还是RGB-D。不同于我们以上的所有方法,我们的后端基于光束平差法,进行全局持续性稀疏重建。因此我们的方法是轻量级
                    的,可以在标准CPU上工作的。我们的目标是长期而全局约束的定位而不是精细的稠密重建。然而从高度精确的关键帧位姿信息可以融合深度信息实时重建局部区域或在后期使用全局BA之后的所有关键帧的深度图得到全景的精确的3D模型。


                    IP属地:上海10楼2017-12-29 17:12
                    回复
                      3.ORB-SLAM2
                      ORB-SLAM2的双目和RGB-D模式基于我们之前基于特征点的单目ORB-SLAM,为了读者方便,其主要组件也在此总结,系统的概览在图2中被展示。系统有3个主要的平行线程:
                      1)通过与局部地图的地图点匹配和通过仅运动BA最小化重投影误差来每帧跟踪相机位置。
                      2)建图来管理局部地图并用局部BA优化
                      3)(略)...。此线程在位姿图优化后发起第4个线程进行全局BA,计算最佳结构和运动方案。
                      (略)
                      A.单目,近双目和远双目关键点
                      ORB-SLAM2作为一个基于特征点的方法,预处理了每张图,提取显著的地区关键点,如图2b所示。然后就不用图片了,所有的操作都基于这些特征点,所以系统相对于相机是双目还是RGB-D是独立的。我们的系统处理单目和双目的关键点,然后分为近点和远点。
                      双目关键点由xs=(uL,vL,uR)定义,(uL,vL)是左图的坐标,uR是右图的水平坐标。对于双目相机,我们从两图中提取ORB对于左图中的每个ORB,在右图中找匹配,如果双目图片是非畸变的,那这步是非常高效的,因为对极线是水平的。然后我们通过左ORB和右
                      匹配的水平坐标生成双目关键点,其是patch correlation精简出的子像素。对于RGB-D相机,我们在图片通道上提取ORB,正如Strasdat et al.提出的,对于每个特征点,我们综合一个right坐标,使用深度图通道中相关的深度值。对于Kinect和Asus Xtion相机
                      ,结构光投射器与红外摄像头之间的基线,我们约认为是8cm。
                      如果一关键点的深度小于基线的40倍,则分类为近点,否则是远点。(略)...远点提供更准确的旋转信息...(略)
                      单目关键点定义为xm=(uL,vL),双目中所有左图不能在右图找到匹配的双目点或RGB-D中深度值非法的点。这些点只会在多视图中被三角化,不提供尺度信息,但贡献旋转和平移。
                      B.系统起步
                      使用双目或RGB-D相机的一个好处是,有了深度信息,我们无需像单目那样从运动初始化中得到一个特定的结构。系统开始时我们用第一帧作关键帧,设为原点,从所有的双目关键点创建初始地图。
                      C.单目光束平差法和双目限制
                      我们系统使用光束平差法在跟踪线程中(仅运动BA)优化相机位姿,在优化局部窗口里的关键帧和局部地图的点(局部BA)...(略)...
                      (略)...
                      E....
                      ...如果跟踪的近点低于100且帧可以创建至少70个新的双目点,系统会插入新的关键帧。...
                      F.定位模式
                      ...视觉里程计匹配当前帧的ORB和在之前帧从双目/深度信息创建的3D点。这种匹配使得定位模式对未建图的区域也鲁棒,但会积累漂移。地图点匹配确保了对现成地图0漂移的定位。...
                      ...(略)
                      原文:http://pdfs.semanticscholar.org/ce6d/34010f04afa4cf3018f51bad8f480ebc759c.pdf


                      IP属地:上海11楼2017-12-29 18:26
                      回复