DBoW2视觉词袋原理

节选原文:http://www.cnblogs.com/jian-li/p/5666556.html

DBoW2应用

图像对应的bag-of-words向量 vt

假设词典总共有 W

个单词,那么每一幅图像能够用一个 W 维的向量表示
t1,t2,t3,...,tW 其中
ti=nidnndlogNni

其中, nid 是单词i在当前帧图像中出现的次数, nd 是当前图像中所以单词的数目, ni 是词汇 i 在整个数据库中出现的次数, N 是为所有图像中描述子的数目, nidnnd 表示 tf logNni 表示 idf

,在建立视觉词袋的时候已经得到。

反向索引:描述词汇中的每一个单词在出现过的图像列表,能够加速查找具有相同词汇的图像。(用什么数据结构实现的?)存储一系列 <It,vit>

(其中 It 为图像的索引, vit

为该单词在图像中的权重)。查询数据库时只需要比较有相同词汇的图像,加速查找,也就是说搜索图像只需要(1)词袋和(2)反向索引
具体流程如下:提取当前帧的描述子,查询字典,得到单词,查找反向索引表,得到所有具有该单词的图像。

直接索引:(存储每一幅图像的特征)对于每一幅图像 It

,存储其使用的词汇的祖先节点(任何一层l)及每一个节点的局部特征 ftj
直接索引能够加快闭环检测的几何认证,因为只有具有相同的词汇或者在第l层有相同的祖先的关键帧才需要进行几何认证
直接索引存储每一个图像 It 中词汇的在第 l

层(预先给定的)的所在的节点已经所有该图像中属于该节点的描述子。

DBow2的作用:通过视觉词汇将一幅图像转换成稀疏的数字向量(能够对大量的图像进行处理)
视觉词汇是离线建立的,通过将描述子空间划分成W个视觉词汇。


基于DBoW2做闭环检测

A.查询数据库
通过数据库存储和检索相似的所有图像。步骤为:首先将图像图像转换成bag-of-words向量 vt

tfidf ,开头的公式),然后查找数据库中最相似的bag-of-words向量集, s(vt,vti) (多少个??)->正则化( s(vt,vtΔt )很小的情况单独考虑)为 η(vt,vtj)=s(vt,vtj)s(vt,vtΔt) ->舍弃小于阈值的匹配
计算两个bag-of-word向量(两帧图像)1和v2的相似度
s(v1,v2)=112|v1|v1|v2|v2||

B.匹配聚类
为了防止时间上很近的关键帧之间相互竞争,将检索得到的时间戳相差比价小的帧聚成island并将它们看做一个匹配,一系列匹配可以转换成一个匹配 <vt,VTi>

,island也根据评分排序,选择最高的。Island的得分为 H(vt,VTi)=mij=niη(vt,vtj)

C.Temporal consistency(时间一致性)
检测 VTi

和以前的查询结果 <vtΔt,VTj> Ti,Tj 时间一致性, <vt,VTi> 必须和k个以前的匹配查询结果 <vtΔt,VTj> 一致( k 个以前的匹配的island时间 Ti 接近重叠),一旦通过一致性检验,则选取island VTi 中得分最高的词汇 vt

D.有效的几何一致性
用RANSAC方法得到 It

It 的基础矩阵(至少12个对应点),查找对应的特征点(brute force和k-d tree方法)
使用直接索引近似最近邻(字典树中属于第l层的同一个节点, l 提前设定,是速度和recall的折中)具体做法为:
(1)往数据库中加入图像时,在直接索引中存储节点和一些特征的对;
(2)在得到图像间的对应点时,在直接索引中查找只有在第l层属于同一个节点的描述子,并进行比较。这个方法能够提高对应点计算,l是提前固定的是对应点数目和进行该操作的时间的折中。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值