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)很鲁棒 ...
随机推荐
- Tomcat JDK MySql 安装配置
Tomcat 7绿色版指定jdk并注册服务 https://blog.csdn.net/weixin_43976019/article/details/89386171 例如:service.b ...
- POJ - 2253 Frogger(最短路Dijkstra or flod)
题意:要从起点的石头跳到终点的石头,设The frog distance为从起点到终点的某一路径中两点间距离的最大值,问在从起点到终点的所有路径中The frog distance的最小值为多少. 分 ...
- 【LeetCode】最长连续序列
[问题]给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为 O(n). 示例: 输入: [, , , , , ] 输出: 解释: 最长连续序列是 [, , , ].它的长度为 ...
- package跨模块调用
module包 logger模块 def logger(): print("logger") # logger() main模块 from module import logger ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring中Bean的作用域
作用域的种类 Spring 容器在初始化一个 Bean 的实例时,同时会指定该实例的作用域.Spring3 为 Bean 定义了五种作用域,具体如下. 1)singleton 单例模式,使用 sing ...
- 渗透测试 - HPP数据污染 - 原理 | 场景
Web服务器 参数获取函数 获取到的参数 PHP/Apache $_GET(“par”) Last JSP/Tomcat Request.getParameter(“par”) ...
- 1.1 js中函数定义解析(学习笔记)
1.1.1函数的分类 函数声明式 :使用function声明函数,并指定函数名. 函数表达式:使用function声明函数,但未指定函数名. 函数表达式2.匿名函数,匿名函数有很多作用,赋予一个变量则 ...
- 题解 P1654 【OSU!】
题面 一序列\(a\), 对于每一个\(i\)均有\(a_i\)有\(p_i\)的几率为1, 否则为\(0\) 求: \(a\)中极长全\(1\)子序列长度三次方之和的期望 前置知识 基本期望(期望的 ...
- Codeforces 400C 矩阵乘法 数学规律
今天下午Virtual了一套最近的CF题,第三题给TLE了,就跑过去上课了. 这题给定一个由二进制表示的矩阵,当询问3的时候,求矩阵的值,矩阵的值是所有第i行乘以第i列的值的总和,然后还有1 b是翻转 ...
- centos 7 内存压测测试--memtester工具
1.下载memteste工具 官方:http://pyropus.ca/software/memtester/ wget http://pyropus.ca/software/memtester/ol ...