Я новичок в opencv и пытаюсь реализовать сопоставление изображений между двумя изображениями. Для этого я пытаюсь понять разницу между дескрипторами функций, экстракторами дескрипторов и сопоставителями дескрипторов. Я натолкнулся на множество терминов и попытался прочитать о них на веб-сайте документации opencv, но, похоже, просто не могу обдумать эти концепции. Я понял принципиальную разницу здесь. Разница между обнаружением признаков и извлечением дескриптора
Но я натолкнулся на следующие термины, изучая эту тему:
БЫСТРО, GFTT, SIFT, SURF, MSER, STAR, ORB, BRISK, FREAK, BRIEF
Я понимаю, как работают FAST, SIFT, SURF, но не могу понять, какие из вышеперечисленных являются только детекторами, а какие — экстракторами.
Тогда есть матчеры.
FlannBased, BruteForce, knnMatch и, возможно, некоторые другие.
После некоторого прочтения я понял, что определенные сопоставители могут использоваться только с определенными экстракторами, как описано здесь. Как работает детектор функций OpenCV ORB?
Приведенная классификация довольно ясна, но это только для нескольких экстракторов, и я не понимаю разницу между float и uchar.
Так что в принципе, может кто-нибудь, пожалуйста
Я знаю, что это требует много, но я буду очень благодарен.
Спасибо.
Я понимаю, как БЫСТРО, SIFT, SURF работают, но не могу понять,
какие из перечисленных являются только детекторами, а какие — экстракторами.
В основном, из этого списка функций детекторов / экстракторов (ссылка на статьи: БЫСТРО, GFTT, ПРОСЕЯТЬ, SURF, MSER, СТАР, ORB, BRISK, ИГРА, КРАТКАЯ), некоторые из них являются только детекторами функций (БЫСТРО, GFTT) другие являются как детекторами функций, так и экстракторами дескрипторов (SIFT, SURF, ORB, FREAK).
Если я правильно помню, КРАТКАЯ является только экстрактором дескриптора, поэтому ему нужны функции, обнаруженные каким-либо другим алгоритмом, таким как FAST или ORB.
Чтобы быть уверенным, что есть что, вы должны либо просмотреть статью, связанную с алгоритмом, либо просмотреть документацию opencv, чтобы увидеть, что было реализовано для FeatureDetector
класс или который был для DescriptorExtractor
учебный класс.
Q1: классифицировать типы детекторов, экстракторов и сопоставителей на основе
float и uchar, как уже упоминалось, или какой-то другой тип классификации?Q2: объясните разницу между классификацией float и uchar
или какая классификация используется?
относительно вопросы 1 и 2, классифицировать их как поплавок и учар, то ссылка, которую вы уже разместили это лучшая ссылка, которую я знаю, возможно, кто-то сможет завершить ее.
Q3: упомянуть, как инициализировать (кодировать) различные типы детекторов,
экстракторы и спички?
Ответ вопрос 3, OpenCV сделал код для использования различных типов совершенно одинаковым — в основном вам нужно выбрать один детектор функций. Большая часть различий заключается в выборе типа соответствия, и вы уже упомянули три из них, которые есть в OpenCV. Ваш лучший выбор здесь, чтобы прочитать документацию, примеры кода, и связанные вопросы переполнения стека. Кроме того, некоторые сообщения в блоге являются отличным источником информации, как эти серия эталонных тестов детектора Евгения Хведчения (Блог больше не доступен, поэтому мне пришлось создать текстовую копию из его кеша в Google).
Matchers используются, чтобы найти, похож ли дескриптор на другой дескриптор из списка. Вы можете сравнить свой дескриптор запроса со всеми другими дескрипторами из списка (Грубая сила) или вы используете лучшую эвристику (FlannBased, knnMatch). Проблема в том, что эвристика не работает для всех типов дескрипторов. Например, реализация FlannBased раньше работала только с float
дескрипторы, но не с uchar
(Но начиная с версии 2.4.0 FlannBase с индексом LSH может применяться к дескрипторам uchar).
квотирование это приложение-Solut сообщение в блоге о DescriptorMatcher
типы:
DescriptorMatcher поставляется в разновидностях «FlannBased»,
«BruteForceMatcher», «BruteForce-L1» и «BruteForce-HammingLUT».
«FlannBased» matcher использует фланн (быстрая библиотека для приблизительного
ближайшие соседи) библиотеку под капотом выполнять быстрее но
примерное соответствие. Версии «BruteForce- *» исчерпывающе ищут
словарь, чтобы найти наиболее близкое соответствие для функции изображения к
слово в словаре.
Некоторые из наиболее популярных комбинаций:
Детекторы функций / экстракторы дескрипторов / типы соответствия
(БЫСТРО, СЕРФ) / SURF / FlannBased
(БЫСТРО, SIFT) / SIFT / FlannBased
(БЫСТРО, ORB) / ORB / Bruteforce
(БЫСТРО, ORB) / КРАТКИЙ / Брутфорс
(БЫСТРО, ПОВЕРХНОСТЬ) / FREAK / Bruteforce
Вы могли также заметить, что есть несколько адаптеры (Dynamic, Pyramid, Grid) к функции детекторов. Сообщение в блоге App-Solut кратко описывает их использование:
(…) и есть пара адаптеров, которые можно использовать для изменения
поведение ключевых точек детекторов. Например,Dynamic
адаптер, который регулирует порог обнаружения для конкретного типа детектора
до тех пор, пока на изображении илиPyramid
адаптер
которая строит гауссову пирамиду для обнаружения точек на нескольких
напольные весы.Pyramid
Адаптер полезен для дескрипторов функций, которые
не являются инвариантами масштаба.
Дальнейшее чтение:
Это сообщение в блоге Ю Лу делает очень хорошее краткое описание на SIFT, FAST, SURF, BRIEF, ORB, BRISK и FREAK.
Эти серия постов Гила Леви также сделайте подробные сводки для некоторых из этих алгоритмов (BRIEF, ORB, BRISK и FREAK).
Других решений пока нет …