直接法和特征点法都有哪些优缺点?
直接法最大的贡献在于,以更整体、更优雅的方式处理了数据关联问题。特征点法需要依赖重复性较强的特征提取器,以及正确的特征匹配,才能得正确地计算相机运动。而直接法,则并不要求一一对应的匹配,只要先前的点在当前图像当中具有合理的投影残差,我们就认为这次投影是成功的。而成功与否,主要取决于我们对地图点深度以及相机位姿的判断,并不在于图像局部看起来是什么样子。
优势:
- 相比特征点法(只使用了特征点周围的信息)使用了图像中全部的信息(半直接法只用了边缘梯度)
- 节省特征提取与匹配的大量时间,易于移植到嵌入式系统中,以及与IMU进行融合;
- 使用的是像素梯度而不必是角点,可以在特征缺失的场合使用,如环境中存在许多重复纹理或是缺乏角点,但出现许多边缘或光线变量不明显区域;
- 可以进行稠密或半稠密的地图重建;
劣势:
- 一般对相机要求较高,需要全局快门相机,进行光度标定等
- 灰度不变是一个强假设,难以满足(易受曝光和模糊影像);
- 单像素区没有区分度,需要计算图像块或是相关性;
- 直接法成功的前提,是目标函数从初始值到最优值之间一直是下降的,然而图像非凸。因此需要有一个相当不错的初始估计,还需要一个质量较好的图像;
- 难以实现地图复用、回环检测、丢失后的重定位等:除非存储所有的关键帧图像,否则很难利用先前建好的地图;即使有办法存储所有关键帧的图像,那么在重用地图时,我们还需要对位姿有一个比较准确的初始估计——这通常是困难的。
数据关联和位姿估计,在直接法中是耦合的,而在特征点法中则是解耦的。耦合的好处,在于能够更整体性地处理数据关联;而解耦的好处,在于能够在位姿不确定的情况下,仅利用图像信息去解数据关联问题。所以直接法理应更擅长求解连续图像的定位,而特征点法则更适合回环检测与重定位。此外,稀疏直接法更适用于实时性较高而计算资源有限的场合。