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)很鲁棒 ...
随机推荐
- 使用jackson转换类型时报Unrecognized field
调用 objectMapper.convertValue(obj, valueType ); 时报错 原因 obj 的属性多于 valueType 导致,添加一条语句即可 objectMapper.c ...
- 【剑指Offer】面试题18. 删除链表的节点
题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点. 返回删除后的链表的头节点. 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5 ...
- UVA - 1213 Sum of Different Primes (不同素数之和)(dp)
题意:选择k个质数,使它们的和等于n,问有多少种方案. 分析:dp[i][j],选择j个质数,使它们的和等于i的方法数. #pragma comment(linker, "/STACK:10 ...
- oracle 的存储过程
-----推荐视频 https://ke.qq.com/webcourse/index.html#course_id=292495&term_id=100346599&taid= ...
- 大数据高可用集群环境安装与配置(08)——安装Ganglia监控集群
1. 安装依赖包和软件 在所有服务器上输入命令进行安装操作 yum install epel-release -y yum install ganglia-web ganglia-gmetad gan ...
- linux 批量kill php进程
一.执行以下命令 ps -ef|grep php|grep -v grep|cut -c 9-15|xargs kill -9 管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右 ...
- CTF-域渗透--靶场夺旗
开门见山 1. 扫描靶场ip 192.168.1.106 2. 扫描靶场开放端口 3. 扫描靶场全部信息 4. 探测靶场敏感信息 5. 对一些特殊的端口进行nc探测 6. 为了绕过对应命令执行限制,可 ...
- Spring Boot without the web server
https://stackoverflow.com/questions/26105061/spring-boot-without-the-web-server/28565277 1. spring.m ...
- Flink与Spark Streaming在与kafka结合的区别!
本文主要是想聊聊flink与kafka结合.当然,单纯的介绍flink与kafka的结合呢,比较单调,也没有可对比性,所以的准备顺便帮大家简单回顾一下Spark Streaming与kafka的结合. ...
- Excel----考勤表制作自动更新日期
起初效果 1. 我们首先输入年月日,如图 选择日期 按`ctrl+1` 来调出下图: 2. 数据填充 3.设置星期 点击1下面的单元格