image processing - Diferencia entre detección de características y extracción de descriptores
image-processing opencv (2)
¿Alguien sabe la diferencia entre FeatureDetection y DescriptorExtraction en OpenCV 2.3? Entiendo que este último es necesario para hacer coincidir el uso de DescriptorMatcher. Si ese es el caso, ¿para qué se usa FeatureDetection?
Gracias.
Detección de funciones
En la visión por computadora y el procesamiento de imágenes, el concepto de detección de características se refiere a métodos que apuntan a extraer abstracciones de información de imágenes y tomar decisiones locales en cada punto de imagen, independientemente de si hay una característica de imagen de un tipo determinado en ese punto o no. Las características resultantes serán subconjuntos del dominio de la imagen, a menudo en forma de puntos aislados, curvas continuas o regiones conectadas.
Detección de funciones = cómo encontrar algunos puntos interesantes (características) en la imagen. (Ej: buscar una esquina, buscar una plantilla, etc.)
Extracción de características
En el reconocimiento de patrones y en el procesamiento de imágenes, la extracción de características es una forma especial de reducción de dimensionalidad. Cuando los datos de entrada a un algoritmo son demasiado grandes para ser procesados y se sospecha que son notoriamente redundantes (muchos datos, pero no mucha información), los datos de entrada se transformarán en un conjunto reducido de características de representación (también llamado vector de características) . La transformación de los datos de entrada en el conjunto de características se denomina extracción de características. Si las características extraídas se eligen cuidadosamente, se espera que las características establecidas extraigan la información relevante de los datos de entrada para realizar la tarea deseada utilizando esta representación reducida en lugar de la entrada de tamaño completo.
Extracción de características = cómo representar los puntos interesantes que encontramos para compararlos con otros puntos interesantes (características) en la imagen. (Por ejemplo, la intensidad del área local de este punto? La orientación local del área alrededor del punto? Y así sucesivamente ...)
Ejemplo práctico: puede encontrar una esquina con el método de la esquina de harris, pero puede describirlo con cualquier método que desee (Histogramas, HOG, orientación local en la octava adyacencia, por ejemplo)
Puedes ver aquí más información, enlace de Wikipedia
Julien, (ayudado con wikipedia: p)
Tanto la Feature Detection
Feature descriptor extraction
son parte del Feature based image registration
. Solo tiene sentido mirarlos en el contexto de todo el proceso de registro de imágenes basado en características para entender cuál es su trabajo.
Algoritmo de registro basado en funciones
La siguiente imagen de la documentación de PCL muestra una canalización de Regstation:
Adquisición de datos: una imagen de entrada y una imagen de referencia se introducen en el algoritmo. Las imágenes deben mostrar la misma escena desde puntos de vista ligeramente diferentes.
Estimación de punto clave (detección de características): Un punto clave ( punto de interés ) es un punto dentro de la nube de puntos que tiene las siguientes características:
- tiene una definición clara, preferiblemente matemáticamente bien fundada,
- tiene una posición bien definida en el espacio de la imagen,
- la estructura de imagen local alrededor del punto de interés es rica en términos de contenido de información local.
OpenCV viene con varias implementaciones paraFeature detection
, tales como:
Tales puntos sobresalientes en una imagen son muy útiles porque la suma de ellos caracteriza la imagen y ayuda a distinguir diferentes partes de ella.
Descriptores de características (Extractor de descriptores): Después de detectar los puntos clave, calculamos un descriptor para cada uno de ellos. "Un descriptor local, una representación compacta del vecindario local de un punto. En contraste con descriptores globales que describen un objeto completo o nube de puntos, los descriptores locales intentan parecerse a la forma y apariencia solo en un vecindario local alrededor de un punto y por lo tanto son muy adecuados para representarlo en términos de coincidencia ". (Dirk Holz y otros) . Opciones de OpenCV :
Estimación de correspondencia (descriptor matcher): la próxima tarea es encontrar correspondencias entre los puntos clave encontrados en ambas imágenes. Por lo tanto, las características extraídas se colocan en una estructura que se puede buscar de manera eficiente (como un kd-tree ). Por lo general, es suficiente buscar todos los descriptores de características locales y hacer coincidir cada uno de ellos con su homólogo correspondiente de la otra imagen. Sin embargo, debido a que dos imágenes de una escena similar no tienen necesariamente el mismo número de descriptores de características, ya que una nube puede tener más datos que la otra, debemos ejecutar un proceso de rechazo de correspondencia separado. Opciones de OpenCV :
Rechazo de correspondencia: uno de los enfoques más comunes para realizar el rechazo de correspondencia es usar RANSAC (Consenso de Muestra Aleatoria).
Estimación de Transformación: Después de computar las correspondencias robustas entre las dos imágenes, se usa un
Absolute Orientation Algorithm
para calcular una matriz de transformación que se aplica en la imagen de entrada para que coincida con la imagen de referencia. Hay muchos enfoques algorítmicos diferentes para hacer esto, un enfoque común es: Descomposición de valores singulares (SVD).