Clasificación de detectores, extractores y matchers


Soy nuevo en opencv e intento implementar la coincidencia de imágenes entre dos imágenes. Para este propósito, estoy tratando de entender la diferencia entre descriptores de características, extractores de descriptores y comparadores de descriptores. Me encontré con muchos términos y traté de leer sobre ellos en el sitio web de documentación de opencv, pero parece que no puedo envolver mi cabeza alrededor de los conceptos. Entendí la diferencia básica aquí. Diferencia entre la Detección de Características y el Descriptor Extracción

Pero me encontré con los siguientes términos mientras estudiaba sobre el tema :

FAST, GFTT, SIFT, SURF, MSER, STAR, ORB, BRISK, FREAK, BRIEF

Entiendo qué TAN RÁPIDO, TAMIZAR, NAVEGAR funcionan, pero parece que no puedo averiguar cuáles de los anteriores son solo detectores y cuáles son extractores.

Luego están los matchers.

FlannBased, BruteForce, knnMatch y probablemente algunos otros.

Después de leer un poco, me imaginé que ciertos matchers solo se pueden usar con ciertos extractores como se explica aquí. ¿Cómo Funciona el Detector de Características de ORBE OpenCV? La clasificación dada es bastante clara, pero es solo para unos pocos extractores y no entiendo la diferencia entre float y uchar.

Así que básicamente, puede alguien por favor

  1. clasificar los tipos de detectores, extractores y matchers basados en float y uchar, como se mencionó, o algún otro tipo de clasificación?
  2. explicar el ¿diferencia entre la clasificación float y uchar o cualquier clasificación que se esté utilizando?
  3. mencionar cómo inicializar (código) varios tipos de detectores, extractores y matchers?

Sé que está pidiendo mucho, pero estaré muy agradecido. Agradecer.

Author: Community, 2013-02-11

1 answers

Entiendo lo RÁPIDO, TAMIZAR, trabajo de SURF, pero parece que no puedo entender cuáles de los anteriores son solo detectores y cuáles son extractores.

Básicamente, de esa lista de detectores/extractores de características (enlace a los artículos: RÁPIDO, GFTT, TAMIZ, SURF, MSER, ESTRELLA, ORB, BRISK, FREAK, BREVE ), algunos de ellos son solo detectores de características ( RÁPIDO, GFTT) otros son detectores de características y extractores de descriptores (SIFT, SURF, ORB, FREAK).

Si no recuerdo mal, BRIEF es solo un extractor de descriptores, por lo que necesita características detectadas por algún otro algoritmo como FAST o ORB.

Para estar seguro de cuál es cuál, debe navegar por el artículo relacionado con el algoritmo o navegar por la documentación de opencv para ver cuál se implementó para la clase FeatureDetector o cuál fue para la clase DescriptorExtractor.

Q1: clasificar los tipos de detectores, extractores y matchers basados en flotar y uchar, como se mencionó, o algún otro tipo de clasificación?

P2: explicar la diferencia entre la clasificación float y uchar ¿o cuál es la clasificación que se está utilizando?

Respecto a las preguntas 1 y 2, para clasificarlas como float y uchar, el enlace que ya publicaste es la mejor referencia que conozco, tal vez alguien pueda completarla.

P3: mencione cómo inicializar (codificar) varios tipos de detectores, ¿extractores y acopladores?

Respondiendo a la pregunta 3, OpenCV hizo que el código usara los diversos tipos de forma similar, principalmente debe elegir un detector de características. La mayor parte de la diferencia está en elegir el tipo de matcher y ya mencionaste los 3 que tiene OpenCV. Su mejor opción aquí es leer la documentación, muestras de código, y las preguntas relacionadas con el desbordamiento de pila. Además, algunos las publicaciones del blog son una excelente fuente de información, como estas series de parámetros de detección de características de Ievgen Khvedchenia (El blog ya no está disponible, así que tuve que crear una copia de texto sin procesar de su caché de Google).

Matchers se utilizan para encontrar si un descriptor es similar a otro descriptor de una lista. Puede comparar su descriptor de consulta con todos los demás descriptores de la lista ( Fuerza Bruta ) o utilizar una heurística mejor (basada en FLANN, knnMatch ). El problema es que la heurística no funciona para todos los tipos de descriptores. Por ejemplo, la implementación basada en FLANN solía funcionar solo con descriptores float pero no con los descriptores uchar (Pero desde la versión 2.4.0, la implementación basada en FLANN con índice LSH se puede aplicar a los descriptores uchar).

Citando esta entrada de blog de App-Solut sobre los tipos DescriptorMatcher:

El DescriptorMatcher viene en las variedades " FlannBased", "BruteForceMatcher", "BruteForce-L1" y "BruteForce-HammingLUT"(en inglés). El "FlannBased" matcher utiliza el flann (biblioteca rápida para aproximar vecinos más cercanos) biblioteca bajo el capó para realizar más rápido pero coincidencia aproximada. Las versiones" Fuerza Bruta -* " exhaustivamente searche el diccionario para encontrar la coincidencia más cercana para una característica de imagen a una palabra en el diccionario.

Algunas de las combinaciones más populares son:

Característica Detectores / Extractores Decriptor / Matchers tipos

  • (RÁPIDO, SURF) / SURF / FlannBased

  • (RÁPIDO, TAMIZ) / TAMIZ / FlannBased

  • (RÁPIDO, ORBE) / ORBE / Fuerza Bruta

  • (RÁPIDO, ORBE) / BREVE / Fuerza Bruta

  • (RÁPIDO, SURF) / FREAK / Fuerza Bruta

Es posible que también haya notado que hay algunos adaptadores (Dinámicos, Piramidales, Grid) para los detectores de entidades. La entrada del blog de App-Solut resume realmente muy bien su uso:

(...) y también hay un par de adaptadores que se pueden usar para cambiar el comportamiento de los detectores de puntos clave. Por ejemplo, el Dynamic adaptador que ajusta un umbral de detección específico del tipo de detector hasta que se encuentren suficientes puntos clave en una imagen o en el adaptador Pyramid que construye una pirámide gaussiana para detectar puntos en múltiples escamas. El adaptador Pyramid es útil para descriptores de características que no son escala invariable.

Más información:

 74
Author: Rui Marques,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-01 10:20:13