簡介
ORB-SLAM 和 Kintinuous 都使用 DBoW2 作爲迴環檢測算法,這裏對 DBoW2 算法做簡要介紹。
DBoW2 論文中使用的特徵檢測算法是 Fast keypoint,見論文 “Machine learning for high speed corner detection”
使用的特徵描述子是 Brief 描述子,見論文 “Brief: Binary robust independent elementary features”
Brief 描述子和 ElasticFusion 中使用的 Randomized Ferns 描述子不同的是,Brief 描述子在
如下:
其中
Randomized Ferns 迴環檢測算法介紹:
http://blog.csdn.net/fuxingyin/article/details/51436430
ORB-SLAM 中用的是 ORB 特徵描述子用 DBoW2 做迴環。
Kintinuous 中用的是 Surf 描述子用 DBoW2 做迴環。
Bag of Words 字典建立
1、從訓練圖像中離線抽取特徵
2、將抽取的特徵用 k-means++ 算法聚類,將描述子空間劃分成 k 類
3、將劃分的每個子空間,繼續利用 k-means++ 算法做聚類
4、按照上述循環,將描述子建立樹形結構,如下圖所示:
字典樹在建立過程中,每個葉子也就是每個 word 記錄了該 word 在所有的訓練圖像中出現的頻率,出現的頻率越高,表示這個 word 的區分度越小,頻率的計算公式如下:
在線更新字典樹
當在字典樹中需要插入一幅新圖像
其中
在樹構建的過程中每個葉子節點存儲了 inverse index,存儲了到達葉子節點的圖像
對於一幅圖像所有的描述子,做上述操作,可以得到每個 word 的值,將這些值構成圖像的描述向量
對兩幅圖像比較計算其相似度時,兩幅圖像相似度計算公式如下:
兩幅圖像越相似得分越高。
字典樹除了存儲了 inverse index,還存儲了 direct index 如上圖所示,direct index 方便兩幅圖像特徵搜索,建立特徵之間的對應,計算兩幀之間的位姿轉換。
Database query
由於在計算相似度時,相似度的大小和字典樹、圖像等有一定關係,這裏採用歸一化的方式,消除這兩種因素的影響:
歸一化相似度計算公式如下:
其中
當
Matching group
假設圖像
Temporal consistency
假設圖像
Efficient geometrical consistency
1、對於一幅新圖像
inverse index 加快待比較的圖像搜索速度
由於 inverse index 存儲了哪些圖像也到達該葉子節點,在選擇待比較的圖像時,只需要比較到達相同葉子節點的圖像,不需要和存儲的每幅進行比較,從而加快比較速度。
direct index 加快特徵比較速度
假設圖像
參考文獻:
“Real-Time Loop Detection with Bags of Binary Words”
“Bags of Binary Words for Fast Place Recognition in Image Sequences”
“Brief: Binary robust independent elementary features”
“Machine learning for high speed corner detection”