ORB-SLAM的概念(零基础搞懂)

首先写ORB中的概念

一、前端提取

包括像素点选取和匹配两部分:

1.像素点选取:主要是ORB特征,看看这篇文章就够了:https://blog.csdn.net/maweifei/article/details/62887831   ORB主要有两个概念,角点,还有就是Moment,Moment类似于重心的概念用来表示特征点的方向,在旋转能快速Match。另外特征点确定好后用BREAF确定来描述,BREAF在特征点周围使用两维高斯分布乘以图像像素值。实际就是BREAF和Moment来综合描述。           像素点选取好后,一般通过跟踪的方法加速图像间特征点选取。     ORB特征匹配,主要是像素点相似性的计算。ORB特征匹配。                                                                                              

很显然,基于特征点的目标跟踪算法和1),2)两个步骤有关。特征点可以是Harris角点(见我的另外一篇博文),也可以是边缘点等等,而估计下一帧位置的方法也有不少,比如这里要讲的光流法。

对于双目相机,因为两个摄像机距离已知,利用两个摄像机的图像可完成特征点深度测量。对于单目摄像机来说,一般需用IMU来配合检测摄像机移距离,实现两幅图像中像素的三角测量;或者摄像机外参数固定,在特殊场景下,也能完成测量。

2.像素点匹配:

主要是BREAF等编码,也能按照SIFT编码,主要是寻找特征点周围的梯度信息,按照顺时针或者逆时针对梯度进行编码,Difference最大的区域一般选为主方向。可能存在多个主方向。图像相似度用海明距离计算,也能参考协方差概念。

包括RANSAC过滤误差较大的点。

二、后端优化

主要是摄像头位姿改变,外参的校准和三维点云更新。

建图过程中摄像机位置总是改变,因此求出三维点的坐标不能直接使用,还要乘以旋转矩阵和平移矩阵。

可以用卡尔曼滤波法,对移动进行观测和估计,现代方法都是用ICP/PNP提供初始解。

然后使用图优化G2O进行进一步优化,

Ceres,BA,包括增量BA,完成多副图像中的特征点形成三维位置更新和摄像机位置重置。

三、闭环检测

图像回到原点可能出现摄像机位置不一致的情况。这个时候就要使用CloseLoop矫正,一般是使用词袋DWOB评估图像和之前图像(N帧之前)的相似度,这里一般是和KeyFrame图像比较。矫正的方案的基础是大回环,多个关键帧都相似才优化。

你可能感兴趣的:(ORB-SLAM的概念(零基础搞懂))