节选原文:http://www.cnblogs.com/jian-li/p/5666556.html
DBoW2应用
图像对应的bag-of-words向量 vt
假设词典总共有 W
个单词,那么每一幅图像能够用一个 W 维的向量表示(t1,t2,t3,...,tW) 其中
其中, 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
计算两个bag-of-word向量(两帧图像)1和v2的相似度
B.匹配聚类
为了防止时间上很近的关键帧之间相互竞争,将检索得到的时间戳相差比价小的帧聚成island并将它们看做一个匹配,一系列匹配可以转换成一个匹配
<vt,VTi>
。
C.Temporal consistency(时间一致性)
检测
VTi
D.有效的几何一致性
用RANSAC方法得到
It
使用直接索引近似最近邻(字典树中属于第l层的同一个节点, l 提前设定,是速度和recall的折中)具体做法为:
(1)往数据库中加入图像时,在直接索引中存储节点和一些特征的对;
(2)在得到图像间的对应点时,在直接索引中查找只有在第l层属于同一个节点的描述子,并进行比较。这个方法能够提高对应点计算,l是提前固定的是对应点数目和进行该操作的时间的折中。