2011-04-07 9 views
11

Después de descubrir el poder de OpenCV, decidí usar esa biblioteca para desarrollar el motor de seguimiento de marcador natural en el que estoy trabajando ahora. Pero mi problema es que no tengo idea de un enfoque adecuado para la implementación de dicho rastreador.implementación de realidad aumentada de marcador natural

he ideado el siguiente plan:

  1. Uso uno de los algoritmo de seguimiento de objetos (por ejemplo, cribar, SURF, etc.) para describir y extraer puntos clave de una alimentación de la cámara en vivo.
  2. Según los puntos clave extraídos, conviértalos en histograma y compare el histograma con histogramas de marcadores almacenados.
  3. Una vez que encuentra una coincidencia, convierta esa información de posición y páselo al motor responsable de renderizar los objetos en 3D.

Probé el algoritmo SIFT y SURF para describir y extraer puntos clave y el resultado final es superfps para ambos algoritmos (es decir, menos de 0 fps). Me doy cuenta de que SIFT y SURF son bastante costosos desde el punto de vista computacional y ¿serán adecuados para ese seguimiento en una alimentación de cámara en vivo?

Gracias.

+0

No he trabajado con SURF, pero SIFT, bien implementado, es increíble, no para dispositivos móviles, supongo, pero con hardware avg real funciona perfectamente para el seguimiento en vivo. Buscar artículos en línea de Leonardo Chang. Hola, tengo mucha experiencia en eso. – jsicary

+1

El propósito de SURF era ser más rápido que SIFT ... De todos modos, el rendimiento en tiempo real para la realidad aumentada es un problema en sí mismo. es decir, algo difícil que depende de sus datos, su hardware y el nivel de precisión que desee. – log0

+1

Si está interesado, puede participar en esta nueva propuesta de StackExchange: http://area51.stackexchange.com/proposals/30436/augmented-reality –

Respuesta

1

SIFT y SURF son funciones visuales exitosas y probablemente sean el enfoque correcto (aunque existen funciones más rápidas para calcular).
SIFT se puede calcular de manera eficiente en la GPU. Ver siftGPU.

4

Desarrollar tales marcadores requiere que tenga un conocimiento profundo del procesamiento de imágenes, imágenes en 3D, seguimiento, etc. No es como desarrollar una aplicación simple.

es mejor utilizar los desarrollados;)

HELECHOS es mucho eficiente y más simple que cribar. Puedes usarlo. Fue desarrollado por investigaciones en EPFL. Si lees los documentos de AR/Tracking, verás que estos tipos son los líderes de la industria/campo. También se lleva a cabo en versiones posteriores de OpenCV (creo que en 2.1 o 2.2?)

lo contrario, siempre se puede obtener el código fuente para que el algoritmo de aquí: Ferns: Planar Object Detection

EDIT:

Básicamente, los algoritmos como FERNS le indicarán la posición/rotación, etc. (esto es, los cambios están representados por una matriz llamada Homografía) una cierta superficie tomará con referencia a otro marco. Esta Homografía es todo lo que necesita para renderizar en 3D;)

Usando librerías 3D OpenGL o similares, dibuja el objeto usando la Homografía calculada. Si repites este proceso para cada cuadro, tendrás una aplicación AR simple.

Theory Libros en: Image Processing y 3D Imaging

para la comprensión de lectura AR: ARToolKit paper

Más sobre HELECHOS: oezuysal'site

+1

oh gracias mucho. pero todavía no entiendo todo el proceso de la realidad aumentada. ¿Tiene algún artículo en profundidad sobre la implementación de la realidad aumentada? – aaronljx

+0

Agregado algunos enlaces;) – nacho4d

+0

muchas gracias por la información. Voy a mirar a través de ellos (: – aaronljx

4

SIFT es un buen algoritmo pero no se puede obtener la mejor spped de ella.Hay métodos que usan FAST para la detección y luego construyen un descriptor SIFT reducido de los puntos detectados (en lugar de 128 valores que usan, por ejemplo, 32). También se desarrollaron enfoques piramidales para FAST (usted tiene ORB, pero sus descriptores no son lo suficientemente buenos).

Ahora OpenCV acaba de lanzar FREAK y prometen que es el más rápido y robusto, así que lo intentaré pronto. Puede echar un vistazo a este tipo de tutorial para la realidad aumentada en OpenCV.

Cuestiones relacionadas