ORB_SLAM 论文阅读PART4

AUTOMATIC MAP INITIALIZATION

地图初始化的目标是计算两帧之间的相对位姿,以对一组初始地图点进行三角测量。此方法应独立于场景(平面或一般),并且不需要人为干预以选择良好的双视图配置,即具有显着视差的配置。我们提出并行计算两个几何模型,假设平面场景的单应性和假定非平面场景的基本矩阵。然后,我们使用启发式方法选择模型,并尝试使用特定模型的特定方法恢复相对位姿。我们的方法检测低视差情况和众所周知的双重平面模糊,避免初始化损坏的地图,只在确定两个视图配置是安全的时才初始化。算法步骤如下:

  • 寻找初始响应:在当前帧F_c中提取ORB特征(仅在最精细的范围内)并在参考帧F_r中搜索匹配X_cX_r。 如果找不到足够的匹配项,请重置参考帧。
  • 并行计算两个模型:以并行的线程计算单应矩阵H_{cr}和基础矩阵F_{cr}:分别采用归一化DLT和8点算法,如RANSAC方案中所述。

                                         \large X{c}=H{cr}X{r},                   \large X_{c}^{T}F{cr}X_r=0

        为了使两个模型的程序同质化,两个模型的迭代次数都是前缀和相同的,以及每次迭代时使用的点,基本矩阵为8,单应矩阵为4。每一次迭代我们计算一下模型M的得分S_{M}

       d_{cr}^2d_{rc}^2是从一帧到另一帧对称的传递误差。T_M是基于卡方分布在95%的外点弹出阈值。(T_F=3.84,T_H=5.99假设测量误差中标准偏差为1像素)\Gamma被定义等于T_H,以至于,两个模型在其内部区域的相同d得分相同,再次使过程均匀。我们保持单应性和基本矩阵得分最高。 如果找不到任何模型(内部数据不足),我们将再次从步骤1重新启动该过程。

  • 模型选择:如果场景是平面,接近平面或者很低的视差,可以被解释为单应的方法。虽然单应矩阵也可以,但是这个问题不能很好的被限制,并且任何尝试从但应矩阵恢复动作,都可能产生错误的结果。我们应该选择单应性,因为重建方法将从平面正确初始化,或者它将检测低视差情况并拒绝初始化。另一方面,具有足够视差的非平面场景只能通过基本矩阵来解释,但是如果它们位于平面上或者它们具有低视差,则也可以找到解释匹配子集的单应性(它们很远))。 在这种情况下,我们应该选择基本矩阵。 我们发现一个强大的启发式算法是:

                                                                                  \large R_H= \frac{S_H}{S_H + S_F}

       并且如果\large R_H>0.45选择单应性计算平面和低视差的例子。否则,选择基础矩阵。

  • 运动恢复的运动和结构:一旦一个模型被选择,我们恢复相关的运动假设。在单应性中我们使用Faugeras的方法检索8个运动假设,该方法提出了cheriality测试去选择有效的解决方案。然而如果遇上低视差,这些测试会失败。因为相机的前后容易出现点,这可能会导致错误的解决方案。因此我们建议直接对八种解决方案进行三角测量,并检查是否存在一个解决方案,其中大多数点具有视差,在两个摄像机前面并且具有低重投影误差。如果没有,我们不进行初始化并且回到步骤一。这种消除解决方案歧义的技术使得我们的初始化在低视差和双重模糊度配置下是鲁棒的,并且可以被认为是我们方法的鲁棒性的关键。在基础矩阵的情况,我们通过相机内参把他转化为本质矩阵:

                                                                                \large E_{rc}=K^{T}F{rc}K

       然后,我们用奇异值分解的方式恢复四种运动假设,并用单应性来恢复重建。

  • Bundle Adjustment:最后我们执行一个完全的BA去微调初始重建。

下面这张图对比了三种PTAM,LSD-SLAM和ORB-SLAM地图初始化方式,可以看出PTAM和LSD-SLAM在平面时就初始化了,所有的点,然而我们的方法,一直等待,知道有了足够的视差。

发布了24 篇原创文章 · 获赞 2 · 访问量 6373

猜你喜欢

转载自blog.csdn.net/Xuesengxinyi/article/details/83028250