什么是ORB
FROM:http://www.cvchina.info/2011/07/04/whats-orb/
什么是ORB
2011年7月4日cvchina 發表評論閱讀評論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中已經有了實現,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應用的很多了,是出名的快,以防有人不知道,請看這里:
在Sift的方案中,特征點的主方向是由梯度直方圖的最大值和次大值所在的bin對應的方向決定的。略嫌耗時。
在ORB的方案中,特征點的主方向是通過矩(moment)計算而來,公式如下:
有了主方向之后,就可以依據該主方向提取BRIEF描述子。但是由此帶來的問題是,由于主方向會發生變化,隨機點對的相關性會比較大,從而降低描述子的判別性。解決方案也很直接,采取貪婪的,窮舉的方法,暴力找到相關性較低的隨機點對。
如何解決對噪聲敏感的問題:
在前面提到過,在最早的eccv2010的文章中,BRIEF使用的是pixel跟pixel的大小來構造描述子的每一個bit。這樣的后果就是對噪聲敏感。因此,在ORB的方案中,做了這樣的改進,不再使用pixel-pair,而是使用9×9的patch-pair,也就是說,對比patch的像素值之和。(可以通過積分圖快速計算)。
關于尺度不變性:
ORB沒有試圖解決尺度不變性,(因為FAST本身就不具有尺度不變性。)但是這樣只求速度的特征描述子,一般都是應用在實時的視頻處理中的,這樣的話就可以通過跟蹤還有一些啟發式的策略來解決尺度不變性的問題。
關于計算速度:
ORB是sift的100倍,是surf的10倍。
關于性能:
下面是一個性能對比,ORB還是很給力。點擊看大圖。
參考Slides
分類: 新聞 標簽: BRIEF, epfl, FAST, opencv2.3, orb, 特征描述子 評論 (25)Trackbacks (3)發表評論Trackback關注,希望繼續跟蹤更新啊
不完全統計了一下ICCV11和feature相關的文章
75 CARD: Compact And Real-time Descriptors
344 Robust Consistent Correspondence Between 3D Non-Rigid Shapes Based On “Dual Shape-DNA”
350 Local Intensity Order Pattern for Feature Description
929 Gradient-based learning of higher-order image features
951 Latent Low-Rank Representation for Subspace Segmentation and Feature Extraction
971 Speeded-up, relaxed spatial matching
1456 Evaluation of Image Features Using a Photorealistic Virtual World
1630 Robust Topological Features for Deformation Invariant Image Matching
1655 RISK: Binary Robust Invariant Scalable Keypoints
1673 ORB: an efficient alternative to SIFT or SURF
這個信息要關注,好像很強,要持續跟蹤
持續關注~~~~
用過作者的brief,的確很強大,而且實現很簡單
當初看了brief之后,發現和<>的思想蠻像的,也想把fast9與brief結合一下,這樣才是快快聯合啊,原來作者已完成了。不過我在高清的交通視頻上實驗,fast9不是理想,提取的位置并不是我想要的。
07年有個論文:Fast Keypoint Recognition in Ten Lines of Code,就是叫 Fua的這幫人,Fern嘛。再有就是劍橋Tom Drummond的Multiple Target Localisation at over 100 FPS,都是這個路子
http://www6.in.tum.de/Main/ResearchAgast
比FAST還快的角點檢測~
有試過么?
測試過了,確實快些。@cvchina
粗劣的比較下:在我的機器上,測試opencv自帶的 box.png圖,release模式下,都進行non-maximum suppression,測試時間:
FAST9 : 1.01025ms
FAST10: 1.14422ms
FAST11: 1.310358ms
FAST12:0.951357ms
OAST9_16: 0.450199ms
Agast7_12d: 0.367425ms
Agast7_12s: 0.424219ms
Agast5_8: 0.31986ms
想當牛逼。
Noodles :
粗劣的比較下:在我的機器上,測試opencv自帶的 box.png圖,release模式下,都進行non-maximum suppression,測試時間:
FAST9 : 1.01025ms
FAST10: 1.14422ms
FAST11: 1.310358ms
FAST12:0.951357ms
OAST9_16: 0.450199ms
Agast7_12d: 0.367425ms
Agast7_12s: 0.424219ms
Agast5_8: 0.31986ms
Noodles, opencv的svn里面提交了對FAST的加速改進,使用了sse2. 你可以再次比較一下么?
好@cvchina
@cvchina
同樣的條件:opencv 最新的FAST角點檢測實時性能:
FAST : 0.554308ms
之前的opencv2.3.1為:2.22326ms
粗看了下,也是點對特征。這個和隨機森林隨機蕨算法的區別作者能介紹下嗎?
另外,這個的算法對內存的需求怎么樣?
Ferns存儲的實際上一個多類分類器吧,并沒有一個顯示的描述子,而且對內存要求很高。
Orb每個特征點只需32Byte,可以說非常小了。
Agast的源代碼是linux平臺的么?
這些時間是指純檢測的時間,還是也包括load圖像等其它操作的時間@Noodles
“但是由此帶來的問題是,由于主方向會發生變化,隨機點對的相關性會比較大,從而降低描述子的判別性?!?br /> 博主可以幫忙解釋下這句話的意思么,看不懂啊~
按照博主的博客來說的話,那個ORB是在BRIEF的基礎上進行的改進嗎?還有博文中在ORB部分提到了啟發式策略改進,我想知道您說的這個啟發式究竟是什么意思?期待您的答復,謝謝!
這寫的也太簡單扼要了~~~
匹配對是5*5吧 我看論文上這么寫的 ?
Noodles :
好@cvchina
總結
- 上一篇: 基于弹性束图匹配的人脸识别
- 下一篇: ZMQ: 基本原理