什麼是ORB

轉自:http://www.cvchina.info/2011/07/04/whats-orb/  


ORB是是ORiented Brief的簡稱。ORB的描述在下面文章中:

Ethan Rublee and Vincent Rabaud and Kurt Konolige and Gary Bradski, ORB: an efficient alternative to SIFT or SURF, ICCV 2011

沒有加上鍊接是因爲作者確實還沒有放出論文,不過OpenCV2.3RC中已經有了實現,WillowGarage有一個talk也提到了這個算法,因此我不揣淺陋,在這裏總結一下。

Brief是Binary Robust Independent Elementary Features的縮寫。這個特徵描述子是由EPFL的Calonder在ECCV2010上提出的。主要思路就是在特徵點附近隨機選取若干點對,將這些點對的灰度值的大小,組合成一個二進制串,並將這個二進制串作爲該特徵點的特徵描述子。詳細算法描述參考如下論文:

Calonder M., Lepetit V., Strecha C., Fua P.: BRIEF: Binary Robust Independent Elementary Features. ECCV 2010

注意在BRIEF eccv2010的文章中,BRIEF描述子中的每一位是由隨機選取的兩個像素點做二進制比較得來的。文章同樣提到,在此之前,需要選取合適的gaussian kernel對圖像做平滑處理。(爲什麼要強調這一點,因爲下述的ORB對此作了改進。)

BRIEF的優點在於速度,缺點也相當明顯:

1:不具備旋轉不變性。

2:對噪聲敏感

3:不具備尺度不變性。

ORB就是試圖解決上述缺點中的1和2.

如何解決旋轉不變性:

在ORB的方案中,是採用了FAST作爲特徵點檢測算子。FAST應用的很多了,是出名的快,以防有人不知道,請看這裏

FAST corner detection

在Sift的方案中,特徵點的主方向是由梯度直方圖的最大值和次大值所在的bin對應的方向決定的。略嫌耗時。

在ORB的方案中,特徵點的主方向是通過矩(moment)計算而來,公式如下:

oriented fast

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

sterable brief

如何解決對噪聲敏感的問題:

在前面提到過,在最早的eccv2010的文章中,BRIEF使用的是pixel跟pixel的大小來構造描述子的每一個bit。這樣的後果就是對噪聲敏感。因此,在ORB的方案中,做了這樣的改進,不再使用pixel-pair,而是使用9×9的patch-pair,也就是說,對比patch的像素值之和。(可以通過積分圖快速計算)。

關於尺度不變性:

ORB沒有試圖解決尺度不變性,(因爲FAST本身就不具有尺度不變性。)但是這樣只求速度的特徵描述子,一般都是應用在實時的視頻處理中的,這樣的話就可以通過跟蹤還有一些啓發式的策略來解決尺度不變性的問題。

關於計算速度:

ORB是sift的100倍,是surf的10倍。

關於性能:

下面是一個性能對比,ORB還是很給力。點擊看大圖。


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