Story Transcript
Codificación de vídeo 3D: un caso práctico Antonio Jesús Díaz Honrubia
Índice Introducción Tecnologías de vídeo 3D Dispositivos de captura 3D Dispositivos de visualización 3D Codificación de Vídeo Multivista (MVC) Caso práctico: transmisión de vídeo 3D en tiempo real
1
Codificación de vídeo 3D: un caso práctico
07/07/2014
Índice Introducción Tecnologías de vídeo 3D Dispositivos de captura 3D Dispositivos de visualización 3D Codificación de Vídeo Multivista (MVC) Caso práctico: transmisión de vídeo 3D en tiempo real
2
Codificación de vídeo 3D: un caso práctico
07/07/2014
Introducción ¿Qué nos permite a los humanos tener la sensación de profundidad?
La diferencia entre las imágenes captadas por cada ojo (paralaje).
Las pequeñas diferencias horizontales son las “culpables” de la sensación de 3D.
Pequeñas diferencias verticales no se aprecian. Grandes diferencias verticales u horizontales producirían imágenes borrosas. Ojo izquierdo
3
Ojo derecho
Codificación de vídeo 3D: un caso práctico
07/07/2014
Introducción ¿Todo nuestro campo de visión es 3D?
Imposible: lo que no vean ambos ojos, no lo veremos con la sensación 3D. Zona 3D
¿A partir de qué distancia percibimos la sensación de 3D?
4
Ángulo de visión de 30º. Separación media entre los ojos de 6,2 cm.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Introducción 30º
x cm
tg (75º) = x / 3,1
30º 75º
x = 3,1 · tg (75º) = 3,1 · 3,73 = 11,6 cm
3,1 cm
La sensación de 3D se produce sólo a partir de 11,6 cm.
A partir de ese punto, se forma un cono de visión 3D de 30º.
Cuando las distancias son muy grandes, no se aprecian las diferencias y la sensación 3D tiende a desaparecer.
5
Codificación de vídeo 3D: un caso práctico
07/07/2014
Introducción ¿Cómo podemos crear efecto 3D al ver una película?
6
Enseñando una imagen distinta a cada ojo. Se hacen necesarios los siguientes elementos:
Cámaras que graben más de una vista.
Dispositivos de visualización que muestren cada vista a cada ojo.
Forma de encapsular las distintas vistas en un flujo.
Codificadores que trabajen mucho más rápido.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Introducción Lo ponemos en práctica.
Abrir los ficheros cafe_c_2.yuv, cafe_c_3.yuv y cafe_c_4.yuv y observar las diferencias. Pertenecen a una serie de vídeos captados con un array de cámaras (vídeo multivista).
7
Ojo, son ficheros de vídeo sin comprimir: observa su tamaño.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Índice Introducción Tecnologías de vídeo 3D Dispositivos de captura 3D Dispositivos de visualización 3D Codificación de Vídeo Multivista (MVC) Caso práctico: transmisión de vídeo 3D en tiempo real
8
Codificación de vídeo 3D: un caso práctico
07/07/2014
Tecnologías de vídeo 3D
Vídeo estéreo: se codifican 2 señales de vídeo.
Técnicas para comprimir video estéreo con codificadores 2D: 9
Side-by-side. Top-bottom. Checkerboard. Frames alternos. Filas o columnas alternas. Codificación de vídeo 3D: un caso práctico
07/07/2014
Tecnologías de vídeo 3D
Lo ponemos en práctica.
Abrir el fichero de código fuente SideBySide.c. Completar el código necesario para que dadas dos vistas, obtener la versión side-by-side de ambas.
Hay que submuestrear la imagen a la mitad en dirección horizontal. Dos opciones:
10
Descartar una columnas alternas. En lugar de descartar columnas, realizar la media entre dos columnas (menos pérdida de información).
Multiplexar dos de las vistas consecutivas de la secuencia Cafe. Codificación de vídeo 3D: un caso práctico
07/07/2014
Tecnologías de vídeo 3D
Vídeo multivista: se codifican más de 2 señales de vídeo.
Problema: gran cantidad de información a codificar. Mucho mayor cantidad de fotogramas por segundo.
11
Son necesarios codificadores mucho más rápidos.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Tecnologías de vídeo 3D
Vídeo con profundidad: usa una vista de vídeo y la profundidad de cada píxel.
12
Códec 2D para la vista. Nuevo códec para los mapas de profundidad. Problema: no pueden verse píxeles ocultos.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Tecnologías de vídeo 3D
Vídeo multivista con profundidad: varias vistas de vídeo, cada una con su mapa de profundidad.
Permite renderizar vistas continuas.
13
Punto de vista libre.
Combina las ventajas y desventajas de los modelos anteriores. Codificación de vídeo 3D: un caso práctico
07/07/2014
Tecnologías de vídeo 3D
Vídeo con profundidad por capas. Puede generarse a partir del modelo anterior. Incluye:
14
Capa principal de vídeo.
Su mapa de profundidad.
Capa de vídeo de fondo oculto.
Mapa de profundidad de ésta.
También permite renderizar vistas continuas. Resuelve el problema de los píxeles ocultos. Nuevos problemas:
Extraer el fondo.
Formato más propenso a errores. Codificación de vídeo 3D: un caso práctico
07/07/2014
Tecnologías de vídeo 3D
Vídeo estéreo con profundidad por capas. Igual al anterior, pero con información para 2 vistas completas.
Mejora los errores que produce el vídeo con profundidad por capas. Sin embargo, mantiene su principal inconveniente:
15
Total de 8 capas.
Extraer el fondo.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Índice
Introducción Tecnologías de vídeo 3D Dispositivos de captura 3D Dispositivos de visualización 3D Codificación de Vídeo Multivista (MVC) Caso práctico: transmisión de vídeo 3D en tiempo real
16
Codificación de vídeo 3D: un caso práctico
07/07/2014
Dispositivos de captura 3D
Cámaras con doble objetivo.
Utilizadas para vídeo estéreo. Objetivos separados igual que los ojos.
17
Codificación de vídeo 3D: un caso práctico
07/07/2014
Dispositivos de captura 3D
Array de cámaras calibradas conjuntamente.
Utilizadas para vídeo multivista. Complejo proceso de calibrado.
No existen dispositivos específicos para capturar mapas de profundidad. 18
Éstos pueden obtenerse a partir de dos vistas. Codificación de vídeo 3D: un caso práctico
07/07/2014
Índice
Introducción Tecnologías de vídeo 3D Dispositivos de captura 3D Dispositivos de visualización 3D Codificación de Vídeo Multivista (MVC) Caso práctico: transmisión de vídeo 3D en tiempo real
19
Codificación de vídeo 3D: un caso práctico
07/07/2014
Dispositivos de visualización 3D
Existen 3 tipos básicos distintos para la visualización en 3D:
20
Dispositivos con gafas pasivas. Dispositivos con gafas activas. Dispositivos autoestereoscópicos (sin gafas).
Codificación de vídeo 3D: un caso práctico
07/07/2014
Dispositivos de visualización 3D
Dispositivos con gafas pasivas.
21
Se basan en el uso de filtros. A este grupo pertenecen las típicas gafas anaglifo.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Dispositivos de visualización 3D
Sistemas más sofisticados se basan en la polarización de las ondas electromagnéticas de la luz.
Unas ondas se emiten con polarización horizontal y otras con polarización vertical.
Los dispositivos suelen mostrar las dos imágenes a la vez.
22
Alternan filas o columnas de cada vista. Las gafas filtran la luz no correspondiente a cada ojo. Problema: depende en gran medida de la posición.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Dispositivos de visualización 3D
Dispositivos con gafas activas.
El dispositivo muestra alternativamente un fotograma de cada vista.
Cada cristal de las gafas tiene una pantalla LCD. Esta pantalla se oscurece alternativamente según el frame mostrado actualmente.
Al ser frecuencias de parpadeo grandes, el ojo no “deja de ver” nunca. Sin embargo, sí que se produce un efecto de oscurecimiento de la imagen.
Este sistema elimina la dependencia de la posición del espectador.
23
Problema: hay que reproducir el doble de fotogramas por segundo.
Sin embargo, las gafas son mucho más caras.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Dispositivos de visualización 3D
Dispositivos autoestereoscópicos.
Eliminan la necesidad de utilizar gafas. La imagen visualizada depende de la posición.
Gran problema: tecnología poco madura.
24
Se utilizan técnicas de paralaje. Punto de vista libre.
En la práctica hay que observar desde puntos muy concretos. La mayoría de las veces se mezclan imágenes. Puede llegar a producir mareos.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Índice
Introducción Tecnologías de vídeo 3D Dispositivos de captura 3D Dispositivos de visualización 3D Codificación de Vídeo Multivista (MVC) Caso práctico: transmisión de vídeo 3D en tiempo real
25
Codificación de vídeo 3D: un caso práctico
07/07/2014
Codificación de vídeo 3D
En la codificación tradicional de vídeo unos frames referencian a otros para aprovechar la redundancia temporal.
Los frames P y B se codifican diferencialmente respecto a otros frames.
26
Muchos ceros implican grandes tasas de compresión gracias al codificador de entropía. Codificación de vídeo 3D: un caso práctico
07/07/2014
Codificación de vídeo 3D
Parece lógico pensar, que diferentes vistas tengan también mucha redundancia (espacial en este caso).
27
Aparecen las llamadas referencias “intervista”. Cada vista, además de referencias a sí misma, puede referenciar frames de otras vistas. t1
t2
t3
Vista 1
F1,1
F1,2
F1,3
Vista 2
F2,1
F2,2
F2,3
Vista 3
F3,1
F3,2
F3,3
Problema: excesivo número de referencias. Codificación de vídeo 3D: un caso práctico
07/07/2014
Codificación de vídeo 3D
Sólo se permiten referencias intervista dentro del mismo punto temporal.
28
Algunos estudios demuestran que las referencias intervista a otros momentos temporales no aportan mucho. Además sólo se permite referenciar una única vista.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Codificación de vídeo 3D
Esta estructura permite dotar al vídeo de escalabilidad.
29
Codificación de vídeo 3D: un caso práctico
07/07/2014
Codificación de vídeo 3D
Lo ponemos en práctica.
Codifica con FFmpeg el fichero que antes has multiplexado en side-by-side.
Abre el fichero codificado con el reproductor Bino.
Instálalo en tu ordenador si no lo está.
Selecciona:
30
ffmpeg.exe -s 1920x1080 -r 15 -i cafe.yuv cafe.mkv -vcodec h264
Input: Left/right, half width. Output: Even/odd rows. Utiliza las gafas pasivas de los monitores del laboratorio.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Índice
Introducción Tecnologías de vídeo 3D Dispositivos de captura 3D Dispositivos de visualización 3D Codificación de Vídeo Multivista (MVC) Caso práctico: transmisión de vídeo 3D en tiempo real
31
Codificación de vídeo 3D: un caso práctico
07/07/2014
Caso práctico
En los últimos años se ha trabajado en un proyecto junto con importantes empresas del sector.
Este proyecto ha consistido en el desarrollo de un sistema completo de transmisión de vídeo 3D en tiempo real.
32
Captura. Codificación. Transmisión. Decodificación. Visualización. Codificación de vídeo 3D: un caso práctico
07/07/2014
Caso práctico
Captura.
Se ha utilizado una cámara 3D con dos objetivos.
El vídeo es directamente trasmitido vía HDMI a un equipo que incorpora una tarjeta de captura y una GPU nVidia GTX 560-Ti.
33
Codificación de vídeo 3D: un caso práctico
07/07/2014
Caso práctico
Codificación.
Este equipo codifica el vídeo usando H.264/MVC. Concretamente se utiliza el software x264 con una ampliación para MVC.
Transmisión.
Conforme se codifica el vídeo, el flujo resultante se transmite en tiempo real. En el caso del prototipo diseñado se transmite en una red local usando UDP.
34
Sin embargo, puede adaptarse al medio necesario (satélite en el caso de empresas de transmisión en tiempo real).
Codificación de vídeo 3D: un caso práctico
07/07/2014
Caso práctico
Decodificación.
Conforme el vídeo se recibe en el cliente, éste lo decodifica. Para ello usa FFmpeg (decodificador de VLC), igualmente extendido para decodificar MVC.
Visualización.
35
El flujo decodificado se transmite a un cañón 3D a través de HDMI. El cañón puede verse con gafas 3D activas.
Codificación de vídeo 3D: un caso práctico
07/07/2014
Caso práctico
Escenario competo.
Coste aproximado del prototipo: 3.840€. Coste del sistema utilizado por las empresas hasta el momento: 60.000€. Codificador
Cámara HDMI
Medio de transmisión HDMI
Proyector
36
Decodificador
Codificación de vídeo 3D: un caso práctico
07/07/2014
¡Muchas gracias! ¿Preguntas?