Propósito de la detección de características de imagen y coincidencia

8

Soy un chico nuevo en procesamiento de imágenes y visión por computadora, por lo que esta pregunta puede ser estúpida para ti.

Acabo de aprender algunos algoritmos de detección y descripción de características, como Harris, Hessian, SIFT, SURF , procesan imágenes para descubrir esos puntos clave y luego calculan un descriptor para cada uno, el descriptor se usará para la coincidencia de características.

Probé SIFT y SURF, descubrí que no son tan robustos como pensaba, ya que para 2 imágenes (una está rotada y afinada un poco), no coinciden bien con las características, entre casi 100 puntos de características, solo 10 Los partidos son buenos.

Entonces me pregunto

  1. ¿Para qué podemos usar estos algoritmos de detección de características en la práctica? ¿Existe algún algoritmo más robusto para la detección y coincidencia de características? ¿O SIFT y SURF ya son buenos, solo necesito refinarlos para usarlos más?

  2. Otro problema es que pensé que estos algoritmos no son para aplicaciones en tiempo real (sin considerar la implementación de múltiples núcleos), ¡pero hay algunos productos comerciales (como Kinect) que funcionan y responden en tiempo real! Supongo que estos productos también detectan y combinan características de lo que ven , ¿usan algoritmos como SIFT ? ¿Cómo podrían detectar características tan bien?

  3. Con mi conocimiento limitado, sé que la coincidencia de características se puede utilizar para encontrar los mismos objetos en dos imágenes o estimar homografías, pero ¿algún otro propósito para la coincidencia de características?

aguacate
fuente
¡Oye! Creo que probablemente tenga un problema con su implementación SIFT / SURF. Ambos deberían funcionar mucho mejor que 10/100. ¿Te importaría subir tus imágenes y / o resultados coincidentes?
Penélope
@penelope, en realidad estoy usando SIFT / SURF de OpenCV. También creo que deberían funcionar mejor que 10/100, tal vez debería manejar la parte de coincidencia de características con más cuidado, ;-).
aguacate
@penelope, por cierto, ¿funcionan bien con imágenes afinadas?
aguacate
Oh si. Echa un vistazo a este artículo. Es una comparación de varios detectores, y muestra su robustez frente a cambios afines, desenfoque, iluminación y muchas otras cosas. En realidad no hay SIFT allí, pero SIFT no debería ser malo en comparación con ninguno de estos. Te escribiré una respuesta más detallada hoy, no tengo tiempo en este momento
penelope

Respuestas:

9

Los puntos clave de imagen son una característica clave en muchos softwares de procesamiento de imagen y video, tanto industriales como académicos. El principio detrás es siempre el mismo:

  • detectar algunos puntos significativos en algunas imágenes;
  • [opcional] calcule una descripción estable de la parte de la imagen que rodea cada punto clave;
  • hacer coincidir los puntos clave de una imagen (la plantilla) con otra (la consulta).

Ahora, algunos detalles más.

¿Por qué detectar puntos? Básicamente, porque un punto es una intersección de dos líneas. Como tal, se detecta con mucha más precisión (y de manera más estable) como líneas u otras características (área, etc.). Esto ha sido de conocimiento común en Computer Vision y luego fue probado en un artículo de Mikolajczyk. Esto está profundamente arraigado en cualquier detector de puntos: por ejemplo, el detector de puntos Harris se basa en la matriz de Hesse para verificar que haya dos líneas cruzadas.

¿Por qué la parte descriptiva es opcional? Los detectores de punto básicos (Harris, SUSAN, Moravec, FAST) no vienen con un descriptor. El proceso de igualarlos se basa únicamente en la ubicación. Por lo tanto, se utilizan principalmente para el procesamiento de video. La intuición detrás es que puede tener muchos puntos, luego un proceso de estimación robusto (por ejemplo, RANSAC). Sin embargo, los puntos clave recientes (SIFT y los que vinieron después) incorporan un descriptor de parche de imagen, porque están destinados a ser utilizados en situaciones más complejas (detección de objetos, coincidencia de línea de base grande ...).

¿Cuál es la diferencia entre Harris / Hessian y SIFT / SURF? Además de la parte del descriptor, SIFT / SURF también incluye una localización en escala . Por lo tanto, cuando detecta un punto SIFT / SURF, espera encontrarlo nuevamente incluso si su imagen ha sido ampliada / reducida, etc.

¿Cuál es la diferencia entre SIF y SURF? Bueno, SURF es en realidad una versión aproximada de SIFT que es más adecuada para cálculos rápidos (mediante el uso de imágenes integrales). En consecuencia, SURF no es tan estable (como "bueno") como SIFT en transformaciones afines, pero tiene un costo similar a 1/10 del costo computacional.

¿Son adecuados para software en tiempo real? Sí, por supuesto seguro para Harris. SURF fue diseñado para ser rápido, por lo que una buena implementación también debería ser rápida. SIFT no fue diseñado para la velocidad, pero puedes encontrar implementaciones de GPU. Pero si realmente desea ser rápido, incluso en dispositivos de gama baja, debe verificar puntos recientes como FAST (detector), BRIEF, ORB, BRISK, FREAK (descriptores binarios).

¿Qué puedes hacer con ellos? Pues muchas cosas. Al rastrear puntos en videos, puede estabilizarlos, aumentarlos con objetos, rastrear objetos. Al hacer coincidir los puntos entre cámaras, puede automatizar el proceso de calibración de las tuberías de reconstrucción 3D. Al hacer coincidir puntos en partes del objeto, puede detectar objetos. Y probablemente mucho más ...

