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
¿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?
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?
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?
Respuestas:
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:
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 ...
fuente
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á:
("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:
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):
fuente
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.
fuente