ORB-SLAM-Mono论文要点总结(二)——地图初始化

四、地图自动初始化

地图初始化的目的是计算两帧间的相对位姿,从而三角化一组初始地图点。此方法应该和场景无关(无论平坦或者普通场景),而且不应该要求人为干预选择一个比较好的双视角(比如某个视差较大的场景)。作者并行的计算两种几何模型:1. 场景是平面的单应矩阵;2. 场景是非平面的基础矩阵。作者使用一个主动策略去选择使用哪个模型,而且对于所选的模型采用具体的方法尽量恢复位姿。该方法只有确定双视角场景是可靠的才会进行初始话,对低视差情况和众知的二维平面模糊都能实施检测,从而避免初始化一个不好的地图。地图初始化的具体算法如下:

  1. 找出初始匹配:提取当前图像帧 F C F_C FC的ORB特征(只在最优尺度下),而且在参考帧 F r F_r Fr查找 x c ↔ x r x_c\leftrightarrow x_r xcxr匹配。若找到的匹配对不够,则重置参考帧。

  2. 两种模型的并行计算:如在[2]中RANSAC方案解释的那样,使用归一化DLT(4对点,基于单应矩阵H分解R、t)和8点法(基于基础矩阵F分解R、t)分别在两个并行线程里计算一个单应矩阵 H c r H_{cr} Hcr和一个基础矩阵 F c r F_{cr} Fcr
    x c = H c r x r , x c T F c r x r = 0 x_c = H_{cr}x_r, x_c^TF_{cr}x_r = 0 xc=HcrxrxcTFcrxr=0
    为了使得两种方法的步骤都是一致的(同类的),两种模型迭代的次数预设为固定且相同的,每次迭代使用的点数也是固定:基础矩阵使用8对点,其中的4对点用来计算单应矩阵。在每一次迭代过程中,对每个模型M(H表示单应矩阵,F表示基础矩阵均计算一个评分:
    在这里插入图片描述
    上式中 d c r 2 d_{cr}^2 dcr2 d r c 2 d_{rc}^2 drc2是对称的从一帧到另一帧的传递误差。 T M T_M TM基于卡方检验在95%置信度时剔除外点的阈值( T H T_H TH=5.99, T F T_F TF=3.84,表示测量误差为1个像素时的标准差)。令 Γ \Gamma Γ等于 T H T_H TH,为了在内点区域对于相同的长度d时两种模型的评分相等,这也是为了保证过程的同致性。
    保证单应矩阵和基础矩阵都的评分最高。若没有找到对应的模型(也就是没有足够的内点),从步骤1再次重新地图初始化。
    说明:此处的评分中d表示投影误差,d越小,投影矩阵(H/F)越精确,但是此时 ρ M \rho_M ρM越大,则评分 S M S_M SM越大。也就是说评分越高,投影矩阵越精确。

  3. 模型选择:如果场景是平坦的,接近平坦或者存在很低的视差,其可以通过单应矩阵构建。此时可以建立基础矩阵,但是这样的话问题不能得到很好的约束,而且去尝试从基础矩阵恢复相机运动信息可能会产生错误的结果。我们应该选择单应矩阵,因为从一个平坦的场景可以正确地完成初始化场景重建,否则(初始化过程)在检测到低视差场景时会拒绝初始化。另一方面,一个有足够视差的非平坦场景能通过基础矩阵计算,但是如果其中的部分特征点位于一个平面或者有低视差(距离远)时可以通过单应矩阵构建一些子匹配对。在这种情况下,还是应该选择基础矩阵。
    基于以下较为鲁棒的公式可进行计算并选择是否采用单应矩阵:
    R H = S H / ( S H + S F ) R_H = S_H/(S_H + S_F) RH=SH/(SH+SF)
    R H R_H RH>0.45时,说明当前场景较为平坦而且视差较低,选择单应矩阵。否则,其他情况选择基础矩阵。
    说明:此处选择模型时,也是类似上一步, R H R_H RH越大,表示 S H S_H SH越大,H矩阵更准确,所以选择单应矩阵解法。反之,选择基础矩阵解法。

  4. 基于运动信息的运动和结果恢复:一旦模型被选定,便恢复与之相关的运动假设。在单应矩阵解法的情况下,使用Faugeraqs and Lustman的8点运动假设法[23]。该方法使用==Cheriality tests?==进行有效点筛选。但是,当存在低视差时此测试可能失效,因为这些点很容易处于相机的前面和后面,这会导致选到错误的点。作者直接三角化这8对点,并检测是否大多数点都可以在视差、所有相机前方被看到且重投影误差比较低。若没有一个明确较优的结果,则不进行初始化并返回第1步。该方法会剔除一些测量结果,这可以使得初始化方法在低视差和模棱两可的配置下更加鲁棒,而且可以被认为是系统鲁棒性的关键所在。

    当使用基础矩阵进行计算时,使用标定矩阵 K K K将基础矩阵转换为本质矩阵(Essential Matrix):
    E r c = K T F r c K E_{rc} = K^TF_{rc}K Erc=KTFrcK
    然后使用奇异值分解恢复四点运动假设[2]。正如单应矩阵法时,三角化四个点对并选择对应的场景构建方法。

  5. BA:最终,进行一个全局BA优化(细节见附录)去优化初始结构。
    一个具有挑战性的室外初始化机器人数据见下图。可见PTAM和LSD-SLAM在平面上初始化所有的点,但是ORB-SLAM一直等待直到有足够的视差,然后能够正确从基础矩阵初始化。
    在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值