2011-10-28 93 views
1

我在OpenCV 2.3中使用了SIFT檢測器和提取器,並發現在子圖像上檢測到的關鍵點數量並不等於整個圖像上的關鍵點數量。子圖像上的SIFT描述符並不總和那些在整個圖像?

具體來說,如果我在圖像A上使用SIFT檢測器,檢測器會檢測N個SIFT關鍵點。 如果我將A分成四個子區域A_1,A_2,A_3,A_4並分別在這些區域運行檢測器,則檢測器會相應地檢測到N_1,N_2,N_3,N_4 SIFT關鍵點。令人驚訝的是,N_1 + N_2 + N_3 + N_4不等於N!

這種現象對於SIFT算法是否正確?或者這是由於OpenCV 2.3的不好實現?

回答

2

SIFT檢測器在圖像上使用一組高斯濾波器。這些濾鏡的結果在圖像分區邊緣附近不會相同。如果您要查看關鍵點位置,您將看到大多數改變的點是圖像劃分附近的點。

此外,在SIFT算法中存在關鍵點非最大值抑制階段,其中關鍵點強度與最強關鍵點進行比較並且如果轉爲弱點則被丟棄。在完整圖像中將使用全局最大值,而在基於區域的使用中,每個點將用相同的子區域的最大值進行測試,導致一個小的差異。

+0

非常感謝!這真的很有幫助! –

相關問題