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.
Hasta ahora he recopilado la siguiente información y enlaces útiles.
Instalación de OpenCV
Descargue la última versión de lanzamiento .
Puede encontrar guías de instalación aquí (plataformas: linux, mac, windows, java, android, iOS).
Documentación en línea .
Realidad aumentada
Para los principiantes, aquí hay un código simple de realidad aumentada en OpenCV. Es un buen comienzo.
Para cualquiera que busque un SDK de vanguardia bien diseñado, encontré algunos pasos generales que toda realidad aumentada basada en el seguimiento de marcadores debería tener, considerando las funciones de OpenCV.
Programa principal: crea todas las clases, inicialización, captura de cuadros de video.
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, utiliza técnicas de cálculo inferiores para rastrear el marcador en los siguientes fotogramas.
También debería haber algunos algoritmos para encontrar la posición y orientación de la cámara en cada cuadro. 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 offline. La explicación de este método aquí (página 18). Los pasos principales para las estimaciones de pose son:
Cargar parámetros intrínsecos de la cámara . Extraído previamente fuera de línea mediante calibración.
Cargar el patrón (marcador) a rastrear: Es una imagen del marcador plano que vamos a rastrear. Es necesario extraer características y generar descriptores ( puntos clave ) para este patrón para que luego podamos comparar con características de la escena. Algoritmos para esta tarea:
Para cada actualización de cuadro, ejecute un algoritmo de detección para extraer características de la escena y generar descriptores. Nuevamente tenemos varias opciones.
Encuentra coincidencias entre el patrón y los descriptores de escena.
Encuentre la matriz de homografía de esas coincidencias. RANSAC se puede utilizar antes para encontrar inliers / outliers en el conjunto de coincidencias.
Extrae la postura de la cámara de la homografía.
- Código de muestra en Pose de Homografía .
- Código de muestra sobre homografía de Pose .