点击上方“计算机视觉工坊”,选择“星标”
干货第一时间送达
想要理解ORB-SLAM3的地图管理,仅看ORB-SLAM3的论文[3]是不够的,因为很多细节出现在之前的ORB-SLAM1/2[1][2],以及ORB-Atlas[4]这几篇论文中。从头到尾搞清楚这些论文中采用的地图管理方法,就能理解ORB-SLAM3中的内容。本文介绍这几篇论文中涉及地图的部分,并不介绍特征跟踪、关键帧创建等内容。作者能力有限,在整理时难免出现疏漏,望读者以原论文为准。
一、ORB-SLAM1
首先介绍ORB-SLAM1中的一些基本概念。
1.基本概念
·共视图 Covisibility Graph:
共视图是一个加权无向图,图中每个节点是相机的位姿,如果两个位姿的关键帧拍摄到的相同关键点的数量达到一定值(论文设定为至少15个),则认为两个关键帧具有共视关系。此时两个节点之间便生成了一条边,边的权重与共视点的数量有关。
·生成树 Spanning Tree:
Spanning Tree用最少的边连接了所有的关键帧节点(即共视图中所有的节点)。当一个关键帧被加入到共视图当中后,这个关键帧与共视图中具有最多观测点的关键帧之间建立一个边,完成Spanning Tree的增长。
·Essential Graph:
根据共视关系得到的共视图是一个连接关系非常稠密的图,即节点之间有较多的边,而这过于稠密而不利于实时的优化。于是构建了Essential Graph,在保证连接关系的前提下尽可能减少节点之间的边。Essential Graph中的节点依旧是全部的关键帧对应的位姿,连接的边包含三种边:Spanning Tree的边、共视图中共视关系强(共视点数量超过100)的边、以及回环时形成的边。
2.具体的使用
·利用局部地图进行跟踪
相机跟踪时利用了局部地图。具体来说,先从所有关键帧中选择与当前帧有相同特征点的关键帧集合,之后提取中每一个关键帧的共视帧的集合,之后利用两个集合的关键帧的信息进行相机位姿的跟踪