orb算法簡介

ORB算法

ORB(Oriented FAST and Rotated BRIEF)是一種快速特徵點提取和描述的算法。這個算法是由Ethan Rublee, Vincent Rabaud, Kurt Konolige以及Gary R.Bradski在2011年一篇名爲“ORB:An Efficient Alternative to SIFTor SURF”( http://www.willowgarage.com/sites/default/files/orb_final.pdf )的文章中提出。ORB算法分爲兩部分,分別是特徵點提取和特徵點描述。特徵提取是由FAST(Features from  Accelerated Segment Test)算法發展來的,特徵點描述是根據BRIEF(Binary Robust IndependentElementary Features)特徵描述算法改進的。ORB特徵是將FAST特徵點的檢測方法與BRIEF特徵描述子結合起來,並在它們原來的基礎上做了改進與優化。ORB算法最大的特點就是計算速度快。這首先得益於使用FAST檢測特徵點,FAST的檢測速度正如它的名字一樣是出了名的快。再次是使用BRIEF算法計算描述子,該描述子特有的2進制串的表現形式不僅節約了存儲空間,而且大大縮短了匹配的時間。

特徵檢測

圖像的特徵點可以簡單的理解爲圖像中比較顯著顯著的點,如輪廓點,較暗區域中的亮點,較亮區域中的暗點等。ORB採用FAST算法來檢測特徵點。這個定義基於特徵點周圍的圖像灰度值,檢測候選特徵點周圍一圈的像素值,如果候選點周圍領域內有足夠多的像素點與該候選點的灰度值差別夠大,則認爲該候選點爲一個特徵點。候選點周圍的圓的選取半徑是一個很重要的參數,這裏爲了簡單高效,採用半徑爲3,共有16個周邊像素需要比較。

圓周上如果有連續n個像素點的灰度值比P點的灰度值大或者小,則認爲P爲特徵點。一般n設置爲12。假設在圖像中要提取N個特徵點,則降低FAST的閾值,使FAST算法檢測到的特徵點大於N。然後在特徵點位置處,計算特徵點的Harris響應值R,取前N個響應值大的點作爲FAST特徵點。爲了加快特徵點的提取,快速排出非特徵點,首先檢測1、9、5、13位置上的灰度值,如果P是特徵點,那麼這四個位置上有3個或3個以上的的像素值都大於或者小於P點的灰度值。如果不滿足,則直接排除此點。

FAST算法改進

由於FAST算法提取出的特徵點不具有尺度不變性,這導致圖像經過縮放後無法匹配到相應的特徵點。爲了改進這一點,需要使用圖片的尺度金字塔,在不同尺度計算FAST特徵點。具體做法爲設置一個比例因子scaleFactor(通常取1.2)和金字塔的層數nlevels(通常取8)。將原圖像按比例因子縮小成nlevels幅圖像。縮放後的圖像爲:I’= I/scaleFactork(k=1,2,…, nlevels)。nlevels幅不同比例的圖像提取特徵點總和作爲這幅圖像的oFAST特徵點。

計算特徵描述子

得到特徵點後我們需要以某種方式描述這些特徵點的屬性。這些屬性的輸出我們稱之爲該特徵點的描述子(Feature DescritorS).ORB採用BRIEF算法來計算一個特徵點的描述子。BRIEF算法計算出來的是一個二進制串的特徵描述符。它是在每一個特徵點的鄰域內,選擇n對像素點pi、qi(i=1,2,…,n)。然後比較每個點對的灰度值的大小。如果I(pi)> I(qi),則生成二進制串中的1,否則爲0。所有的點對都進行比較,則生成長度爲n的二進制串。一般n取128、256或512,通常取256。

BRIEF算法改進

BRIEF描述子不具備旋轉不變性,理想的特徵點描述子應該具備旋轉不變性,使得圖像在經過一定的旋轉後仍然能夠識別匹配其中的特徵點。BRIEF描述子選取點對的時候,是以當前特徵點爲原點,以水平方向爲X軸,以垂直方向爲Y軸建立座標系。當圖片發生旋轉時,座標系不變,同樣的取點模式取出來的點卻不一樣,計算得到的描述子也不一樣,這是不符合我們要求的。ORB在計算BRIEF描述子時建立的座標系是以特徵點爲圓心,以特徵點和取點區域的形心的連線爲X軸建立2維座標系。這樣一來,無論圖像如何旋轉,ORB選取點對的座標系是固定的。在不同的旋轉角度下,我們以同一取點模式取出來的點是一致的。這就解決了旋轉一致性的問題。

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