2010-02-10 17 views
9

Para mi trabajo, he estado usando una versión Java de ARToolkit (NyARTookit). Hasta ahora, ha demostrado ser lo suficientemente bueno para nuestras necesidades, pero mi jefe está empezando a querer que el marco se transfiera a otras plataformas, como la web (Flash, etc.) y los móviles. Si bien supongo que podría usar otros puertos, cada vez me molesta más no saber cómo funciona el kit y más allá de eso, por algunas limitaciones. Más adelante, también tendré que ampliar las capacidades del kit para agregar cosas como la interacción (botones virtuales en las tarjetas, etc.) que, por lo que he visto en NyARToolkit, no son compatibles.¿Cómo funciona un algoritmo de realidad aumentada basado en marcador (como el de ARToolkit)?

Básicamente, necesito reemplazar ARToolkit con un detector de marca personalizado (y en el caso de NyARToolkit, trate de deshacerse de JMF y utilizar una mejor solución a través de JNI). Sin embargo, no sé cómo funcionan estos detectores. Sé sobre gráficos en 3D y he construido un buen marco al respecto, pero necesito saber cómo construir la tecnología subyacente :-).

¿Alguien sabe alguna fuente sobre cómo implementar desde cero una aplicación de realidad aumentada basada en marcadores? Al buscar en google solo encuentro "aplicaciones" de AR, no los algoritmos subyacentes: - /.

+0

Buscar "visión por computadora". Básicamente, es solo un montón de álgebra lineal. –

Respuesta

10

'Desde cero' es un término relativo. Hacerlo desde el principio, sin usar ningún código de visión preexistente, sería muy doloroso y no harías un mejor trabajo que la comunidad de visión por computadora completa.

Sin embargo, si desea hacer AR con el código de visión existente, esto es más razonable. Las subtareas esenciales son:

  1. Busque los marcadores en su imagen o video.
  2. Asegúrate de que sean los que quieres.
  3. Averigüe cómo están orientados en relación con la cámara.

La primera tarea es la localización del punto clave. Las técnicas para esto incluyen la detección de punto clave SIFT, el detector de esquina Harris y otros. Algunos de estos tienen implementaciones de código abierto, creo que OpenCV tiene el detector de esquina Harris en la función GoodFeaturesToTrack.

La segunda tarea es hacer descriptores de región. Las técnicas para esto incluyen descriptores SIFT, descriptores HOG y muchos otros. Debería haber una implementación de código abierto de uno de estos en alguna parte.

La tercera tarea también se realiza mediante localizadores de punto clave. Lo ideal es que quieras una transformación afín, ya que esto te dirá cómo está sentado el marcador en 3 espacios. El detector afín de Harris debería funcionar para esto. Para obtener más detalles, vaya aquí: http://en.wikipedia.org/wiki/Harris_affine_region_detector

+1

Gracias por las referencias. No estoy buscando hacer un mejor trabajo que toda la comunidad de visión por computadora, solo estoy buscando implementar el subconjunto requerido para la tarea particular de encontrar los marcadores :-). Sin embargo, lo que necesito saber es cómo funciona cada pieza, desde el paso de tener un mapa de bits con el marco hasta la construcción de la matriz de transformación utilizada para colocar objetos 3D. En detalle :-) Básicamente: 1. Obtenga la imagen de la cámara 2. convertirla a RGB o algún otro formato procesable 3. ??? N. Usa la matriz de transformación. Necesito saber exactamente los pasos 3..N-1 :-) –

+0

Sugiero comprar el libro O'Reilly OpenCV. – forefinger

+0

¿explica los algoritmos o solo la API? –

Cuestiones relacionadas