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有待解决的一个问题。
我的理解:
顶点:相机的 pose
边:pose 和 pose 间的位置关系
权值:边的可信度(每条边都有自己的权值)
顶点:相机的 pose
边:pose 和 pose 间的位置关系
权值:边的可信度(每条边都有自己的权值)
是对 covisibility graph 的优化(边最少、置信值高、保持连通性)
Covisibility Graph的更多相关文章
- SLAM学习笔记
ORB_SLAM2源码: 获得旋转矩阵,来自这里:http://www.cnblogs.com/shang-slam/p/6406584.html 关于Covisibility图来自:http://b ...
- 泡泡机器人SLAM 2019
LDSO:具有回环检测的直接稀疏里程计:LDSO:Direct Sparse Odometry with Loop Closure Abstract—In this paper we present ...
- ORB-SLAM(九)LocalMapping
LocalMapping作用是将Tracking中送来的关键帧放在mlNewKeyFrame列表中:处理新关键帧,地图点检查剔除,生成新地图点,Local BA,关键帧剔除.主要工作在于维护局部地图, ...
- SLAM的现在与未来
http://geek.csdn.net/news/detail/202128 作者:高翔,张涛,刘毅,颜沁睿. 编者按:本文节选自图书<视觉SLAM十四讲:从理论到实践>,系统介绍了视觉 ...
- ORB-SLAM2 论文&代码学习 —— 概览
转载请注明出处,谢谢 原创作者:MingruiYU 原创链接:https://www.cnblogs.com/MingruiYu/p/12347171.html *** 本文要点: ORB-SLAM2 ...
- ORB-SLAM2 论文&代码学习 ——Tracking 线程
本文要点: ORB-SLAM2 Tracking 线程 论文内容介绍 ORB-SLAM2 Tracking 线程 代码结构介绍 写在前面 上一篇文章中我们已经对 ORB-SLAM2 系统有了一个概览性 ...
- ORB-SLAM2 论文&代码学习 —— LocalMapping 线程
转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12360913.html 本文要点: ORB-SLAM2 Local ...
- ORB-SLAM2 论文&代码学习 —— LoopClosing 线程
转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12369339.html 本文要点: ORB-SLAM2 LoopC ...
- orbslam算法框架
ORB-SLAM[1]完全继承了PTAM(http://www.cnblogs.com/zonghaochen/p/8442699.html)的衣钵,并做出了两点巨大改进:1)实时回环检测:2)很鲁棒 ...
随机推荐
- 使用apply调用函数
实现函数 calllt,调用之后满足如下条件1.返回的结果为调用fn之后的结果2.fn的调用为calllt的第一个参数之后的全部参数 方法1 使用es6 function calllt(...para ...
- TD信息通(无课表)使用体验
首先,在注册账户的时候,TD信息通还是比较严谨的.用户名字符数.密码字符数.邮箱格式等都有要求,我认为,这对App的长远发展来说,是很重要的一个细节.而且,在登陆之前,会有一项关于是否自动登陆的选择, ...
- 19 01 17 Django 模板 返回一个页面
模板 问题 如何向请求者返回一个漂亮的页面呢? 肯定需要用到html.css,如果想要更炫的效果还要加入js,问题来了,这么一堆字段串全都写到视图中,作为HttpResponse()的参数吗?这样定义 ...
- 文献阅读 - MonoLoco与关于Camera Matrix的笔记
目录 概览 HighLights Camera Intrinsic Matrix 笔记 Intrinsic Matrix Task-Error - 不确定性任务下确界的计算 输出假设的Laplace分 ...
- 多线程进阶——JUC并发编程之CountDownLatch源码一探究竟
1.学习切入点 JDK的并发包中提供了几个非常有用的并发工具类. CountDownLatch. CyclicBarrier和 Semaphore工具类提供了一种并发流程控制的手段.本文将介绍Coun ...
- EOJ Monthly 2020.1 E. 数的变幻
题目链接:https://acm.ecnu.edu.cn/contest/247/problem/E/ 这道题是cf原题: Codeforces Round #608 (Div. 2) E. Comm ...
- 期末项目之 Json文件
Github上的json文件: https://raw.githubusercontent.com/color-me/first/master/b
- JavaScript 之 "for"的衍生对象
JavaScript for/in 语句 作用:for/in 语句用于遍历循环对象属性. 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作. 例子: 循环对象属性: var pers ...
- 传输层上的TCP和UDP
参考: 知乎 传输层概述 “三次握手,四次挥手”你真的懂吗? 传输层上的TCP和UDP TCP/IP协议是一个协议簇.里面包括很多协议的,UDP只是其中的一个, 之所以命名为TCP/IP协议,因为TC ...
- [转]java 的HashMap底层数据结构
java 的HashMap底层数据结构 HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在.在HashMap中,key-v ...