//输入为当前帧
//返回和当前帧相似的一组关键帧
vector<KeyFrame*> KeyFrameDatabase::DetectRelocalizationCandidates(Frame *F)
{
list<KeyFrame*> lKFsSharingWords;//这个list用来存放和当前帧存在相同单词的关键帧
// Search all keyframes that share a word with current frame
{
unique_lock<mutex> lock(mMutex);
for(DBoW2::BowVector::const_iterator vit=F->mBowVec.begin(), vend=F->mBowVec.end(); vit != vend; vit++)//开始遍历当前帧的各个单词 逆向索引
{
list<KeyFrame*> &lKFs = mvInvertedFile[vit->first];
//找出包含本单词的所有关键帧
for(list<KeyFrame*>::iterator lit=lKFs.begin(), lend= lKFs.end(); lit!=lend; lit++)
{
KeyFrame* pKFi=*lit;
if(pKFi->mnRelocQuery!=F->mnId)
{
pKFi->mnRelocWords=0;
pKFi->mnRelocQuery=F->mnId;
ORB-SLAM2重定位算法之DetectRelocalizationCandidates(Frame *F)函数
最新推荐文章于 2024-07-28 12:15:00 发布