ORB-SLAM2第三节---地图点、关键帧、图结构

1.地图点

1.1地图点的成员变量

 平均观测方向向量:同一个地图点可能同时被多帧观察到,所以把每个能观测到该地图点的帧所在的光心和该地图点连成一个向量并归一化为单位向量,然后将所有归一化向量累加并求平均。

最大距离、最小距离:

  1. 计算参考关键帧相机光心到地图点的距离dist。
  2. 观测到该地图点的参考帧对应的特征点在金字塔中的层级数level。
  3. 计算上一步中层级数对应的尺度因子scale^level。其中,代码中scale=1.2,金字塔总层级数n=8,level的范围是0~7.
  4. 最大距离为dist*scale^level,最小距离为dist*scale^level+1-n

最具代表性描述子:

  1.  获取该地图点所有有效的观测关键帧及对应特征点的索引。
  2. 遍历观测到该地图点的所有关键帧,把对应的特征描述子都放在一个向量中。
  3. 计算所有描述子之间的两两距离,找到和其他描述子都具有最小距离中值的描述子,将其作为最具代表性描述子。

1.2新增地图点 

  1. 恒速模型跟踪中新增地图点,双目和RGBD相机,找出上一帧中具有有效深度值且不是地图点的特征点,将其中较近的点作为上一帧新的临时地图点。当完成第二阶段跟踪后,清除这些临时地图点。
  2. 第二阶段结束后,新建关键帧时,双目或RGBD相机,找出当前帧中具有有效深度且不是地图点的特征点,将其中较近的点作为当前帧的新的地图点。这里是真正的地图点!!!
  3. 局部建图中,当前关键帧与相邻关键帧通过三角化生成新的地图点。

1.3地图点的融合 

  1.  局部建图线程中,将当前关键帧的一级二级相连的关键帧对应的所有地图点投影到当前关键帧中,如果投影的地图点能匹配当前关键帧的特征点,并且该特征点有对应的地图点,那么选择这两个地图点中被观测数目最多的那个来替换两个地图点。
  2. 闭环线程中,当前关键帧闭环匹配上的关键帧及其共视关键帧组成的所有地图点投影到当前关键帧中,然后执行上述地图点融合操作。

2.关键帧 

2.1关键帧作用 

  1.  降低信息冗余度。
  2. 降低计算负担,减少误差累积。
  3. 保证图像帧的质量。

2.2如何选择关键帧 

  1. 距离上一关键帧的帧数是否足够多(时间)。
  2. 距离最近关键帧的距离是否足够远(空间)。
  3. 跟踪局部地图质量(共视特征点数目)。

 2.3关键帧的插入

 不需要插入关键帧的情况:

  1. 仅定位跟踪模式下不需要插入关键帧。
  2. 局部建图线程正在被闭环线程使用。
  3. 距离上一次重定位比较近(1s以内)。
  4. 地图中关键帧数目已经超过最大限制。

需要插入关键帧的情况:

  1. 条件1:a距离上次插入超过1s。 b满足插入关键帧的最小间隔,并且局部建图线程处于空闲状态。 c在双目或者RGBD相机模式下,当前跟踪到的点比参考关键帧跟踪到的点不足1/4,或者跟踪到的近点太少且没有跟踪到的近点较多,两者满足其一即可。(条件1的abc只要有一个满足即可
  2.  条件2:a和参考帧比,当前跟踪到的点数目太少。 b满足近点条件,同1c。 c成功跟踪到的匹配内点数目大于15。(a||b)&&c
  3. 条件1、2同时成立。如果局部建图线程空闲,则插入关键帧,如果繁忙,则通知中断局部线程中的BA,如果是单目,则先不插入关键帧。双目或者RGBD相机,并且局部建图线程中待处理的关键帧少于3,则插入关键帧,否则不插入。

2.4更新关键帧之间的共视关系 

  1. 获得该关键帧的所有地图点,通过地图点被关键帧观测来间接统计关键帧之间的共视关系(权重) 。
  2. 建立共视关系需要大于或等于15个共视地图点,如果不足,则只建立权重最大的。
  3. 根据共视关系的从大到小对所有共视关键帧进行排列。
  4. 更新关键帧的父子关系。初始化当前关键帧的父关键帧为共视程度最高的关键帧。

2.5删除关键帧 

  1.  清除和该关键帧相连关键帧的联系。
  2. 清除该关键帧观测到的地图点的联系。
  3. 需要为该关键帧的子关键帧重新寻找合适的父关键帧。

3.图 

3.1共视图 

顶点是关键帧,关键帧中有共视关系则加边,边的权重就是共视地图点的数量

作用:

  1. 在跟踪线程:通过共视图构建当前帧的局部地图,增加投影匹配的地图点,增加匹配对   在
  2. 局部建图线程:用当前关键帧和相邻的共视关键帧通过三角化获得更多的地图点。  
  3. 闭环线程:多次使用共视关系建立共视关键帧组,保证闭环候选关键帧足够可靠。 

3.2本质图 

只保留联系紧密地边

本质图优化只优化所有关键帧的位资,而BA优化优化所有关键帧的位姿及地图点(闭环矫正环节,位子图优化的方法来将闭环时的误差沿着位姿图进行分摊) 

3.3生成树

由关键帧和夫关键帧构成---更新关键帧之间的父子关系。 

你可能感兴趣的:(机器学习,人工智能)