目录
2.ORB-SLAM2与ORB-SLAM3的筛选候选关键帧的不同之处与原理解析
1.函数用处
在闭环及地图合并线程调用:
mpKeyFrameDB->DetectNBestCandidates(mpCurrentKF, vpLoopBowCand, vpMergeBowCand,3);
分别找到3个最好的候选帧,3个回环候选帧放在vpLoopBowCand中,3个融合候选帧放在vpMergeBowCand中。
函数的参数如下:
/** * @brief 找到N个融合候选N个回环候选 * * @param[in] pKF 当前关键帧(我们要寻找这个关键帧的回环候选帧和融合候选帧) * @param[out] vpLoopCand 记录找到的回环候选帧 * @param[out] vpMergeCand 记录找到的融合候选帧 * @param[in] nNumCandidates 期望的候选数目,即回环和候选分别应该有多少个 */ void KeyFrameDatabase::DetectNBestCandidates(KeyFrame *pKF, vector<KeyFrame *> &vpLoopCand, vector<KeyFrame *> &vpMergeCand, int nNumCandidates)
2.ORB-SLAM2与ORB-SLAM3的筛选候选关键帧的不同之处与原理解析
![]()
闭环和地图合并示意图 找到和当前关键帧
对应的最佳的3个回环候选帧和融合候选帧,统一称为
。
我们先回顾下ORB-SLAM2函数中如何做的,对应函数KeyFrameDatabase::DetectLoopCandidates(),如果想详细了解的话详见我的博客:ORB-SLAM2 --- KeyFrameDatabase::DetectLoopCandidates函数解析
https://blog.csdn.net/qq_41694024/article/details/128574571 阈值1:minCommonWords,最大共同单词的0.8倍。
阈值2:minScore,当前关键帧与它的共视关键帧的最低相似度。
阈值3:minScoreToRetain,统计符合上述条件的回环候选帧的共视关系最好的10帧中总相似度最高的组