miércoles, 2 de mayo de 2018

Anaglifos 3D con R

El anaglifo es un método de codificación de información tridimensional en una única imagen, mediante la superposición de dos imágenes obtenidas con puntos de vista ligeramente diferentes. Estas dos imágenes corresponden a lo que vería cada uno de nuestros ojos frente a la escena real.

Que llegue a cada ojo exclusivamente lo que éste debería ver se logra en los anaglifos mediante unas gafas con filtros de color, típicamente rojo (ojo izquierdo) y cián (ojo derecho). Será nuestro cerebro el que reconstruya la percepción de estar viendo en tres dimensiones.



El principal problema de los anaglifos es de reproducción del color, inherente al filtrado cromático que realizan las gafas. Resulta complicado mantener la fidelidad del color cuando cada uno de nuestros ojos va a recibir solo una parte del espectro.

Existen otros métodos de hacer llegar a cada ojo una de las dos imágenes origen sin acudir a filtros de color. En las salas comerciales de cine 3D se usa luz polarizada de modo que cada ojo ve la información espectral completa que le corresponde.

De forma más rudimentaria se lograba el mismo resultado con los estereoscopios mecánicos de principios del siglo pasado, reeditados por Google con sus gafas 3D 'Google Cardboard', acoplables a un móvil con aplicaciones de pantalla partida para recrear una visión tridimensional.

Fuente: North Carolina Collection (UNC) / Google Cardboard


La ventaja de los anaglifos es poder visualizarse en cualquier tipo de pantalla estándar a color, desde un televisor a un smartphone, sin necesidad de ningún artilugio ni aplicación especial más que unas baratísimas gafas anaglifas.

Si tienes un par de estas gafas (recomendables las planas de cartón porque las de plástico curvo pueden producir fuertes aberraciones), podrás ver perfectamente diferenciados los planos en la versión anaglifa de esta imagen estéreo de 1901 (hacer clic para verlas a mayor resolución).


Fuente: Wikipedia


La construcción de un anaglifo digital es sencilla, basta disponer de dos imágenes obtenidas desplazando la cámara (real o virtual) la distancia equivalente a la separación de los ojos. Cuanto más pequeña sea la separación menos acusado será el efecto 3D, pero si es excesiva el cerebro no será capaz de fundir las dos imágenes.



Además deberemos elegir el alineamiento horizontal relativo entre las dos imágenes fuente. Si solapamos objetos del primer plano los lejanos divergerán mucho y viceversa. En la imagen anterior ese punto de solape correspondería con el centro del tablero de cuadros.

Aunque no he podido constatarlo, intuitivamente parece razonable pensar que el objeto que alineemos (y que por tanto veremos exactamente en la misma posición con ambos ojos en el anaglifo), se puede interpretar físicamente como el lugar de la escena sobre el que hubiéramos fijado la mirada.

Escogido lo anterior, el único dilema es cómo codificar los canales RGB de las dos imágenes de partida en una misma imagen final, pues ni los dispositivos de visualización (pantallas) ni las gafas que podamos encontrar, tienen una respuesta espectral perfecta.

Lo habitual es construir el canal R del anaglifo con el canal R de la imagen correspondiente al ojo izquierdo, y plasmar en los canales G y B del anaglifo sendos canales de la imagen correspondiente al ojo derecho. En general habrá cierta interferencia cruzada entre ojos, especialmente de la imagen derecha sobre nuestro ojo izquierdo, más o menos notoria en función de la sintonía que exista entre las gafas y la pantalla de visualización usadas.

~~~

Renunciando al color original, dado lo sintéticos y por tanto difíciles de reproducir que resultaban los tonos, he creado una versión anaglifa del 'JuggleR'. Para compensar la menor luminosidad recibida por el ojo izquierdo asociado al canal R, y a la vez reducir algo la interferencia en dicho ojo de los canales G y B, se aplica una compensación gamma al canal R.

El anaglifo puede encontrarse como animación en amigajuggleranaglifo.mp4 y en GIF de alta resolución haciendo clic sobre la imagen. No termino de entender el motivo, pero la versión MP4 genera claramente más interferencia que los GIF animados.



A continuación he hecho una animación con esferas saltarinas que saca más partido del anagflifo. Estos cuerpos viven en un universo paralelo donde la gravedad cambia arbitrariamente según la posición, lo que les permite dar saltos de diferentes alturas pero igual duración, algo imposible en nuestra realidad.

La animación original en color y con sonido puede verse en esferas.mp4 y su anaglifo monocromo en esferasanaglifo.mp4. La versión en GIF animado en alta resolución puede verse haciendo clic en la imagen, aunque los GIF no soportan los 60 fps en que está hecha esta animación por lo que se reproducen más lentos.



Y tras el empacho de imágenes sintéticas un bodegón improvisado. Dos fotos hechas con el móvil nos bastan para tener un anaglifo, esta vez en color. El tono cálido es deliberado pues las gafas van a penalizar los rojos. Con más resolución haciendo clic sobre la imagen.



Es interesante ver el conflicto que surge en el pecho rojo del robot y en la cabina del planeador: resultan muy luminosos para un ojo al tiempo que casi negros para el otro. El resultado percibido resulta desconcertante. Ya comentábamos los problemas de los anaglifos con el color, acentuados en sujetos donde haya intensos colores rojos o azules.

En la elección del alineamiento se escogió un punto intermedio, el busto de Mazinger Z. Puede verse como así el exprimidor del fondo y la manzana de primer plano se separan en medidas razonables.




Para terminar un anaglifo especialmente afortuado. Visto sin las gafas posiblemente ni se entienda pero con ellas resulta espectacular.

Fuente: Federica Martis

~~~

En el artículo Anaglyph Methods Comparison, Peter Wimmer hace un repaso exhaustivo de varios métodos para generar anaglifos incluyendo las correspondientes definiciones matemáticas. Y en la página A new twist: on-the-fly anaglyphs de raphik puede generarse un anaglifo para los métodos descritos con tan solo suministrar un enlace a una imagen estereoscópica válida.

Repositorio con el código R y archivos auxiliares: GitHub

2 comentarios:

  1. Gracias por tu artículo.

    Rivalidad cromática e imagen fantasma son los verdaderos tendones de Aquiles de los anaglifos.

    La construcción de un mecanismo codificador-decodificador basado en los canales rojo y cian que mantenga un cierto equilibrio tolerable entre rivalidad cromática e imágenes fantasma ha sido y es materia de estudio.

    Después de haber leído algunos artículos sobre el tema, he construido un par de aplicaciones que permiten comparar visualmente los distintos métodos para calcular anaglifos.

    https://raphikwashere.github.io/anaglyph-method-comparison/
    https://raphikwashere.github.io/optimized-vs-lineal-projection-methods/

    Las aplicaciones confían al navegador de Internet el randerizado "al vuelo" del anaglifo a partir de un par estereoscópico.

    Saludos cordiales.

    ResponderEliminar
    Respuestas
    1. Gracias raphik, la página de Peter Wimmer la conocía, en su día dejé pendiente probar todos los métodos. La enlazo y añado link a tu applet para generar anaglifos online. Salu2!

      Eliminar

Por claridad del blog, por favor trata de utilizar una sintaxis lo más correcta posible y no abusar del uso de emoticonos, mayúsculas y similares.