
ORB是是ORiented Brief的簡稱。ORB的描述在下面文章中:
Ethan Rublee and Vincent Rabaud and Kurt Konolige and Gary Bradski, ORB: an ef?cient alternative to SIFT or SURF, ICCV 2011
沒有加上鏈接是因為作者確實還沒有放出論文,不過OpenCV2.3RC中已經(jīng)有了實現(xiàn),WillowGarage有一個talk也提到了這個算法,因此我不揣淺陋,在這里總結(jié)一下。
Brief是Binary Robust Independent Elementary Features的縮寫。這個特征描述子是由EPFL的Calonder在ECCV2010上提出的。主要思路就是在特征點附近隨機選取若干點對,將這些點對的灰度值的大小,組合成一個二進制串,并將這個二進制串作為該特征點的特征描述子。詳細(xì)算法描述參考如下論文:
Calonder M., Lepetit V., Strecha C., Fua P.: BRIEF: Binary Robust Independent Elementary Features. ECCV 2010
注意在BRIEF eccv2010的文章中,BRIEF描述子中的每一位是由隨機選取的兩個像素點做二進制比較得來的。文章同樣提到,在此之前,需要選取合適的gaussian kernel對圖像做平滑處理。(為什么要強調(diào)這一點,因為下述的ORB對此作了改進。)
BRIEF的優(yōu)點在于速度,缺點也相當(dāng)明顯:
1:不具備旋轉(zhuǎn)不變性。
2:對噪聲敏感
3:不具備尺度不變性。
ORB就是試圖解決上述缺點中的1和2.
如何解決旋轉(zhuǎn)不變性:
在ORB的方案中,是采用了FAST作為特征點檢測算子。FAST應(yīng)用的很多了,是出名的快,以防有人不知道,請看這里:

在Sift的方案中,特征點的主方向是由梯度直方圖的最大值和次大值所在的bin對應(yīng)的方向決定的。略嫌耗時。
在ORB的方案中,特征點的主方向是通過矩(moment)計算而來,公式如下:

有了主方向之后,就可以依據(jù)該主方向提取BRIEF描述子。但是由此帶來的問題是,由于主方向會發(fā)生變化,隨機點對的相關(guān)性會比較大,從而降低描述子的判別性。解決方案也很直接,采取貪婪的,窮舉的方法,暴力找到相關(guān)性較低的隨機點對。

如何解決對噪聲敏感的問題:
在前面提到過,在最早的eccv2010的文章中,BRIEF使用的是pixel跟pixel的大小來構(gòu)造描述子的每一個bit。這樣的后果就是對噪聲敏感。因此,在ORB的方案中,做了這樣的改進,不再使用pixel-pair,而是使用9×9的patch-pair,也就是說,對比patch的像素值之和。(可以通過積分圖快速計算)。
關(guān)于尺度不變性:
ORB沒有試圖解決尺度不變性,(因為FAST本身就不具有尺度不變性。)但是這樣只求速度的特征描述子,一般都是應(yīng)用在實時的視頻處理中的,這樣的話就可以通過跟蹤還有一些啟發(fā)式的策略來解決尺度不變性的問題。
關(guān)于計算速度:
ORB是sift的100倍,是surf的10倍。
關(guān)于性能:
下面是一個性能對比,ORB還是很給力。點擊看大圖。

參考Slides