- 回环检测
考虑到单目相机的尺度漂移,计算当前帧与候选闭环帧的Sim3变换,而不是T。(1)使用词袋加速算法,找到与当前帧具有足够多的相同单词的候选关键帧集,并初步计算Sim3变换。(2)将候选闭环帧中的路标点投影到当前帧中,通过优化的方法进一步计算Sim3。(3)将闭环帧及其共视帧的路标点投影至当前帧中进行匹配。(4)判断所选闭环帧是否可靠((3)步中获得的匹配数目大于40)。
A 候选帧的选取:
主要思路是:输入一张图片,从已有的图像数据库中找出一张图片与该图片相似度最高。首先将当前帧转化为词袋向量描述,然后将共视图中每个关键帧转化为词袋向量,计算他们之间的距离即分数,然后对分数进行排序,将最大距离即最小的分数设定为查找候选关键帧的阈值。
在除去共视图关键帧的关键帧数据库中,逐个将每个关键帧转为词袋向量描述,计算当前帧词袋向量与该关键帧词袋向量之间的距离。逐个距离与前面设置的阈值比较,只要分数距离少于该阈值或者说分数高于该值则标记为候选关键帧。这些候选关键帧里最相似的得分作为阈值,低于其0.8倍的候选关键帧去除掉。
然后计算每个候选关键帧对应共视图(共视度前10个)与当前帧词袋匹配分数的总和(就是共视图中每一帧词袋向量与当前帧词袋向量进行计算距离得出他们之间的分数,将分数求和),然后在候选关键帧组中取出最大分数设为阈值1,剔除掉分数小于阈值1*0.75的候选关键帧组。
最后每个候选关键帧组中选与当前帧最相似的作为真正的候选关键帧。
B连续性:
剩余的候选关键帧组取他连续的三张,与当前帧构成的连续三张进行一一进行几何验证并判断为回环则判断为一个回环。
闭环需要满足连续性。中间的是当前闭环候选帧,和它相连的子候选组。连续性是对于组而言的,继承上一组的数值并加1。
以上都是词袋模型,进行选择闭环候选帧。
2 . 闭环校正
闭环校正。计算了当前帧和闭环帧的Sim3变换后,去更新当前帧及其共视帧的位姿,以及路标点的坐标。其中涉及了地图点的融合,共视图的更新,本质图的优化。随后建立了一个全局BA优化线程,去优化所有的关键帧位姿及路标点坐标。
优化用的g2o。
认为当前关键帧和共视关键帧之间的位姿差是准确的,校正后的位姿是correctedsim3,校正前的noncorrectedsim3。
校正了位姿后,再校正地图点。
3 . SM3
为了解决单目尺度漂移问题,回环这里求取的SIM3。SIM3的求取方法,请查看如下博客:
ORB-SLAM2代码阅读笔记(十):sim3求解_sim3位姿-CSDN博客