Классификация детекторов, экстракторов и дозаторов

Я новичок в opencv и пытаюсь реализовать сопоставление изображений между двумя изображениями. Для этой цели я пытаюсь понять разницу между дескрипторами функций, экстракторами дескрипторов и сопоставителями дескрипторов. Я столкнулся с множеством терминов и попытался прочитать о них на веб-сайте документации opencv, но я просто не могу обернуть голову вокруг концепций. Я понял основную разницу. разница между обнаружением объектов и дескриптором Добыча

но я наткнулся на следующие термины во время изучения темы:

БЫСТРО, GFTT, ПРОСЕЯТЬ, ПРИБОЙ, MSER, ЗВЕЗДА, ШАР, ОЖИВЛЕННЫЙ, УРОД, КРАТКИЙ

Я понимаю, как быстро, просеивать, серфинг работать, но не могу понять, какие из вышеперечисленных являются только детекторами, а какие экстракторы.

тогда есть совпадающие.

FlannBased, BruteForce, knnMatch и, вероятно, некоторые другие.

после некоторого чтения я понял, что некоторые сопоставители могут использоваться только с определенными экстракторами, как описано здесь. как работает детектор OpenCV ORB? Приведенная классификация довольно ясна, но это только для нескольких экстракторов, и я не понимаю разницы между float и uchar.

Так, в принципе, может кто-то пожалуйста

  1. классифицируйте типы детекторов, экстракторов и дозаторов на основе float а Учар, как уже упоминалось, или какой-то другой тип классификации?
  2. объясните разницу между классификацией float и uchar или какой-либо классификацией используется?
  3. упомянуть, как инициализировать (код) различные типы детекторов, экстракторов и сопоставителей?

Я знаю, что прошу много, но я буду очень благодарен. Спасибо.

1 ответов


Я понимаю, как быстро, просеять, серфинг работы, но не могу понять какие из вышеперечисленных только детекторы и экстракторы.

в основном, из этого списка детекторов/экстракторов функций (ссылка на статьи:быстро, GFTT, просеять, серф, MSER, звезда, шар, Бойко, урод, этой), некоторые из них только детекторы характеристики ( БЫСТРО, GFTT) другие являются детекторами функций и экстракторами дескрипторов (ПРОСЕЯТЬ, ПРИБОЙ, ШАР, УРОД).

если я правильно помню, этой - это только экстрактор дескрипторов, поэтому ему нужны функции, обнаруженные каким-либо другим алгоритмом, таким как FAST или ORB.

чтобы быть уверенным, что есть что, вам нужно либо просмотреть статью, связанную с алгоритмом, либо просмотреть opencv документация, чтобы увидеть, что было реализовано для FeatureDetector класс или который был для DescriptorExtractor класса.

Q1: классифицируйте типы детекторов, экстракторов и сопоставителей на основе поплавок и Учар, как уже упоминалось, или какой-то другой тип классификации?

Q2: объясните разницу между классификацией float и uchar или какая классификация используется?

о вопросы 1 и 2, чтобы классифицировать им как плавать и Учар, то ссылка, которую вы уже разместили это лучшая ссылка, которую я знаю, может быть, кто-то сможет ее завершить.

Q3: укажите, как инициализировать (код) различные типы детекторов, экстракторы и сопоставители?

ответ Вопрос 3, OpenCV сделал код для использования различных типов совершенно одинаковым-в основном вам нужно выбрать один детектор функций. Большая часть разницы в выборе типа matcher и вы уже упомянули 3, которые есть у OpenCV. Ваш лучший выбор здесь, чтобы прочитать документацию, примеры кода и связанные вопросы переполнения стека. Кроме того, некоторые сообщения в блоге являются отличным источником информации, как эти серия характеристик детектора бенчмарков по Ievgen Khvedchenia (блог больше не доступен, поэтому мне пришлось создать сырую текстовую копию из своего кэша google).

Matchers используются для поиска, если дескриптор похож на другой дескриптор из списка. Вы можете либо сравнить свой дескриптор запроса со всеми другими дескрипторами из списка (BruteForce) или вы используете лучшую эвристику (FlannBased, knnMatch). Проблема в том, что эвристика не работает для всех типов дескрипторов. Например, реализация на базе FlannBased работала только с float дескрипторов, но не с uchar(но начиная с 2.4.0, Фланнбазед с индексом LSH может применяться к Учару дескрипторы.)

цитирую это приложение-Solut блог сообщение о DescriptorMatcher типа:

DescriptorMatcher приходит в разнообразия " Фланнбасед", "BruteForceMatcher", "BruteForce-L1"и" BruteForce-HammingLUT". Этот "Фланнбазед" matcher использует фланн (быструю библиотеку для приблизительного ближайшие соседи) библиотека под капотом, чтобы работать быстрее, но приблизительное совпадение. Версии "BruteForce - *" исчерпывающе ищут словарь найти наиболее близкое соответствие объекта изображения слово в словаре.

некоторые из наиболее популярных комбинаций являются:

детекторы характеристик / экстракторы Decriptor / типы Matchers

  • (быстрый, SURF) / SURF / Фланнбазед

  • (быстро, просеять) / просеять / Фланнбазед

  • (БЫСТРО, ORB) / ORB / Bruteforce

  • (быстро, ORB) / краткое / Bruteforce

  • (быстрый, серфинг) / урод / Bruteforce

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

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

читайте далее: