2015-05-10 4 views
1

Есть ли способ получить расстояние от помех между двумя согласованными дескрипторами при использовании совпадения фланов без его ручного вычисления? (т. е. зацикливание через дескрипторы, сопоставленные, XORing каждого элемента, а затем подсчет).Расстояние от помех OpenCV между совпадениями FLANN

Я соответствующие дескрипторы, вычисленных ОРБ как так:

FlannBasedMatcher flannMatcher; 
flannMatcher.match(des1, des2, matches); 

Если я проверить расстояние:

cout << matches.at(0).distance; 

я получаю расстояние NORM_L2, однако мое приложение требует расстояние Хэмминга.

Контекст:

Поэтому я хочу, чтобы сделать это, что я генерация поезда дескрипторов из тренировочного образа устанавливается с помощью ORB, находя матчи с помощью грубой силы Искателя, затем фильтрует плохие матчи на основе расстояния Хемминг ,

Затем я хочу использовать фланель-сопряжение для сопоставления дескрипторов потока веб-камеры с этими дескрипторами поезда (и показать, какие учебные изображения наиболее точно соответствуют текущему кадру), но так как совпадение фланов не кажется расстояние от помех, которое я застреваю, когда дело доходит до фильтрации слабых совпадений, и я получаю много ошибок при выборе изображения поезда, которое лучше всего подходит.

ответ

1

Попробуйте использовать фланель :: LshIndexParams как тип расстояния. Это делает Населённый Sensitive хеширования (что близко к расстоянию Хэмминга)

FlannBasedMatcher matcher2(new flann::LshIndexParams(20,10,2)); 

Смотрите также обсуждение here

+0

Спасибо за подсказку! Дайте ему шанс и посмотрим, как это происходит. –

+0

Это сработало! Кроме того, он очень медленный и вызывает 2-3 секундные задержки в веб-камере: S У меня возникли проблемы с поиском информации о том, как выбрать параметры для конструктора LshIndexParams, есть ли у вас какие-либо советы по этому поводу? –

Смежные вопросы