2014-01-28 4 views
3

Я пытаюсь найти попарные совпадения между дескрипторами двух изображений, чтобы я мог оценить гомографию между ними. Существуют и другие методы, такие как BFMatcher и FlannBasedMatcher, но я хочу использовать BestOf2NearestMatcher. Я использовал следующий синтаксис:Как использовать BestOf2NearestMatcher

vector<MatchesInfo> pairwise_matches; 
detail::BestOf2NearestMatcher matcher(false,0.3,10,10); 
matcher(features,pairwise_matches); 
matcher.collectGarbage(); 

Я столкнулся с проблемой, как pairwise_matches не содержит матчей и ни inliers. Я подозреваю, что есть некоторая проблема в matcher. Если я реализую BFMatcher или FlannBasedMatcher, тогда я получаю 46 матчей. Кто-нибудь использовал этот метод?

Дополнительную информацию о BestOf2NearestMatcher можно найти here.

ответ

1

BestOf2NearestMatcher - это реализация критерия отношения ближайшего соседа Lowe, описанного в документе SIFT, где он рекомендует использовать коэффициент = 0,8. То же самое справедливо для SURF. Иногда даже 0,85. Значение в 0,3 слишком строгое.

+0

OpenCV имеет демонстрацию при сшивании изображений, где 0,65 используется в случае дескриптора SIFT и 0,3 используется для дескриптора ORB. –

+0

OpenCV имеет демо-версию по оценке гомографии с идиотской стратегией выбора «хороших совпадений», которая противоречит работе Лоу. Таким образом, «OpenCV имеет демо» не является аргументом :) Но 0,65 может быть порогом для коэффициента квадратов: 0,8^2 = 0,64. –

+0

Все, что я говорю, это то, что 0.3, по-видимому, не слишком ограничивает дескрипторы ORB. –