DBoW2视觉词袋原理

来源:互联网 发布:单片机仿真软件程序 编辑:程序博客网 时间:2024/05/17 03:50

节选原文: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表示tflogNni表示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接近重叠),一旦通过一致性检验,则选取islandVTi中得分最高的词汇vt

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

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


原创粉丝点击