zoukankan      html  css  js  c++  java
  • GPO:快速、准确地进行单眼SLAM初始化的全局平面优化

    GPO:快速、准确地进行单眼SLAM初始化的全局平面优化

    摘要

    初始化对于单目SLAM来说是必须的。本文重点研究了一种基于平面特征的单目SLAM初始化方法。该算法从滑动窗口的单应矩阵估计开始,然后通过全局平面优化(global plane optimization, GPO)获取相机位姿和平面法线。3D点可以通过使用平面约束恢复,无需三角化(or三角测量)。本文提出的方法充分利用了多帧的平面信息,避免了单应矩阵分解中的模糊性。我们在收集来的棋盘数据集上参照基准方法的实现,验证了我们的算法,并进行了广泛的分析。实验结果表明,我们的方法在准确度和实时性两方面都优于调优后的基准方法。

    背景介绍

    单目SLAM旨在从单个输入的视频流中,同时估计相机轨迹、重建未知环境。其被广泛应用于增强现实(AR)和自动驾驶领域。为了引导单目SLAM系统,通常必须进行初始化。在初始化期间,相机位姿和初始地图是为后续的跟踪和建图建造的。不良的初始化会减慢系统的收敛速度,甚至导致定位的失败。

    单目SLAM的一般初始化方法基于本征矩阵(or基础矩阵)分解。然后通过三角化获得三维地图。接着,使用PnP算法估计其他帧的位姿。整个过程之后可以进行增量式局部SFM。

    然而,这种初始化机制有一些缺陷。首先,需要足够大的视差才能进行准确的三角化,并且不能通过纯旋转估计特征点深度(译者注:因为会导致基础矩阵自由度下降);其次,由于SfM问题的规模很大,需要很长时间才能收敛;最后,人造长江通常由地面和前面之类的平面结构组成,导致本征矩阵的退化。

    为了处理平面规则性,一些方法估计两帧之间的单应矩阵,而不是本征矩阵。但是,单应矩阵分解的几何模糊性使得设计适应不同应用的良好选择策略变得很棘手。此外,上面所有的系统只使用了两帧的观测。如果我们可以利用更多来自平面场景的帧的信息,就有望获得更准确的估计。

    为了解决所有的这些问题,我们提出了一种快速、准确的单目SLAM初始化方法。在我们的方法中,我们首先使用RANSAC估计第一帧和当前帧之间的滑动窗口中的单应矩阵。然后,我们使用全局平面优化(GPO)最小化对应点关于平面法线和缩放平移的二维重投影误差。最后,我们使用平面方程估计平面上的3D点。我们方法的核心是通过使用所有帧的信息来避免单应矩阵的分解。我们还重建了平面地图,并且无需三角化。此外,通过减少优化中的参数数量,我们的算法获得了显著的实时改进。

    本文核心思想

    本文提出的方法都在具有(相机)轨迹和平面度量信息的棋盘数据集上进行了验证。我们复现了几种效果不错的多帧基准方法,包括基于聚类和基于优化的方法。我们说明了本文提出的GPO在精度和实时性上都由于其他的初始化方法。

    最后,总结一下我们的贡献:

    • 我们开发了一种新的针对单目SLAM的初始化方法,据我们所知,这是第一种完全利用了多帧平面信息的SLAM初始化方法。
    • 我们提出了几种初始化基线(baseline),并进行了详细的实验以验证我们的方法。
    • 我们提出了新的关于平面估计准确性方面的评估指标,以解决绝对平移误差标准的局限性。

    初始化方法如下图所示:

    在这里插入图片描述

    优化过程如下图所示:

    在这里插入图片描述

    实验结果如下:

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    总结一下

    在本文中,我们提出了一种新的基于平面特征的单目SLAM初始化方法GPO。通过联合多帧平面信息,我们的方法避免了三角化和单应矩阵分解的负担。我们在棋盘数据集上验证了系统的性能。实验结果表明,该方法在准确度和时间效率上均优于基线方法。

    本文由计算机视觉life公众号从零开始学习SLAM知识星球翻译。

    欢迎加入公众号读者群一起和同行交流,目前有SLAM、检测分割识别、三维视觉、医学影像、GAN、自动驾驶、计算摄影、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
    投稿、合作也欢迎联系:simiter@126.com
    在这里插入图片描述

    长按关注计算机视觉life
    在这里插入图片描述

  • 相关阅读:
    grpc(五)
    go的代码库
    grpc(四)
    grpc(三)
    grpc(二)
    grpc(一)
    java的泛型
    如何学习编程语言
    老男孩K8S集群部署(二)
    VMware虚拟机状态正常,但SecureCRT连接时显示超时的解决方法
  • 原文地址:https://www.cnblogs.com/CV-life/p/13627328.html
Copyright © 2011-2022 走看看