1.处理新的关键帧
(关键帧特征点对应的词袋向量、对于当前关键帧有效地图点,更新平均观测方向,观测距离范围等,更新当前关键帧和她的共视关键帧的连接关系)
2.剔除不合格的地图点
条件一:跟踪到该地图点的帧数比预计可观测到的该地图点的帧数比例小于25%
条件二:从该点建立开始到现在已经超过了2个关键帧,但是观测到该点的相机数目小于阈值(单目2,双目/rgbd3)
3.生成新的地图点
共视关键帧之间重新进行特征匹配,三角化,生成新的地图点。
3.1 在当前关键帧的共视关键帧中找到共视程度最高的前n帧相邻关键帧。
3.2 遍历相邻关键帧,当前帧和相邻帧的基线要足够大。通过词袋对两个关键帧之间为匹配的特征点进行快速匹配,用极线约束抑制离群点,得到新的匹配点对。对匹配点对进行三角化,从而生成三维点。
3.3 生成的三维点必须满足在相机前方,重投影误差小,尺度范围合理。
3.4 确定是合格的三维点,将其构造为地图点,并添加观测关系和地图点的各种属性。
4.检查并融合当前关键帧与相邻帧的地图点
1.将当前帧地图点投影到一级二级共视关键帧
2.将一级二级共视关键帧地图点投影到当前帧
3.更新当前帧的地图点的描述子、深度、平均观测方向等属性
4.更新共视关系
5.关键帧的剔除
90%以上的地图点被其他至少3个关键帧观察到