Back to Mvision

DBoW2特征词带

vSLAM/oRB_SLAM2/DBoW2特征词带.md

latest1.3 KB
Original Source

DBoW2特征词带

DBoW2是一个对大量训练图像使用fast关键点+BRIEF描述子的方法提取特征,
再将大量特征做K-mean++聚类形成一棵词典树的模型。
词典离线建立好之后,在实际应用过程之中,
将每一幅待处理图像提取特征与词典树中的描述子相比较得到一些索引,
从而可以提高搜索相似图像和得到图像之间特征匹配的效率。

代码分析

class BowVector: public std::map<WordId, WordValue>
// stl的map结构,key为wordId,value为 tfidf 中的tf

聚类

// 1. 从输入的数据点集合中随机选择一个点作为第一个聚类中心
// 2. 对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)并保存在一个数组里,
//    然后把这些距离加起来得到Sum(D(x))。
// 3. 选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大
//    实际做法:取一个0~Sum(D(x))之间的随机值Random,计算Sum(D(0),D(1)...D(j))>=Random,第j个点为种子点
// 4. 重复2和3直到k个聚类中心被选出来
// 5. 利用这k个初始的聚类中心来运行标准的k-means算法