Как использовать BestOf2NearestMatcher

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

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

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

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


person Autonomous    schedule 28.01.2014    source источник


Ответы (1)


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

person old-ufo    schedule 29.01.2014
comment
В OpenCV есть демонстрация сшивания изображений, где 0,65 используется в случае дескриптора SIFT, а 0,3 — для дескриптора ORB. - person Eduard Feicho; 18.07.2014
comment
В OpenCV есть демонстрация оценки гомографии с идиотской стратегией выбора хороших совпадений, которая противоречит статье Лоу. Так что у OpenCV есть демо-версия, это не аргумент :) Но 0,65 может быть порогом для квадратного отношения: 0,8 ^ 2 = 0,64. - person old-ufo; 19.07.2014
comment
Все, что я говорю, это то, что 0.3, по-видимому, не слишком ограничивает дескрипторы ORB. - person Eduard Feicho; 25.07.2014