sansuiso
fuente
Muchas gracias por esta respuesta detallada. Como mencionó, la intuición detrás es que puede tener muchos puntos, luego un proceso de estimación sólido (por ejemplo, RANSAC) , creo que para realizar una estimación sólida (como la homografía), el descriptor de características es indispensable, porque, según mi conocimiento limitado , la estimación implica correspondencias de características que necesitan un descriptor de características para la coincidencia de características, ¿verdad? ¿O hay alguna otra estimación sin la coincidencia de características?
aguacate
En el procesamiento de video, tiene, por ejemplo, 25 fps, lo que significa 40 milisegundos entre dos cuadros. Los puntos clave no se moverán mucho, y el proceso de coincidencia será un proceso vecino más cercano espacial. Si los puntos aparecieron / desaparecieron, entonces espera que RANSAC se encargue de eso (lo cual es cierto siempre y cuando tenga un 50% de coincidencias buenas). Observe también que agregar un descriptor todavía termina en la coincidencia del vecino más cercano, pero en el espacio de características, ya no en el espacio espacial.
sansuiso
Buena respuesta. Si un objeto es rígido y esencialmente limitado a 3 grados de libertad en 2D (x, y, rotación) + escalado, entonces hay algunos algoritmos finos de "coincidencia de patrones robustos" en paquetes de software comerciales que funcionan muy bien para ciertas aplicaciones. Los ejemplos incluyen software de Cognex, Hexavision, DALSA y Halcon de MvTec. Estos algoritmos pueden no ser tan generalizados como el póster original deseado, pero para objetos rígidos pueden ser bastante robustos.
Rethunk
Quizás OCR también?
FindOutIslamNow
2

Bueno, esa es una gran respuesta de @sansuiso, así que me concentraré en varios usos posibles de los puntos clave detectados y le describiré algunos ejemplos. Ciertamente hay más usos, los que se enumeran se basan en lo que contacté hasta ahora.

Recuperación de imágenes basada en contenido (CBIR) Usted trata las características (los vectores de características que obtiene después de aplicar descriptores de características a los puntos detectados) como palabras visuales . En esas palabras visuales, aplica técnicas de bolsa de palabras , que se introdujeron por primera vez para la recuperación de texto (piense en Google). Di una respuesta bastante detallada sobre eso aquí (también mira referencias allí). Esto te permitirá:

  • encontrar imágenes similares en la base de datos
  • detectar la presencia de cierto objeto en las imágenes de la base de datos
  • "agrupar" y organizar la base de datos automáticamente

("Grueso") Estimación de la homografía en pares de imágenes Detecta características, realiza coincidencias, elige las coincidencias más robustas y luego estima la homografía en función de esas coincidencias. Existen algunas técnicas para mejorar el rendimiento: además de solo descriptores coincidentes, también se puede usar información espacial (por ejemplo, una coincidencia se puede rechazar si sus vecinos de la imagen A no coinciden en el mismo vecindario en la imagen B - técnica de ejemplo cerca El final de este artículo se puede utilizar, por ejemplo, en:

  • unión de imágenes : por ejemplo, para conectar varias "imágenes panorámicas" en una sola imagen
  • Estimación de pose gruesa : la utilizamos en un proyecto en el que teníamos que navegar un automóvil robótico automáticamente a través de un curso grabado (basado en la navegación humana). La única información que teníamos era imágenes "clave" tomadas a ciertas distancias a lo largo del camino. Primero usamos CBIR para encontrar la imagen clave más cercana, y luego la localización inicial y el posicionamiento se realizaron en función de la coincidencia de imagen entre la vista actual y la imagen de la base de datos.
  • estabilización de video : he visto un muy buen ejemplo de imágenes de un cruce de carreteras tomado con una cámara colgando de un helicóptero. La idea era "neutralizar" el balanceo de la cámara, y el resultado final fue un video muy agradable y de aspecto estable.

Seguimiento de funciones No puedo decirle mucho sobre cómo se hace esto, ya que yo mismo no hice mucho seguimiento, pero puedo darle algunos ejemplos de cuándo esto podría ser útil. La idea es seleccionar algunos puntos de interés y luego seguir su posición en el video de cuadro a cuadro. Ejemplos (que he visto):

  • siguiente señal de tráfico: podría ser una ayuda para conducir, por ejemplo, si hay una vista de la carretera por delante y el conductor puede obtener una imagen procesada, podría ser útil detectar, marcar y rastrear la posición de una señal de tráfico que aparece en frente del conductor (tal vez alertar al conductor sobre la ubicación / distancia de la señal y el significado)
  • localización y posicionamiento precisos: en la misma navegación automatizada del automóvil robótico que mencioné anteriormente, fue mucho más preciso hacer una localización precisa basada en las características rastreadas . Con el fin de actualizar la posición actual y dar el comando sobre un movimiento adicional, se rastrearon ciertas características en el marco (por lo tanto, no se necesita coincidencia), y se estimó la homografía en función de esas características.
penelope
fuente
Gracias por estas aplicaciones, y también por el artículo y la publicación que enlazó.
aguacate
1

Hay un sitio web que le dará mucha información sobre sus consultas: http://www.robots.ox.ac.uk/~vgg/research/affine/

Contiene información sobre detectores de características y descriptores, su rendimiento actual y cuál es el mejor en cada escenario.

Este campo aún tiene mucho por hacer.

Por ejemplo, cuando desea realizar una reconstrucción estéreo, estos algoritmos generalmente fallan en el caso de imágenes de puntos de vista múltiple. Puedes probar algo de eso.

Armin Mustafa
fuente