博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORB-SLAM(五)KeyFrameDataBase类
阅读量:7115 次
发布时间:2019-06-28

本文共 788 字,大约阅读时间需要 2 分钟。

关键帧数据库通过预先训练好的词典,维护一个向量std::vector<list<KeyFrame*> > mvInvertedFile; 该向量中mvInvertedFile[i]表示包含了第i个WordId的所有关键帧;

我们需要知道关键帧对应的vBowVec向量是一个map:

std::map
// WordId以及单词值,WordId是唯一的,和一个特征绑定
KeyFrameDatabase::KeyFrameDatabase (const ORBVocabulary &voc):    mpVoc(&voc){    mvInvertedFile.resize(voc.size()); // number of words}

该类的主要作用是在回环检测和重定位中,根据词袋模型的特征匹配度,找到闭环候选帧和重定位候选帧,两者之间的区别在于,需要参考关键帧去寻找闭环候选帧,而重定位则参考普通帧。

主要步骤是:

1. 找出与当前帧pKF有公共单词的所有关键帧pKFi,不包括与当前帧相连的关键帧;

2. 统计所有闭环候选帧中与pKF具有共同单词最多的单词数,只考虑共有单词数大于0.8*maxCommonWords以及匹配得分大于给定的minScore的关键帧,存入lScoreAndMatch;

3. 对于第二步中筛选出来的pKFi,每一个都要抽取出自身的共视(共享地图点最多的前10帧)关键帧分为一组,计算该组整体得分(与pKF比较的),记为bestAccScore;

所有组得分大于0.75*bestAccScore的,均当作闭环候选帧。

若想改变闭环检测候选帧的参数,根据场景鉴定闭环的阈值,可以在这里修改参数。

转载于:https://www.cnblogs.com/shang-slam/p/6421229.html

你可能感兴趣的文章
第十一周进度条
查看>>
从两个数组中查找相同的数字谈Hashtable
查看>>
shell问题-报错即退出
查看>>
Bug解决过程复盘
查看>>
JavaScript和HTML DOM的区别与联系
查看>>
行为型设计模式之模板方法(Template Method)
查看>>
C#收发邮件(Jmail+Professional+v4.4+特别版)
查看>>
T-SQL事务编写
查看>>
CGZip, a C++ wrapper for gzip methods
查看>>
将NavigationBar设置透明
查看>>
Go Revel - Results(响应)
查看>>
c# WinForm 边框阴影窗体
查看>>
主线程不能直接调用webservice方法
查看>>
Redis集群方案之使用豌豆荚Codis搭建(待实践)
查看>>
Universal USB Installer – Easy as 1 2 3
查看>>
假期小结 BIO, NIO, AIO
查看>>
Jvm(57),类加载器----初次认识加载器
查看>>
poj1053
查看>>
【关键帧提取】基于运动信息(续3)
查看>>
pygame学习笔记(1)——安装及矩形、圆型画图
查看>>