zoukankan      html  css  js  c++  java
  • Covisibility Graph

    在Orb-Slam中有三个地图分别是Covisibility Graph,Spanning Graph,以及Essential Graph,它们三个分别是什么意思呢?

    首先,图优化是目前视觉SLAM里主流的优化方式。其思想是把一个优化问题表达成图(Graph),以便我们理解、观察。如果题主想更清楚地认识图优化与SLAM的关系,可以参见

    一个图中有很多顶点,以及连接各顶点的边。当它们表示一个优化问题时,顶点是待优化的变量,而是指误差项。我们把各个边的误差加到一起,就得到了整个优化问题的误差函数。

    顶点的参数化形式可以有很多不同的样子。例如某些顶点可以表示相机的Pose,另一些顶点可以表示三维空间点。同理,边也有不同的形式。除了个别的顶点和边,我们也关心整个图的结构,例如连通性等。

    一个不太恰当的例子(图来自FrameSLAM: From Bundle Adjustment to Real-Time Visual Mapping)。图中红色点可看成关键帧相机Pose,青色点表示空间点,蓝色和红色边表示Pose-Pose的边,而黄色边表示Pose-Point的边。(虽然这可能不是原图的意思,但我希望通过这个图可以帮助题主理解。)

    你问题当中的Covisibility Graph, Essential Graph,都是不同图的形式。Spanning graph理解成生成树更好一些。

    如果我们考虑所有的相机 Pose 和所有点的空间位置,构造出的图将会非常复杂,而难以直接进行实时优化。因此,通常我们会构建一些带有特殊结构的图,以满足实时性的需要。

    最简单的是Pose Graph。如果我们对特征点的空间位置并不关心,就可以构建只带有Pose结点,以及Pose-Pose边这样的图。由于一个照片中常常有上千个特征点,这样做可以节省许多计算量。

    Covisilibilty Graph 的顶点是相机的Pose,而边是Pose-Pose的变换关系——所以也算是Pose Graph 一种吧。当两个相机看到相似的空间点时,它们对应的Pose就会产生联系(我们就可以根据这些空间点在照片上的投影计算两个相机间的运动)。根据观测到的空间点的数量,给这个边加上一个权值,度量这个边的可信程度。

    Essential Graph 比Covisibility Graph更为简单,ORB-SLAM主要用它来进行全局优化。为了限制优化的规模,ORB-SLAM试图尽量减少优化边的数量。而尽量减少边,又保持连通性的方法,就是做一个最小生成树。

    Covisibility 是一直在用的概念,而Essential Graph是orbslam自己提出的概念,为了减小全局回环的计算量。当你自己实现SLAM时,也会碰到这些困难,并设计一些应对的策略,这些就是你的创新性。事实上,随着SLAM时间的增长,如何控制图的结构和优化的规模,仍是现在SLAM有待解决的一个问题。

    我的理解:

    1.covisibility graph
    顶点:相机的 pose
    边:pose 和 pose 间的位置关系
    权值:边的可信度(每条边都有自己的权值)

     

    具体到orb_slam2上,其表示了,每个关键帧处的相机位置之间的关系“图”

     

    2.essential graph
    顶点:相机的 pose
    边:pose 和 pose 间的位置关系
    权值:边的可信度(每条边都有自己的权值)

     

    是orb_slam2中主要用的“图”。
    是对 covisibility graph 的优化(边最少、置信值高、保持连通性)
  • 相关阅读:
    【python刷题】前缀和
    【python刷题】数组链表去重
    【python刷题】滑动窗口法
    【python刷题】二分查找
    【python刷题】广度优先搜索(BFS)
    【python刷题】回溯算法(深度优先搜索DFS)
    机器学习十讲-第三讲分类
    数学知识-质数&约数
    树与图的DFS与BFS
    桥梁保护与监控-开发进度(二)
  • 原文地址:https://www.cnblogs.com/liuzhenbo/p/10849840.html
Copyright © 2011-2022 走看看