几种关键帧选择方案
ORB-SLAM
插入关键帧的条件即是必须满足条件1以及满足2.1-2.3中任意一个条件。
必须满足的条件:
1. 内点数必须超过设定的最小阈值,并且重叠度不能太大;
原因:保证关键帧跟踪的质量,同时,避免引入过多的信息冗余。
三选一的条件:
2.1 距离上次插入关键帧已经过去MAX帧,MAX是ORB-SLAM2预设的最大值;
原因:防止过去太多帧,跟踪丢失。
2.2 距离上次插入关键帧至少过去MIN帧,且局部建图线程处于空闲状态,MIN是ORB-SLAM2预设的最小值;
原因:防止图像重叠度太高,并且局部建图线程有空闲处理新的关键帧。
2.3 局部建图线程中关键帧队列的关键帧数量不超过3个;
原因:主要也是考虑局部建图线程的处理能力,以及信息的冗余度问题吧。
VOLDOR-SLAM
使用可见性覆盖率(Visibility-Coverage)指标选择关键帧。
VC指标定义在已知姿态的帧$I_1,I_2$上,其中只有$I_1$可能具有深度图。VC指标低于设定阈值的第一帧将被选择为下一批的参考帧,而当前批次的参考帧和最新关键帧之间的VC指标低于设定阈值,讲当前批次的参考帧注册为关键帧。
$$
VC=\frac{2}{Visibility^{-1}+Coverage^{-1}}
$$
其中$Visibility$是$I_1$中投影到$I_2$内的深度像素比例;$Coverage$是$I_2$中图像区域被$I_1$中深度像素投影所覆盖的比例。
VINS-Mono
VINS-Mono有两个用于选择关键帧的条件,满足一个即可。
1. 与前一个关键帧的平均视差;
当前帧和最新关键帧之间跟踪特征的平均视差超过一定阈值,将当前帧帧视为新关键帧。由于平移和旋转都会导致视差,而纯旋转运动不能够对特征进行三角测量,所以在计算视差时vins-mono还使用陀螺仪测量的短期积分来补偿旋转。
2. 跟踪质量;
如果跟踪特征的数量低于某个阈值,将此帧视为新的关键帧,这样是为了避免完全丢失特征轨迹。
LSD-SLAM
如果相机距离现有地图太远,则会根据最近跟踪的图像创建一个新的关键帧。
对当前关键帧的相对距离和角度的加权组合进行阈值处理:
$$
dist(\xi_{ji}):=\xi_{ji}^T\mathrm{W}\xi_{ji}
$$
其中,$\mathrm{W}$是包含权重的对角矩阵,而$\xi_{ji}$是两帧之间的相似变换矩阵。
BAD SLAM
没有作严格的筛选,而是每10秒取一帧为关键帧。