我正在使用OpenCV 2.4.3 C++接口來查找兩個圖像之間的匹配點。第一次嘗試是使用SURF。唯一的問題是消耗時間,所以我嘗試了新的FREAK提取器。使用SURF進行檢測並使用FREAK進行描述,我意識到FREAK將關鍵點的數量減少到檢測到的幾乎一半,並且所得到的匹配不夠。這就是我爲什麼試圖快速獲得更多關鍵點的原因。結果:爲什麼opencv FREAK提取器刪除這麼多關鍵點,具體使用ORB檢測器
- SURF檢測器,SURF提取器,BFMatcher交叉檢查true,RANSAC:70個關鍵點第一個圖像,50個關鍵點第二個圖像,200ms。 250毫秒。爲15ms。爲15ms。
- SURF檢測器,提取器FREAK,BFMatcher交叉檢查爲真,RANSAC:39點的關鍵點的第一圖像,關鍵點30第二圖像(FREAK後),200毫秒,50毫秒。 ,0ms,0ms。結果是很少有很好的配對。
- FAST檢測器,提取器FREAK,BFMatcher交叉檢查真,RANSAC:120點的關鍵點,關鍵點90,(69和FREAK後48個關鍵點),10毫秒,450毫秒,15毫秒,10毫秒。
之後,我使用ORBFeatureDetector,它獲得的關鍵點數量與FAST相同,但是在FREAK提取器之後,每個圖像的結果關鍵點爲0。難道我做錯了什麼? ORB關鍵點與從FAST獲得的關鍵點不同? 也許我可以爲此打開另一個問題,但我有最後一個問題。爲了獲得與使用SURF的第一個實驗相同的結果,檢測器/提取器的最佳組合是什麼?但是減少處理時間?因爲當我獲得更多關鍵點時,雖然我使用FREAK,但提取器部件也更耗時。
我喜歡用BRREF檢測器和FREAK描述符。它工作得很好。 –