完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
什么是回环检测? 在讲解回环检测前,我们先来了解下回环的概念。在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿解算当前帧位姿,因此其中的误差便这样一帧一帧的传递下去,也就是我们所说的累计误差。 我们的位姿约束都是与上一帧建立的,第五帧的位姿误差中便已经积累了前面四个约束中的误差。但如果我们发现第五帧位姿不一定要由第四帧推出来,还可以由第二帧推算出来,显然这样计算误差会小很多,因为只存在两个约束的误差了。像这样与之前的某一帧建立位姿约束关系就叫做回环。回环通过减少约束数,起到了减小累计误差的作用。 那么我们怎么知道可以由第二帧推算第五帧位姿呢?也许第一帧、第三帧也可以呢。确实,我们之所以用前一帧递推下一帧位姿,因为这两帧足够近,肯定可以建立两帧的约束,但是距离较远的两帧就不一定可以建立这样的约束关系了。找出可以建立这种位姿约束的历史帧,就是回环检测。 回环检测的意义 有了前端的视觉里程计及后端优化的SLAM系统,似乎已经比较好用了。但其在提高实时性的同时精度却降低了,一旦精度降低,又会面临长时间累计误差的问题,特别是像ORB-SLAM那样只做局部地图优化的方案。我们该如何平衡这个矛盾呢? 我们不妨先思考下,在一个陌生的环境中,我们人类是如何进行环境地图的建立?在局部区域,人不断的移动从而在脑海中建造增量式地图,时间长了大部分人也分不清东南西北了,与起始点的关系又如何。假如人正巧回到了之前路过的位置,在对环境足够敏感的情况下,他就能发现这个事实,从而修正自己之前对方位的判断。我们说,此时检测到了一个回环,显然,人可以通过面前看到的景象与脑海中残缺的印象来对比从而检测到回环的,对于SLAM来说也可以通过对比当前帧与过去关键帧的相似度,如相似度超过某一阀值时就可以被认为是检测到回环。 现在,问题的关键就在于如何判断两帧图片的相似度。最直观的做法是特征匹配,比较匹配的数量是否足够多。但由于特征匹配非常耗时,回环检测需要与过去所有关键帧匹配,这个运算量是绝对无法承受的。因此,有人提出了词袋模型,用来加速特征匹配。 什么是词袋模型呢? 词袋模型就是把特征看成是一个个单词,通过比较两张图片中单词的一致性,来判断两张图片是否属于同一场景。 为了能够把特征归类为单词,我们需要训练一个字典。所谓的字典就是包含了所有可能的单词的集合,为了提高通用性,需要使用海量的数据训练。 字典的训练其实是一个聚类的过程。假设所有图片中共提取了10,000,000个特征,可以使用K-means方法把它们聚成100,000个单词。但是,如果只是用这100,000个单词来匹配的话效率还是太低,因为每个特征需要比较100,000次才能找到自己对应的单词。为了提高效率,字典在训练的过程中构建了一个k个分支,深度为d的树,如下图所示。直观上看,上层结点提供了粗分类,下层结点提供了细分类,直到叶子结点。利用这个树,就可以将时间复杂度降低到对数级别,大大加速了特征匹配。 使用DBoW3库训练及使用词典 DBoW3库为我们提供了非常方便的训练词典和使用词典的方法。 训练词典时,只需要把所有训练用的图片的描述符传给DBoW3::Vocabulary的create方法就可以了。训练好的词袋模型保存在vocabulary.yml.gz文件中。 |
|
|
|
只有小组成员才能发言,加入小组>>
5476 浏览 0 评论
11738 浏览 9 评论
4837 浏览 1 评论
14099 浏览 0 评论
14381 浏览 0 评论
FRSE 2023 | 机器人与软件工程前沿国际会议诚征优秀稿件
3124浏览 0评论
哪位大哥有库卡KUKA.EtherNetIP MS(2.X版本)软件包?
4444浏览 0评论
如果设计一款桌面款的机器玩具,最吸引人的外观与功能要有哪些?
1700浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-9 09:37 , Processed in 0.418232 second(s), Total 44, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号