拜小白的成長之路,告別小白
關於OpenCV的學習,敬請關注專欄:
=================分割線=================
原文釋出時間:2011年1月28日
=================以下是對原文翻譯部分=================
大家好!今天,我們有非常有趣的話題!我們將檢查不同的特徵描述符提取器。從這篇文章中,你將會知道SURF是多麼的強大,缺點是有幾個描述符,LAZY描述符比SURF要快多少倍。PS:如果您指出我的良好實現(C
/ C ++)RIFF,PCA SIFT,GLOH,LESH描述符,我將非常感激。我將把它們包含在測試套件中。所以,今天我們的豚鼠是:
- SURF(OpenCV實現)
- 簡介(OpenCV實現)
- SIFT(OpenCV實現)排除在測試之外 - 極其緩慢
-
LAZY(自己實施)
五項測試:旋轉,縮放,亮度變化,模糊和效能基準。這些測試應該給我們關於特徵描述符的旋轉,縮放和光照不變性的資訊,並且也描述總描述符魯棒性。效能基準將顯示多少昂貴的描述符提取。
測試描述
在所有測試中,我使用單參考影象:
我非常喜歡這個形象。它有大量的類似的地區,在汽車上的思考,這只是很好:)。對於功能檢測,我將使用OpenCV中的SurfFeatureDetector進行預設設定。在所有的測試中,我使用非常類似的程式
- 生成一組轉換後的影象
-
檢測每個影象上的特徵並提取描述符
- 使用來自參考框架的描述符匹配描述符。對於匹配,我使用OpenCV中的flann匹配器(匹配引數描述符與轉換,反之亦然,並返回它們的交集)
- 使用RANSAC(cv :: FindFundamentalMat)來過濾錯誤的匹配。
- 因此,我返回(內線數)/(總比賽)百分比。
旋轉測試將對這個影象進行仿射旋轉,以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===============================