2012-02-16 13 views
7

Estoy intentando hacer que mi detección de marcador de fiduciario basada en OpenCV sea más robusta cuando el usuario mueve la cámara (teléfono) violentamente. Los marcadores son de estilo ArTag con un código Hamming incrustado dentro de un borde negro. Los bordes se detectan mediante el umbral de la imagen, luego se buscan los cuádriceps basados ​​en los contornos encontrados y luego se verifica el interior de los cuádriceps.Detección de marcador fiducial en presencia de movimiento de cámara

En general, la decodificación del marcador es bastante robusta si se reconoce el borde negro. Intenté lo más obvio, que es reducir la resolución de la imagen dos veces y también realizar la detección cuádruple en esos niveles. Esto ayuda con el desenfoque de la cámara en marcadores cercanos cercanos, y también con niveles muy pequeños de borrosidad de la imagen, pero no ayuda enormemente al desenfoque de movimiento de la cámara

¿Hay investigaciones disponibles sobre cómo hacer que la detección sea más robusta? Las ideas que me pregunto acerca incluyen:

  1. Se puede hacer algún tipo de seguimiento de flujo óptico "adivinar" las posiciones del marcador en el siguiente cuadro, a continuación, una especie de detector de esquinas en la región de esas conjeturas, en lugar de tratar la búsqueda de rectángulo como un umbral de marco completo?
  2. En PC, ¿es posible derivar coeficientes de desenfoque (quizás mediante el registro con fotogramas de video recientes donde se detectó el marcador) y desbloquear la imagen antes del procesamiento?
  3. En los teléfonos inteligentes, ¿es posible usar el giroscopio y/o los acelerómetros para obtener los coeficientes de desbarbado y preprocesar la imagen? (Estoy suponiendo que no, simplemente porque si lo fuera, el mercado se vería inundado con aplicaciones de movimiento de la cámara de corrección.)

Enlaces a las ideas fallidas también se agradecería que me ahorra de probarlos.

Respuesta

3
  1. Sí, puede usar el flujo óptico para estimar dónde se encuentra el marcador y localizar su búsqueda, pero es solo la reubicación, su seguimiento se habrá roto para los marcos borrosos.
  2. No sé lo suficiente sobre el desbloqueo excepto para decir que es muy computacionalmente intensivo, por lo que en tiempo real podría ser difícil
  3. Puede usar los sensores para adivinar el tipo de desenfoque con el que se enfrenta, pero supongo El desbloqueo es demasiado computacional para dispositivos móviles en tiempo real.

A continuación, algunos otros enfoques:

Hay algunas cosas muy inteligente aquí: http://www.robots.ox.ac.uk/~gk/publications/KleinDrummond2004IVC.pdf donde están haciendo la detección de bordes (que podría ser utilizado para encontrar sus fronteras marcador, a pesar de que usted está buscando quads en este momento), modelando los movimientos de la cámara desde los sensores, y usando esos valores para estimar cómo debería aparecer un borde en la dirección de la falta de definición dada la velocidad de fotogramas, y buscando eso. Muy elegante.

De forma similar, aquí http://www.eecis.udel.edu/~jye/lab_research/11/BLUT_iccv_11.pdf simplemente difuminan previamente los objetivos de seguimiento y tratan de hacer coincidir los objetivos borrosos que son apropiados dada la dirección del desenfoque. Usan filtros gaussianos para modelar desenfoque, que son simétricos, por lo que necesita la mitad de los objetivos pre-difuminados que podría esperar inicialmente.

Si intentas implementar alguno de estos, ¡me interesaría mucho saber cómo te va!

0

De algún trabajo relacionado (intentar usar sensores/giroscopio para predecir la ubicación probable de las características de un cuadro a otro en video) Diría que 3 es probable que sea difícil, sino imposible. Creo que, en el mejor de los casos, podrías obtener una indicación de la dirección aproximada y el ángulo de movimiento que pueden ayudarte a modelar el desenfoque usando los enfoques mencionados por Dabhaid, pero creo que es poco probable que obtengas la precisión suficiente como para ser mucho más útil.

Cuestiones relacionadas