我正在實施一個content-based image retrieval應用程序,其中涉及Bag of Features模型。我使用cv::SIFT
作爲特徵檢測器。增加SIFT中檢測到的特徵數量會提高精度?
無論如何,應用程序的性能不是很好,我試圖從第一步算法,它是檢測功能,以提高他們。
閱讀cv::SIFT::create()
documentation我看到3個參數,引起了我的注意:
- n功能 - 的最佳功能保留的數量。對比度閾值 - 用於濾除半均勻(低對比度)區域中弱微特徵的對比度閾值。(對比度閾值用於濾除半均勻(低對比度)區域中的微弱特徵。閾值越大,檢測器產生的特徵越少。
- edgeThreshold - 用於濾除邊緣狀特徵的閾值。請注意,其含義與對比度閾值不同,即邊緣閾值越大,濾除特徵的功能越少(保留更多功能)。
這意味着,增加第一和第三參數,而減小第二,應該提高算法的精度(以較低的時間表演)?
我想知道這個特別是對於第一個參數,例如,如果我們設置了nfeatures=2000
,那麼無論它們是否「有趣」,它都會準確檢測到2000
的特徵。這意味着它是否會檢測到「無趣」(非常糟糕)的關鍵點?
感謝您的有用答案。我知道VLFeat,它也有一個C API,不幸的是在C方面沒有很好的記錄。 – justHelloWorld
無論如何,你的答案只是證實了我的嫌疑犯:增加'nFeatures'的數量可能會導致誤報(以及糟糕的結果)。我認爲ASIFT可能是更精確的解決方案。我們拭目以待。 – justHelloWorld
不客氣。 :)我沒有使用ASIFT,所以不太確定。 – Saurav