DBoW2 迴環檢測/重定位 算法解析

簡介

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 描述子在 p 點周圍選取兩個點做比較,將比較的結果作爲描述子的編碼,
如下:

其中 xiyi 是隨機選取的服從 normal distribution 的兩像素座標,
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 的區分度越小,頻率的計算公式如下:

idf(i)=logNni

在線更新字典樹

當在字典樹中需要插入一幅新圖像 It ,在圖像中提取的特徵描述子按照 Hamming 距離從字典樹的根部節點開始逐級向下到達葉子節點,可以計算每個葉子節點也就是每個 word 在圖像 It 中的出現頻率:

tf(i,It)=niItnIt
其中 niIt 表示 word 在圖像中出現的次數
nIt 表示圖像中描述子的總數

在樹構建的過程中每個葉子節點存儲了 inverse index,存儲了到達葉子節點的圖像 It 的 ID 和 word 在圖像 It 描述 vector 中第 i 維的值:
vit=tf(i,It)×idf(i)

對於一幅圖像所有的描述子,做上述操作,可以得到每個 word 的值,將這些值構成圖像的描述向量 vt

對兩幅圖像比較計算其相似度時,兩幅圖像相似度計算公式如下:
s(v1, v2)=112|v1|v1|v2|v2||
兩幅圖像越相似得分越高。

字典樹除了存儲了 inverse index,還存儲了 direct index 如上圖所示,direct index 方便兩幅圖像特徵搜索,建立特徵之間的對應,計算兩幀之間的位姿轉換。

Database query

由於在計算相似度時,相似度的大小和字典樹、圖像等有一定關係,這裏採用歸一化的方式,消除這兩種因素的影響:
歸一化相似度計算公式如下:

η(vt,vtj)=s(vt,vtj)s(vt,vtΔt)

其中 vtΔt 表示上一幀圖像,上式含義是上一幀圖像和當前幀圖像是最爲相似度的,用和上一幀圖像計算的相似度來歸一化和字典樹中圖像計算的相似度。

s(vt,vtΔt) 較小時(機器人做旋轉時),會把總體的得分拉的很高,論文裏面剔除這種因素,選取閾值 α ,當前幀和上一幀圖像相似度小於 α 時不做迴環檢測。

Matching group

假設圖像 vt 和圖像 vni 相似度很大,那麼和圖像 vni 周圍的圖像也會有很高的相似度,這裏將相鄰的得分都很高的圖像 group 在一起構成 island,得分是 group 中圖像得分的總和。

Temporal consistency

假設圖像 vt 和 island Vt1 之間相似度很大,那麼圖像 vtkΔtVtk 像素度也應該很大(k 小於 一定值),相當於兩串圖像間會有 overlap,利用這個條件作爲 consistency 的約束。

Efficient geometrical consistency

1、對於一幅新圖像 Ii ,用字典樹建立對圖像的描述,並且計算和字典樹中以前存儲的圖像之間的得分。

inverse index 加快待比較的圖像搜索速度
由於 inverse index 存儲了哪些圖像也到達該葉子節點,在選擇待比較的圖像時,只需要比較到達相同葉子節點的圖像,不需要和存儲的每幅進行比較,從而加快比較速度。

direct index 加快特徵比較速度
假設圖像 IiIj 得分最高,在兩幅圖像特徵匹配時,只需要比較 direct index 中屬於同一個 node 的圖像特徵,node 指字典樹的一層,如果是葉子節點層,那麼選擇是同一個 word 的特徵做匹配。

參考文獻:
“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”

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章