Настройка параметров для BRISK в OpenCV

Я пытаюсь использовать реализацию BRISK для OpenCV (для C ++), чтобы проверить на фотографии, включено ли изображение (или часть изображения). Например, я делаю фотографию и пытаюсь соответствовать ей с набором изображений в базе данных, и я хотел бы выбрать лучшее соответствующее изображение (или сообщение об ошибке, если ни одно из всех изображений не достаточно хорошо).

Итак, я сейчас тестирую OpenCV. Я просто взял образец, включенный в каркас (match_to_many_images), и изменил детектор и дескриптор с SURF на BRISK.

Однако у меня странные результаты. Вот результаты сопоставления (BruteForce Hamming):

BruteForce Hamming

BruteForce Hamming

В первом эпизоды совершенно разные, но матчей много!
Во втором сцены довольно похожи, но некоторые совпадения неверны.

Я думаю, что это проблема параметров, потому что на демо-видео BRISK результаты значительны.

4

Решение

Обычно выполняется много неправильных начальных совпадений при сопоставлении объектов с использованием SIFT, SURF, BRISK или любого другого локального дескриптора.

Многие из этих начальных совпадений будут неправильными из-за неоднозначных особенностей или особенностей, которые возникают из-за беспорядка фона. [От Отличительные особенности изображения из масштабных инвариантных ключевых точек]

Следующим шагом является выбор только подмножества тех совпадений, которые все согласны с общим преобразованием между двумя изображениями. Это объясняется в разделах 7.3 и 7.4 Отличительные особенности изображения из масштабных инвариантных ключевых точек.

3

Другие решения

Вы видели документацию OpenCV для BRISK? Я не уверен, какие параметры вы используете сейчас, но вы можете указать порог и октавы, а также шаблон. Документация на
http://docs.opencv.org/modules/features2d/doc/feature_detection_and_description.html#brisk

Также вы можете попробовать другой алгоритм сопоставления объектов, хотя, похоже, что в статье BRISK они также использовали расстояние Хэмминга

Наконец, не слишком неожиданно иметь ошибочные совпадения функций; опробуйте разные сцены, а также различные параметры и посмотрите, как ваши результаты

2

OpenCV Tutorial дает отличный пример того, как извлечь объекты и вычислить гомографию (преобразование, которое говорит вам, как преобразовать каждую точку из одного изображения в другое).

Вы можете заменить элемент-детектор / дескриптор любым другим, что приведет к различной устойчивости к определенным преобразованиям, таким как вращение, масштабирование или ошибкам, таким как размытие или изменение освещенности. Базовая реализация BRISK уже имеет значимые параметры определены.

И последнее, но не менее важное: если вы попытаетесь сопоставить два совершенно разных изображения, чего ожидать в результате? Алгоритм будет пытаться найти сходства и, следовательно, всегда вычислять результат, даже если он не имеет смысла и оценки очень низкие. Просто имейте в виду: Вывоз мусора -> Вывоз мусора.

2
По вопросам рекламы [email protected]