2012-05-01 61 views
1

有沒有一種方法可以爲OpenCV的features2d中的DescriptorMatcher計算的潛在匹配的圖像描述符對設置閾值?OpenCV的描述符匹配器中匹配的閾值

詳細地說,我有一個猜解匹配器與我想要計算兩幅圖像,只對描述符對與門檻以最小距離比賽應該去。

BFMatcher matcher(NORM_L2, true); 
vector<DMatch> matches; 
matcher.match(descriptors1, descriptors2, matches); 

感謝您的幫助!

回答

3

好了,我做了一些更多的閱讀,並發現了一些有趣的帖子像How to use flann based matcher, or generally flann in opencv?,並計算出我自己的方式;-)

首先,我用FlannBasedMatcher匹配計算的描述符。之後,我對匹配進行了排序(默認情況下,它們按照距離按升序排序)。創建了第二個DMatch矢量,並只添加了距離我選擇的距離閾值以下的匹配。而已。這樣我也可以選擇最前面的N個匹配,它的閾值被選擇爲壞。

可能不是最好的/最乾淨的方式,但它是一個快速的解決方案,適用於原型情況。

1

使用radiusMatch,而不是比賽

matcher.radiusMatch(descriptors1, descriptors2, matches, your-threshold); 
+0

錯誤。該文件說:「對於每個查詢描述符,找到訓練描述符不超過指定的距離」,而OP是要求*只有最小距離的閾值對*。 – aledalgrande

+0

我跑了代碼。請不要僅以文檔爲依據提供答案。 – moubarak

+0

它清楚地說* maxDistance *在源代碼中:https://github.com/Itseez/opencv/blob/a26bed16e64401d790930dc73dd29462bddd8d2c/modules/features2d/src/matchers.cpp#L1139 – aledalgrande