1. 程式人生 > >拜小白的成長之路,告別小白

拜小白的成長之路,告別小白

關於OpenCV的學習,敬請關注專欄: 

=================分割線=================

原文釋出時間:2011年1月28日

=================以下是對原文翻譯部分=================


大家好!今天,我們有非常有趣的話題!我們將檢查不同的特徵描述符提取器。從這篇文章中,你將會知道SURF是多麼的強大,缺點是有幾個描述符,LAZY描述符比SURF要快多少倍。PS:如果您指出我的良好實現(C / C ++)RIFF,PCA SIFT,GLOH,LESH描述符,我將非常感激。我將把它們包含在測試套件中。所以,今天我們的豚鼠是:

  • SURF(OpenCV實現)
  • 簡介(OpenCV實現)
  • SIFT(OpenCV實現)排除在測試之外 - 極其緩慢
  • LAZY(自己實施) 

五項測試:旋轉,縮放,亮度變化,模糊和效能基準。這些測試應該給我們關於特徵描述符的旋轉,縮放和光照不變性的資訊,並且也描述總描述符魯棒性。效能基準將顯示多少昂貴的描述符提取。

測試描述

在所有測試中,我使用單參考影象:


我非常喜歡這個形象。它有大量的類似的地區,在汽車上的思考,這只是很好:)。對於功能檢測,我將使用OpenCV中的SurfFeatureDetector進行預設設定。在所有的測試中,我使用非常類似的程式

  1. 生成一組轉換後的影象
  2. 檢測每個影象上的特徵並提取描述符
  3. 使用來自參考框架的描述符匹配描述符。對於匹配,我使用OpenCV中的flann匹配器(匹配引數描述符與轉換,反之亦然,並返回它們的交集)
  4. 使用RANSAC(cv :: FindFundamentalMat)來過濾錯誤的匹配。
  5. 因此,我返回(內線數)/(總比賽)百分比。

旋轉測試將對這個影象進行仿射旋轉,以360度為中心,以1度為步進。縮放測試將使用比例因子在[0.25..2.25]範圍內調整影象大小。照明測試將會改變影象中每個畫素在[-100..100]範圍內的影象亮度。模糊測試將使用不同核心大小的高斯模糊來平滑影象[1..21]。**效能測試**將根據參考影象測量[1..N]描述符的描述符提取時間。

結果


正如所料,SURF和LAZY表現出良好的旋轉不變行為。簡介是一個不旋轉不變的描述符,因為它只是一個影象補丁。


在縮放測試中,SURF和LAZY表現出非常相似的結果 - 是的,BRIEF不是尺度不變的。區域性極值區域可以解釋為調整大小的副作用。


在照明測試中,所有描述符顯示出良好的結果 可能是因為所有的描述符都被標準化了。


對模糊影象非常敏感(請記住 - 這只是一個補丁)。LAZY和SURF顯示幾乎相同的結果。

效能


由於簡要描述符的非常微不足道的性質,它顯示了最好的效能。LAZY描述符的提取速度也非常快,因為SURF並不使用大量計算。我無法解釋SURF描述符提取時間的二次增長。可能是由OpenCV中的非最佳實現引起的。

結論

我們的研究LAZY描述符提供了幾乎相同的SURF質量,但速度至少提高了2倍。但是研究還沒有完成,所以我預期效能提升10-30%,質量略有提高(或許會在某個時候擊敗SURF)。

進一步的工作

在不久的將來,我會將PCA SIFT和RIFF描述符實現新增到所有測試中,並在其他測試影象上進行測試。

==============================END===============================