高翔视觉slam十四讲 pdf_详解 | SLAM回环检测问题

本文详细介绍了视觉SLAM中的回环检测问题,通过词袋模型简化两帧间的匹配,减少计算量。词袋模型通过K-means聚类构建字典,并使用TF-IDF权重计算图像的相似度。回环检测通过比较描述子向量差异和使用Sim3变换校正位姿误差,实现累积误差的减小。文章还涉及回环检测的后续处理,如位姿传播和全局优化。
摘要由CSDN通过智能技术生成

点击“计算机视觉life”关注,置顶更快接收消息!

本文经知乎作者fishmarch授权转载,二次转载请联系作者

原文:https://zhuanlan.zhihu.com/p/45573552

在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿解算当前帧位姿,因此其中的误差便这样一帧一帧的传递下去,也就是我们所说的累积误差。

如下图所示,我们的位姿约束都是与上一帧建立的,第五帧的位姿误差中便已经积累了前面四个约束中的误差。

e702b47c08f6293d017a31547850999f.png

但此时,如果我们发现第五帧位姿不一定要由第四帧推出来,还可以由第二帧推算出来,那显然这样计算误差更小呀,因为只有两个约束的误差了嘛。像这样与之前的某一帧建立位姿约束关系就叫做回环。回环通过减少了约束数,起到了减小累积误差的作用。

ea6471867f697714ef654c3a1b7f882b.png

那现在又有新的问题了,我们怎么知道可以由第二帧推算第五帧位姿呢?就像下图,可能第一帧、第三帧也可以呀。确实,我们之所以用前一帧递推下一帧位姿,因为这两帧足够近,肯定可以建立两帧的约束,但是距离较远的两帧就不一定可以建立这样的约束关系了。找出可以建立这种位姿约束的历史帧,就是回环检测

622b343585dec47c7e7f4ed4a6ef1657.png

那我们现在的重点就是回环检测了。其实我们完全可以把以前的所有帧都拿过来和当前帧做匹配,匹配足够好的就是回环嘛,但问题是计算量太大了,两帧匹配本来就慢,这样做的话还没有比较好的初值,需要匹配的数目又如此巨大,CPU和我们都会疯的。

但其实,任意两帧是否构成回环可以由更简单的方法做一个初步的筛选,就像一帧中有一个房子,另一帧中是一棵树,那这两帧明显关系不大嘛。通过这种方式,我们便可以对回环做出初步筛选。而这里说的房子、树就是词袋模型中的单词。也就是描述子的进一步抽象集合。

词袋模型

单词:差距较小的描述子的集合

字典:所有的单词

因此每一帧都可以用单词来描述,也就是这一帧中有哪些单词,这里只关心了有没有,而不必关心具体在哪里。只有两帧中单词种类相近才可能构成回环。

因此,现在利用词袋模型我们将回环检测大致分为了以下三个步骤:

  1. 构建字典(所有单词的集合)5047a892-f430-eb11-8da9-e4434bdf6706.other

  2. 确定一帧中具有哪些单词,用向量表示 (1表示具有该单词,0表示没有)5147a892-f430-eb11-8da9-e4434bdf6706.other

  3. 比较两帧描述向量的差异

字典结构

字典由单词组成,而单词来自于描述子。并不是说一个描述子就是一个单词,而是一个单词表示了一组多个描述子,同组内的描述子差异较小。例如,描述子由256位组成,则描述子的种类便有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值