与现有方法的异同
特征点SLAM中的数据关联
先回忆一下特征点SLAM中,我们是如何处理数据关联的。下面以ORBSLAM为例。
在初始化部分,我们通过特征描述子的相似性,建立两帧之间的特征点关联,然后通过RANSAC框架下的姿态估计算法得到初始的R和t,重建和优化三维点的位置。
在追踪部分,我们首先会关联当前帧和上一帧。通过预估的姿态和三维点的深度范围,初步确定每个三维点在当前帧上的搜索范围,并依靠特征描述子的相似性建立关联关系。由于这样建立的关联关系中存在部分误匹配,因此在姿态估计等后续算法中需要RANSAC框架。
在重定位部分,我们通过特征描述子的相似性建立当前帧和候选帧之间的特征点关联,在RANSAC框架下利用P4P尝试求解并优化相对姿态。
回环检测部分和重定位部分类似,只不过求解的是Sim3姿态。
可以看出,ORBSLAM中的数据关联是一对多的,即一个landmark对应于一组观测值,每个观测值只对应于一个landmark。特征点SLAM是先做数据关联,再求解和优化姿态。由于错误的数据关联会影响姿态估计准确性,因此上述算法中大量调用RANSAC框架。
直接法SLAM中的数据关联
直接法的数据关联方法和特征点法有明显的区别。以DSO为例,在初始化部分,直接法通过极线搜索光度误差最小的点,并计算逆度和方差。在追踪部分,数据关联和姿态优化是融合一体的。这里没有显式的对应点的概念。而是根据深度和姿态的变化,图像上的对应点一直在变化,通过最小化光度误差来求解姿态和深度。直接法暂时没有重定位和回环检测部分。
在优化时,DSO用鲁棒的核函数来降低局外点的影响,并通过一些规则去除错误的数据关联。
基于概率的数据关联
基于概率的数据关联和上述两种有区别也有联系。
对于一个landmark和一幅图像,特征点SLAM是一对一的,直接法是一对多的(一个由深度及其方差决定的区域),概率关联是多对多的。
图像中的检测出的目标物体有固定的位置,是离散的,在这方面更像特征点。但由于图像中的目标(10个左右)并不如特征点那样丰富(1000个左右),错误的匹配不方便通过RANSAC算法来排除(样本不足)。
基于概率的数据关联会充分考虑到一个物体对应于多个检测结果的情形,这点和直接法的数据关联又有点像,其关联关系并不固定。