2012-09-05 19 views
87

Estoy desarrollando un SDK de Realidad Aumentada en OpenCV. Tuve algunos problemas para encontrar tutoriales sobre el tema, qué pasos seguir, posibles algoritmos, codificación rápida y eficiente para el rendimiento en tiempo real, etc.SDK de Realidad Aumentada con OpenCV

Hasta ahora he reunido la siguiente información y enlaces útiles.

instalación OpenCV

Descargar latest release version.

Puede encontrar guías de instalación here (plataformas: linux, mac, windows, java, android, iOS).

En línea documentation.

Realidad Aumentada

para principiantes here es un simple código de realidad aumentada en OpenCV. Es un buen comienzo.

Para cualquiera que busque un kit de desarrollo de software bien diseñado, encontré algunos pasos generales que debería tener cada realidad aumentada basada en el seguimiento de marcadores, teniendo en cuenta las funciones de OpenCV.

  1. programa principal: crea todas las clases, inicialización, capture fotogramas de vídeo.

  2. Clase AR_Engine: Controla las partes de una aplicación de realidad aumentada. Debe haber 2 estados principales:

    • detección: intenta detectar el marcador en la escena
    • seguimiento: una vez que se detecta, los usos más bajos técnicas computacionales para traking el marcador en los próximos marcos.

También debe haber algunos algoritmos para encontrar la posición y la orientación de la cámara en cada fotograma. Esto se consigue detectando la transformación de homografía entre el marcador detectado en la escena y una imagen 2D del marcador que hemos procesado fuera de línea. La explicación de este método here (página 18). Los pasos principales para las estimaciones Pose son: Cámara

  1. carga intrínseca Parámetros. Calibración fuera de línea extraída previamente. intrinsic parameters

  2. Cargar el patrón (marcador) para rastrear: Es una imagen del marcador plana vamos a realizar un seguimiento. Es necesario extraer características y generar descriptores (keypoints) para este patrón, de modo que más tarde podamos compararlo con las características de la escena.Algoritmos para esta tarea:

  3. Para cada actualización marco, ejecute un algoritmo de detección de características de extracción de la escena y generan descriptores. Nuevamente tenemos varias opciones.

    • SIFT
    • RÁPIDO
    • SURF
    • FREAK: Un nuevo método (2012) supossed ser el más rápido.
    • ORB
  4. Encuentra partidos entre el patrón y los descriptores de escena.

  5. Encuentra Homography matriz a partir de esos partidos. RANSAC se puede utilizar antes para encontrar inliers/outliers en el conjunto de coincidencias.

  6. Extracto Cámara Pose de homography.

ejemplos completos:

+1

Lamentablemente, esto no es "constructivo", ¿está buscando sugerencias? – bfavaretto

+3

En cuanto a la tarea de instalación, ahora OpenCV ha migrado a GIT, por lo que para descargar el código cource es necesario hacer un "git clone git: //code.opencv.org/opencv.git". –

+11

47 Votos ascendentes pero cerrados debido a reglas tontas. – SvaLopLop

Respuesta

19

Desde aplicaciones de RA a menudo se ejecutan en dispositivos móviles, usted podría considerar también otras características del detector/descriptor:

+3

¡Gracias! También hay una versión "rápida" de FAST que se ejecuta en tiempo real en móviles, es piramidal y las descripciones SIFT son reducidas –

+2

Tengo resultados casi perfectos usando ORB – dynamic

+0

En realidad, leyendo sobre ORB dice que es FAST en las pirámides –

13

En general, si se puede elegir los marcadores que primero detectar un objetivo cuadrado usando un detector de bordes y luego o bien Hough o simplemente contornos - a continuación, identifican el marcador particular a partir del diseño interior. En lugar de utilizar un matcher de puntos general.

Eche un vistazo a Aruco para obtener un código de ejemplo bien escrito.

+4

Sí, el enfoque fiducial es el más simple, pero no está del todo actualizado. Creo que ahora uno debería apuntar a marcadores texturizados. Gracias. El ejemplo es muy interesante ya que está bien explicado. –

+1

Si desea conocer la pose, debe hacer coincidir la posición 3D de las entidades de marcador con las coordenadas de imagen correspondientes. Los objetivos con forma regular lo hacen más fácil pero no necesitan ser planos –

+0

Pero si no son planos, necesita el modelo 3d o un modelo CAD, de lo contrario la homografía de 2d a 3d ya no es un método válido, es ¿eso? Me refiero a la Transformada Lineal Directa utilizada en la findhomography –

Cuestiones relacionadas