domingo, 11 de agosto de 2024

Anaglifos de un mapa de elevación con R

En 'Proyección de sombras sobre un DEM con R' partiendo de un mapa de elevaciones obteníamos una visión pseudo 3D coloreada de su hillshade, añadiéndole además una proyección de sombras. Le vamos a dar una nueva vuelta de tuerca para construir, con el mismo método de slicing que usamos en aquella ocasión, un anaglifo que permita percibir de forma real el relieve 3D del mapa.

Como habitualmente, empezamos por obtener el hillshade base (para una iluminación con dirección Este) a partir de un DEM de Tenerife con resolución de 25m descargado del Centro Nacional de Información Geográfica:



A continuación coloreamos este hillshade con curvas en Photoshop, pero basando los colores en el propio DEM con lo que tenemos un coloreado en función de la altitud en cada punto del mapa:



Usando las rutinas que definimos en 'Proyección de sombras sobre un DEM con R', añadimos una proyección de sombras acorde a la dirección de iluminación que definió el hillshade:



Ahora necesitamos una vista diferenciada para cada ojo. Utilizamos la misma técnica de slicing pseudo 3D del mapa del artículo original, pero aplicada en lugar de en vertical hacia arriba como en aquella ocasión, hacia la derecha (visión del ojo izquierdo) y hacia la izquierda (visión del ojo derecho). Se entiende mejor el método con la siguiente animación:



En esta animación podemos ver que, tal y como se han definido las imágenes parciales que se proyectarán sobre cada ojo, ambos verán las partes de la isla al nivel del mar (altitud=0) situadas exactamente en la misma posición, desplazándose hacia derecha o izquierda y proporcionalmente a su elevación el resto de zonas. Esto tendrá como consecuencia que en el anaglifo final percibiremos las orillas de la isla alineadas con el plano de la pantalla, "sobresaliendo" los accidentes geográficos hacia nosotros.

~~~

Construimos el anaglifo en color siguiendo el esquema de mapear el canal R de la imagen destinada al ojo izquierdo (r1) sobre el canal R del anaglifo (ra), y los canales G y B de la imagen destinada al ojo derecho (g2, b2) sobre los respectivos canales del anaglifo (ga, ba). Se trata del método de color básico explicado aquí:

Fuente: Peter Wimmer


Hecho esto tenemos una imagen incomprensible si se observa a simple vista, pero con un fuerte efecto 3D si se mira con unas gafas rojo/cian que quizá tengas por algún cajón:



Aquí el anaglifo final de Tenerife, y un recorte al 100% centrado en la zona del Teide que muestra toda la resolución del mapa de elevaciones original (hacer clic para verlos a máxima resolución y dejar unos segundos que la vista se adapte al efecto 3D):



~~~

Tras la versión coloreada y con sombras ahora construimos un anaglifo monocromo sin proyección de sombras que, siendo menos vistoso, recrea con más agudeza el relieve 3D del terreno. Mapeamos la luminancia de la imagen destinada al ojo izquierdo (L1) sobre el canal R del anaglifo (ra), y la luminancia de la imagen destinada al ojo derecho (L2) sobre los canales G y B del anaglifo (ga, ba):

Fuente: Peter Wimmer


Anaglifo monocromo de Tenerife y recorte al 100% centrado en la zona del Teide (hacer clic para verlos a máxima resolución y dejar unos segundos que la vista se adapte al efecto 3D):



~~~

Si nos fijamos veremos que se pueden seguir con el dedo los relieves "salientes" de la pantalla, e incluso situarlos en el espacio con cierta separación respecto al monitor. Es una muestra de la capacidad de estimar distancias de nuestro sistema visual gracias a su visión estereoscópica. Se ha exagerado el relieve de Tenerife muy por encima del real, buscando un efecto 3D más acusado.

Invertir el color de los cristales (es decir girar las gafas para que el rojo caiga en el ojo derecho), tiene un resultado curioso: veremos el relieve "hundido" hacia el interior de la pantalla. En la versión color este efecto no funciona igual de bien porque las sombras proyectadas pierden su coherencia.

Repositorio con el código R: GitHub.

No hay comentarios:

Publicar un comentario

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.