一、 ORB-SLAM2简介
1.什么是ORB
ORB 是
O
r
i
e
n
t
e
d
F
a
s
t
a
n
d
R
o
t
a
t
e
d
B
r
i
e
f
Oriented Fast and Rotated Brief
OrientedFastandRotatedBrief 的简称, ORB特征由关键点和描述子组成. 其中,关键点为改进后的FAST角点检测,关键点的描述子为BRIEF.
提取ORB特征需要如下两个步骤:
● FAST角点提取:相较于原版FAST,ORB中计算了特征点的主方向,并未后续的BRIEF描述子增加了旋转不变性
FAST简介:FAST 是
F
e
a
t
u
r
e
s
f
r
o
m
A
c
c
e
l
e
r
a
t
e
d
S
e
g
m
e
n
t
s
T
e
s
t
Features from Accelerated Segments Test
FeaturesfromAcceleratedSegmentsTest 的简称,可以快速选择关键点,算法步骤如下:
a、 在图像中选取像素点
p
p
p,假设其亮度为
I
p
Ip
Ip
b、 以 p p p为中点,选取半径为3的圆上的16个点
c、 设置一个阈值 T T T(如 I p Ip Ip的20%),判断 p p p点与周围的点的亮度,如有连续N个点的亮度大于 I p + T Ip+T Ip+T或小于 I p − T Ip-T Ip−T,那么 p p p点为特征点(常用的N的取值为12、9、11,他们被称为FAST-12 FAST-9 FAST-11)
d、 重复上述步骤,对每个像素执行相同的操作
● BRIEF描述子:对前一步提取出特征点的周围图像区域进行描述。ORB对BRIEF进行了一些改进,主要是指在BRIEF中使用了先前计算的方向信息
BRIEF 是一种二进制描述子,是 Binary Robust Independent Elementary Features 的简称,它的作用是根据一组关键点创建二元特征向量。二元特征向量又称为二元描述符,是仅包含 1 和 0 的特征向量。在 BRIEF中每个关键点由一个二元特征向量描述,该向量一般为 128-512 位的字符串,其中仅包含 1 和 0
2.为什么是SLAM2
ORB-SLAM由Ra´ul Mur-Artal and Juan D. Tard´os于2015年提出,这一框架仅适用于单目模式,然后,在2016年二人加入了双目和RGB-D模式并发表了ORB-SLAM2
3.ORB-SLAM2框架介绍
ORB-SLAM是PTAM继承者中非常有名的一位,是现代SLAM系统中做的非常完善、易用的系统之一。其代表着主流特征点SLAM的一个高峰,相比于之前的工作,ORB-SLAM具有以下几点明显的优势:
a、 支持单目、双目、RGB-D三种模式;
b、 整个系统都是围绕着ORB特征进行计算,包括视觉里程计和回环检测的ORB字典。它体现了ORB特征是现阶段计算平台的一种优秀的效率与精度之间的这种方式;
c、 回环检测是ORB-SLAM的一大亮点。优秀的回环检测算法可以有效的防止累积误差,并且在丢失之后还能迅速的找回;
d、 ORB-SLAM使用了三个线程完成框架
实时跟踪特征点的Tracking线程,其负责对每幅新增的图像进行ORB特征点提取,并与最近的关键帧进行比较,计算特征点的位置并粗略的估计相机的位姿。
局部BA优化线程Local Mapping(俗称 “小图” ),这一线程求解一个 BA 问题,它包括局部空间内的特征点与相机位姿,可求解更加精确的相机位姿与特征点的空间位置。
全局位姿图的回环检测与优化线程Loop Closing(俗称 “大图” ),对全局的地图鱼关键帧进行回环检测,消除累积误差。由于全局地图的地图点太多,所以这个线程的优化不包括地图点,只有相机位姿组成的位姿图。
ORB-SLAM2框架中英文对照图 :
二、配置所需
ORB-SLAM 的开源网址:http://webdiis.unizar.es/~raulmur/orbslam/
ORB-SLAM2-Binary:https://github.com/poine/ORB_SLAM2,可读取二进制字典,读取速度比.txt字典文件要快得多
ORB-SLAM For Windows 的源码:https://github.com/phdsky/ORBSLAM24Windows,这里有windows下配置ORB-SLAM所需的第三方库,包括:
Pangolin(一款开源的OpenGL显示库,可以用做视频显示,而且开发容易可以用于3D视觉和3D导航的视觉图,可以输入各种类型的视频、并且可以保留视频和输入数据用于debug)
DBoW2(BOW: Bag of Words,这是一个开源的C++库,用于给图像特征排序,并将图像转化成视觉词袋表示。它采用层级树状结构将相近的图像特征在物理存储上聚集在一起,创建一个视觉词典)
g2o(图优化)
Cmake,我的是3.16.2版本,下载网址:https://cmake.org/download/
Visual Studio, 我用的是Visual Studio 2019 版
Eigen,下载网址:http://eigen.tuxfamily.org/index.php?title=Main_Page,这个库我下载的最新的版本,不需要单独的编译,在用Cmake的时候要引用
OpenCV,我用的是 2.4.13 版本,特别要注意,OpenCV3.几的版本和最新的版本我都试过,都会报错,配置的时候最好是用2.几的版本,配置过程中最麻烦的地方之一也就是在试OpenCV版本上了
配置成功后的测试数据集网址也一并放在这吧,https://vision.in.tum.de/data/datasets/rgbd-dataset/download
未完待续…