ORB-SLAM2-闭环检测(LoopClosing)

ORB-SLAM2-闭环检测(LoopClosing)

随着相机的运动,我们计算的相机位姿,三角化得到的点云位置都是有误差的,即使我们使用局部的或全局的BA去优化仍然会存在累积误差。而消除误差最有效的办法是发现闭环,并根据闭环对所有结果进行优化。闭环是一个比BA更加强烈、更加准确的约束,所以如果能够检测到闭环,并对其优化,就可以让结果更加准确。

整个LoopClosing模块是在线程中完成,并在创建线程时调用LoopClosing::Run()函数让其运行。整个框架如下图所示:

ORB-SLAM2-闭环检测(LoopClosing)

一、Loop Candidates Detection

计算关键帧Ki和在Covisibility Graph中与其相邻的关键帧之间的词袋(BOW)之间的相似度。词袋作为对该关键帧的描述,将闭环检测转变为一个类似于模式识别的问题。当相机再次来到之前到过的场景时,就会因为看到相同的景物,而得到类似的词袋描述,从而检测到闭环。

ORB-SLAM2-闭环检测(LoopClosing)

Loop Closing线程

获取闭环候选帧的过程:

ORB-SLAM2-闭环检测(LoopClosing)

其中通过分组可以将单独得分很高的误匹配无关关键帧剔除

ORB-SLAM2-闭环检测(LoopClosing)

为了进一步保证候选帧的准确性,还需要对候选帧做一致性检查。

ORB-SLAM2-闭环检测(LoopClosing)


分享到:


相關文章: