opencv Freak - Могу ли я использовать дескриптор функции Freak с BOW?

Я пытаюсь использовать Freak в opencv для обнаружения функций и извлечения дескрипторов, затем строю свой словарь BOW и для каждого изображения использую словарь, чтобы соответствовать BOW. Вы знаете, все это Я знаю, что BOW можно использовать с другими дескрипторами, такими как SIFT или SURF, для меня не ясно, могут ли дескрипторы Freak, которые являются двоичными, использоваться с BOW. Более конкретно, когда opencv создает словарь BOW, он использует кластер k-средних. Мне не ясно, какую функцию расстояния использует алгоритм кластера k-средних. Для двоичных дескрипторов, таких как Freak, расстояние Хэмминга кажется единственным выбором.

Мне кажется, opencv k-means использует только евклидово расстояние при расчете расстояния, облом. Похоже, мне нужно создать свои собственные k-средства и свой собственный словарный запас. Любые умные люди знают обходной путь?

Спасибо!

2 ответа

Я прочитал на бумаге, что Freak не так легко использовать. Вот выдержка из статьи ".... Эти алгоритмы не могут быть легко использованы во многих поисковых алгоритмах, потому что их нужно сравнивать с расстоянием Хэмминга, которое нелегко адаптировать к структурам ускоренного поиска, таким как словарные деревья или" Приближенные ближайшие соседи "(ANN)...." (ORB,FREAK и BRISK)

FREAK работает с локальным хешированием. Вы можете использовать его с FLANN (быстрые приблизительные ближайшие соседи), включенные в OpenCV.

Для BOW только первые 5, 6, 7, 8 байтов дескриптора могут быть достаточными для построения дерева.

Другие вопросы по тегам