2012-05-20 125 views
0

我正在做關鍵點檢測和匹配opencv來縫合兩個圖像。關鍵點檢測和匹配opencv中的大圖像

當圖像很小時,效果很好。但是當處理更大的圖像時,檢測到的關鍵點數量會增加,因此需要花費大量時間來匹配它們。但爲了拼接圖像,似乎我們不需要這麼多關鍵點。爲了提高效率,是否有辦法只檢測有限的關鍵點?

在代碼中,我使用SiftFeatureDetector和SiftDiscriptorExtractor來檢測關鍵點並提取描述符。

問候。

回答

1

我的建議:

重新大小的圖像,使他們變得更小,然後執行特徵匹配。 一旦你有一個快速解決方案(Homography)應用它,比下一個匹配將快得多。

您確實有辦法輕鬆控制功能的數量。您可以提高閾值,因此將選擇較少的功能。 你甚至可以在while()循環中包裝閾值。它提高了閾值,直到特徵量小於N(但比一些M大)。

看完整的代碼示例我張貼在這裏:

Calculate offset/skew/rotation of similar images in C++

+0

1,重新大小是一個很好的方式。在detector.detect(img,feature,mask)中使用mask參數將產生相同的結果,對吧? 2,控制探測器獲得的特徵量。探測似乎並不容易,因爲閾值不能在函數中設置,對嗎? – beaver

+0

使用面罩是一種好方法,但我不確定你知道面罩應該是什麼。你怎麼能提前知道哪裏可以找到好的功能?關於功能的數量,在我發佈的例子中有一行:Ptr detector = new SurfFeatureDetector(2000); 2000是你需要改變的數字,通過將這條線與檢測器 - >檢測並將檢測到的特徵量相關聯 – DanielHsH

相關問題