domingo, 17 de enero de 2021

Mapas de color 'viridis' en Photoshop con R

En entornos de analítica, modelado y simulación como R, Python o Matlab, se han hecho populares los mapas de color 'viridis', originarios de la librería Matplotlib de Python. Son secuencias de color diseñadas para resultar perceptualmente uniformes, es decir que los saltos de un tono al siguiente sigan incrementos lineales (ΔE constante), tanto en color como en sus conversiones a blanco y negro, algo muy útil al imprimir sin color. Además resultan fáciles de interpretar para personas con deficiencias en la percepción cromática (daltonismo,...).

El paquete viridis de R incluye cinco mapas perceptualmente uniformes denominados: 'magma', 'inferno', 'plasma', 'viridis' y 'cividis'. He extraído muestras de los valores RGB que definen cada uno de ellos construyendo curvas de Photoshop, que pueden resultar útiles para colorear imágenes desde el programa de Adobe si se está maquetando alguna visualización compleja y los datos de partida son en escala de grises. La función writePhotoshopACVcurve() del código puede reutilizarse para construir cualquier tipo de curva arbitraria aplicable desde Photoshop.

Aquí puede verse el resultado de aplicar cada una de las curvas a un degradado uniforme monocromo con niveles en el rango [0..255]:



Cada curva calculada se compone de 16 puntos, el máximo admisible por Photoshop, y tienen la siguiente forma (se muestran con muchos más puntos para visualizar los originales con precisión):



Por el mismo precio obtenemos las curvas de los cinco mapas de color incluidos en R: 'rainbow', 'heat.colors', 'terrain.colors', 'topo.colors' y 'cm.colors', añadiendo como bonus el desmitificado 'Jet' de Matlab que a unos cuantos nos acompañó en la universidad:



En la definición puede intuirse la baja sofisticación que hace estos mapas de color poco inspiradores:



Además resultan difíciles de implementar por sus discontinuidades, ya que las curvas de Photoshop son splines cúbicas, incapaces de realizar cambios abruptos de pendiente:


~~~

Para terminar unos ejemplos. Con el mapa de colores 'magma' se resaltan de forma más intuitiva las distintas cotas de un relieve de la Sierra Norte madrileña. Se incluye una impresión 3D de la misma zona para contrastar:


Fuente: impresión 3D propia


Aquí coloreamos una simulación de propagación de rayos X a través de dos rendijas con el mapa 'inferno':

Fuente: Wikipedia


Por último una simulación de propagación del calor en una resistencia, mostrando la temperatura en cada punto con los degradados 'magma', 'viridis' y 'Jet':


~~~

Siendo Photoshop un entorno con gestión de color, lo correcto es aplicar estas curvas RGB con la escala de grises asignada al espacio de color sRGB. Hacerlo sobre espacios más amplios como Adobe RGB o ProPhoto RGB dará lugar a mayores saturaciones de color, que fácilmente sobrepasarán las capacidades de la pantalla generando banding visible en los degradados.

Repositorio con el código R y las curvas ACV de Photoshop: 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.