視覺 SLAM 主要分為視覺前端和優(yōu)化后端。
前端也稱為視覺里程計(VO)。
VO 的實現(xiàn)方法,按是否需要提取特征,分為特征點法的前端以及不提特征的直接法前端。
基于特征點法的前端,長久以來被認為是視覺里程計的主流方法。
本文,我們將從特征點法入手,學習如何提取、匹配圖像特征點。
01
特征點
VO 的主要問題是如何根據(jù)圖像來估計相機運動。
我們習慣從圖像中選取比較有代表性的點,然后,在此基礎上,討論相機位姿估計問題,以及這些點的定位問題。
在經(jīng)典 SLAM 模型中,把它們稱為路標,而在視覺 SLAM 中,路標則是指圖像特征(Features)。
特征是圖像信息的另一種數(shù)字表達形式。
特征點是圖像里一些特別的地方,我們可以把圖像中的角點、邊緣和區(qū)塊作為圖像特征的部分。
特征點由關鍵點(Key-point)和描述子(Descriptor)兩部分組成。
當我們談論 SIFT 特征時,是指 “提取 SIFT 關鍵點,并計算 SIFT 描述子” 兩件事情。
關鍵點是指該特征點在圖像里的位置,有些特征點還具有朝向、大小等信息。
描述子通常是一個向量,按照某種人為設計的方式,描述了該關鍵點周圍像素的信息。
描述子是按照 “外觀相似的特征應該有相似的描述子” 的原則設計的。
因此,只要兩個特征點的描述子在向量空間上的距離相近,就可以認為它們是同樣的特征點。
在目前的 SLAM 方案中,ORB(Oriented FAST and Rotated BRIEF)特征是非常具有代表性的實時圖像特征。
它在保持特征子具有旋轉,尺度不變性的同時,還會使整個圖像特征提取的環(huán)節(jié)大大加速,對于實時性要求很高的 SLAM 來說是一個很好的選擇。
因此,我們以 ORB 特征為代表,介紹提取特征的過程。
02
ORB 特征
ORB 特征亦由關鍵點和描述子兩部分組成。
它的關鍵點稱為 “Oriented FAST”,是一種改進的FAST 角點;它的描述子稱為 BRIEF。
因此,提取 ORB 特征分為兩個步驟:
1. FAST 角點提取:找出圖像中的 “角點”。相較于原版的 FAST,ORB 中計算了特征點的主方向,為后續(xù)的 BRIEF 描述子增加了旋轉不變特性。
2. BRIEF 描述子:對前一步提取出特征點的周圍圖像區(qū)域進行描述。
下面我們分別介紹FAST 和BRIEF。
FAST 關鍵點
FAST 是一種角點,主要檢測局部像素灰度變化明顯的地方,以速度快著稱。
它的思想是:如果一個像素與它鄰域的像素差別較大(過亮或過暗),那它更可能是角點。
相比于其他角點檢測算法,F(xiàn)AST 只需比較像素亮度的大小,十分快捷。
但它也有一些問題。
首先,F(xiàn)AST 特征點數(shù)量很大且不確定。
其次,F(xiàn)AST 角點不具有方向信息。
所以,在 ORB 中,我們對原始的 FAST 算法進行了改進。
我們指定最終要提取的角點數(shù)量 N,對原始 FAST 角點分別計算 Harris 響應值,然后選取前 N 個具有最大響應值的角點,作為最終的角點集合。
同時,針對 FAST 角點不具有方向性和尺度的弱點,ORB 添加了尺度和旋轉的描述。
我們把改進后的 FAST 稱為 Oriented FAST。
BRIEF 描述子
在提取 Oriented FAST 關鍵點后,我們對每個點計算其描述子。
ORB 使用的是改進的 BRIEF 特征描述。
BRIEF 是一種二進制描述子,它的描述向量由許多個 0 和 1 組成,這里的 0 和 1 編碼了關鍵點附近兩個像素(比如說 p 和 q)的大小關系:如果 p 比 q 大,則取 1,反之就取 0。
BRIEF 使用了隨機選點的比較,速度非??欤矣捎谑褂昧硕M制表達,存儲起來也十分方便,適用于實時的圖像匹配。
原始的 BRIEF 描述子不具有旋轉不變性,因此在圖像發(fā)生旋轉時容易丟失。
而 ORB 在 FAST 特征點提取階段計算了關鍵點的方向,所以可以利用方向信息,計算了旋轉之后的 “Steer BRIEF” 特征,使 ORB 的描述子具有較好的旋轉不變性。
由于考慮到了旋轉和縮放,ORB 在平移、旋轉、縮放的變換下仍有良好的表現(xiàn)。
同時,F(xiàn)AST 和 BRIEF 的組合也非常的高效,使得 ORB 特征在實時 SLAM 中非常受歡迎。
03
特征匹配
特征匹配是視覺 SLAM 中極為關鍵的一步,寬泛地說,特征匹配解決了 SLAM 中的數(shù)據(jù)關聯(lián)問題(data association),即確定當前看到的路標與之前看到的路標之間的對應關系。
通過對圖像與圖像,或者圖像與地圖之間的描述子進行準確的匹配,可以為后續(xù)的姿態(tài)估計,優(yōu)化等操作減輕大量負擔。
然而,由于圖像特征的局部特性,誤匹配的情況廣泛存在,且長期以來沒有得到有效解決,目前已經(jīng)成為視覺 SLAM 中制約性能提升的一大瓶頸。
部分原因是因為場景中經(jīng)常存在大量的重復紋理,使得特征描述非常相似。
在這種情況下,僅利用局部特征解決誤匹配是非常困難的。
不過,現(xiàn)在我們先來看正確匹配的情況。
考慮兩個時刻的圖像。如果在圖像 It 中提取到特征點 xmt,m = 1,2,……,M,在圖像 It+1 中提取到特征點 xnt+1,n = 1,2,……,N,如何尋找這兩個集合元素的對應關系呢?
最簡單的特征匹配方法就是暴力匹配,即對每一個特征點 xmt,與所有的 xnt+1測量描述子的距離,然后排序,取最近的一個作為匹配點。
描述子距離表示了兩個特征之間的相似程度,不過在實際運用中還可以取不同的距離度量范數(shù)。
對于浮點類型的描述子,使用歐氏距離進行度量即可。
而對于二進制的描述子(比如 BRIEF 這樣的),我們往往使用漢明距離做為度量——兩個二進制串之間的漢明距離,指的是它們不同位數(shù)的個數(shù)。
然而,當特征點數(shù)量很大時,暴力匹配法的運算量將變得很大,特別是當我們想要匹配一個幀和一張地圖的時候。
這不符合我們在 SLAM 中的實時性需求。
此時快速近似最近鄰算法更加適合于匹配點數(shù)量極多的情況。
審核編輯:黃飛
-
算法
+關注
關注
23文章
4607瀏覽量
92828 -
SLAM
+關注
關注
23文章
423瀏覽量
31820
原文標題:圖像特征點提取、匹配大揭秘
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論