Red de conocimiento informático - Conocimiento informático - Cómo restaurar una escena 3D

Cómo restaurar una escena 3D

Estos son los pasos básicos, junto con la documentación de OpenCV sobre el uso de funciones específicas:

Corrección de la cámara para eliminar la distorsión. Dado que las lentes de las cámaras ya están deformadas en la fábrica, es necesario corregirlas antes de usarlas para obtener datos precisos. Un enfoque común es tomar varias fotografías de cada pose basándose en un tablero de ajedrez y luego calcular las entradas de la matriz de la cámara. La siguiente figura muestra una interfaz de calibración común.

La alineación o corrección de la imagen consiste en colocar dos cámaras en diferentes posiciones para que la escena que ven esté sesgada. La cámara izquierda ve la escena más a la izquierda y la cámara derecha ve la escena más a la derecha. El propósito de la alineación de imágenes es obtener la misma parte de la escena.

Las imágenes izquierda y derecha coinciden y corresponden. Puede utilizar OpenCV para obtener el mapa de diferencias.

Obtenga el mapa de profundidad a través de una función de reasignación, como cv::reprojectImageTo3D en OpenCV.

Un mapa de profundidad por sí solo no es suficiente, es solo un mapeo de la escena real en la cámara en un momento específico. Para obtener una escena 3D completa, necesitamos analizar una serie de mapas de profundidad.

¿Cómo reconstruye HoloLens una escena 3D a partir de múltiples mapas de profundidad?

La respuesta es SLAM (Localización y Mapeo Simultáneos). Esta tecnología se utiliza en sistemas de posicionamiento y localización de rutas para robots, vehículos sin conductor y vehículos aéreos no tripulados. La solución es una pregunta muy filosófica:

¿Dónde estoy ahora?

¿Dónde puedo ir?

Existen muchos métodos de implementación para SLAM. Entre ellos, hay un método de código abierto que implementa una gran cantidad de algoritmos de coincidencia y procesamiento de mapas de profundidad. Puede considerarse como una versión 3D de OpenCV.

Microsoft inventó el algoritmo Kinect Fushion en torno a los datos del mapa de profundidad de Kinect y publicó dos artículos:

KinectFusion: reconstrucción e interacción 3D en tiempo real utilizando cámaras de profundidad móviles;

p>

KinectFusion:

¿Por qué creo que HoloLens está relacionado con Kinect Fusion? La respuesta está en esta página. Shahram Izadi es investigador principal y director de investigación en Microsoft Research Cambridge, donde dirige el grupo de Tecnologías 3D interactivas, que respalda la investigación sobre varios productos de Microsoft, incluidos Kinect para Windows, Kinect Fusion y HoloLens. Kinect Fusion y HoloLens. (Por cierto, están contratando :)

Kinect Fushion funciona moviendo el dispositivo Kinect en la habitación, adquiriendo mapas de profundidad desde diferentes ángulos, iterando en tiempo real, acumulando diferentes pares de mapas de profundidad y calculando la habitación y el centro de la habitación. Modelos 3D precisos de objetos.

Se divide en cuatro etapas:

Conversión del formato del mapa de profundidad, la unidad de profundidad convertida son metros y se guarda como un número de punto flotante. Y calcule las coordenadas del vértice y el vector normal de la superficie.

Calcula la pose de la cámara (incluidas la posición y la orientación) en el sistema de coordenadas mundial y rastrea estos dos valores a través de un algoritmo de alineación iterativo para que el sistema siempre sepa cuánto ha cambiado la cámara actual. en comparación con la postura inicial.

La tercera etapa fusiona los datos de profundidad de la escena de conocimiento de pose en un único espacio LEGO tridimensional, que también puedes llamar espacio MineCraft, porque los elementos básicos de este espacio no son triángulos, sino cuadrados. Las escenas de MineCraft que aparecen con frecuencia en los vídeos de demostración pueden estar relacionadas con esta etapa.

Renderizado tridimensional basado en Raycasting, que consiste en emitir rayos desde la posición actual de la cámara para cruzar el espacio tridimensional. LEGO Space es especialmente útil para Raycasting, que utiliza octárboles para acelerar las operaciones de intersección de rayos.

Raycasting, raytracing y rasterización son tres métodos de renderizado comunes, por lo que no entraré en detalles aquí.

En la aplicación HoloLens ya hemos completado el tercer paso que es obtener el modelo LEGO 3D, y el cuarto paso no es necesario. Debido a que la pantalla HoloLens es transparente, no es necesario volver a renderizar el modelo de la casa, que ya ha sido renderizado por nuestros propios ojos.