¿Se puede usar el histograma RGB para valorar la saturación de una foto?

· 8 min read
¿Se puede usar el histograma RGB para valorar la saturación de una foto?

A raíz de este comentario  en el foro de OjoDigital, se me planteó esta duda.

¿Es posible mirando sólo el histograma de una imagen saber si una foto la hemos sobresaturado?

A mi nunca se me había ocurrido usar el histograma para valorar eso, y no lo creía muy posible.

Así que me he puesto manos a lo obra para tratar de comprobarlo: ¿cómo se modifica el histograma a medida que aumenta la saturación?
Para ello se me ocurre simplificar la imagen al máximo y empezar por un parche monocolor de colores primarios y comparar los histogramas variando únicamente la saturación entre ellos.

Con ese fin, he creado una imagen de fondo negro con un parche de color rojo puro y luminosidad media al que luego vaya variando la saturación.
Tomo como referencia el que sería un RGB (255,0,0) o #FF0000 (255 de rojo y el resto 0) que sería el rojo más puro (saturado) y luminoso posible.
En HSL ese color sería un color rojo saturado y de luminosidad media: H=0 S= 100% L= 50%.

Ésta sería la imagen y su histograma:

image
image

Lógicamente es un pico en el canal rojo en el valor más alto posible de rojo, aunque su luminosidad es intermedia.

Veamos ahora un rojo menos saturado, con saturación media y misma luminosidad, tomemos un valor H=0, S=50% , L= 50% lo que correspondería en RGB a (191,64,64) o #BF4040.
El valor de rojo baja algo y aparecen azul y verde en cantidades iguales, lógicamente, para mantener la luminosidad.
Veamos imagen e histograma.

image
image

Vemos lógicamente que en el histograma el pico del rojo se desplaza a la izda y aparecen otros dos picos en la misma posición en verde y azul (en la imagen el verde no se ve porque está superpuesto) en valores significativamente más bajos.

Y ahora con un rojo aún menos saturado H=0,S=25%,L=50% o RGB (159,96,96) #9F6060, canal rojo aún más bajo y el verde y azul iguales pero con valores más altos y parecidos al valor del rojo.

image
image

Si seguimos bajando la saturación, los valores de rojo, verde y azul se van igualando, hasta legar al gris medio (para luminosidad del 50% en el caso de saturación 0.
H=0,S=0%,L=50% RGB (128,128,128) #808080

image
image

En este caso los tres picos coinciden en el punto intermedio del histograma (en la imagen sólo aparece el azul por la forma en que el programa dibuja los canales superponiendo uno sobre otro).

Luego no parece fácil distinguir si un color está saturado o no sólo por el histograma.

Un color saturado en uno de los canales primarios, tendrá un único pico, si no está tan saturado, aparecerán picos en los otros canales más o menos separados, estarán más juntos cuanto menos saturado esté.

Cuando empezamos a tener más colores, la cosa empieza a complicarse.
Veamos el histograma de las tres zonas de color superpuestas:

La cosa empieza a complicarse a la hora de interpretar el histograma y aquí estamso viendo únicamente tres parches de color en un color rojo que es uno de los colores primarios, si lo analizamos en otros colores que no sean primarios, la cosa puede ser más compleja, no será fácil interpretarlo.

El que el pico del rojo está más a la derecha o a la izda no está relacionado con la saturación en sí del color, o el hecho de que haya pico en el extremo derecho o izdo del histograma, si no en todo caso con la luminosidad y que haya algún canal quemado o empastado.

De hecho, si vemos el histograma de un color rojo saturado pero con una luminosidad superior a la luminosidad media, veremos que el pico se mantiene, sólo que los valores de azul y verde aumentan.

Por ejemplo un rojo saturado de luminosidad alta (H=0,S=100%,L=75) tiene unos valores RGB (255,128,128) #FF8080.
Vemos que no parece rojo, si no más bien rosa, esto es porque tanto los dispositivo como nuestra visión tienen un límite en el la cantidad de rojo que pueden añadir/apreciar y al aumentar la luminosidad añadiendo más azul y rojo, nuestra apreciación es que no es tan rojo.

image
image

El pico de rojo no se ha movido, pero se han añadido picos de azul y verde.

Por tanto juzgar la saturación por la posición más al borde del histograma o menos no es correcto, la saturación viene más bien dada por la distancia entre picos de los colores primarios que componen el color dado.

Si en vez de un color primario es un color diferente, con proporciones relativas dadas de los primarios el juzgar o identificar los picos puede ser mucho más complicado.
Pensemos en un color secundario o substractivo: el complementario del rojo, el celeste o cyan (RGB (0,255,255) #00FFFF H=180, S=100%, L=50%.

image

image

Y ahora los correspondientes a saturación de 50% y 25% manteniendo la luminosidad

image
image
image
image

Y los tres parches combinados.

image
image

Como digo demasiados picos como para juzgar distancia entre ellos, y si empezamos a añadir colores que no sean los fundamentales pues más complicado.

¿Y qué ocurre entonces en una imagen real, podremos deducir la saturación del histograma?

En una imagen real donde hay muchos colores no primarios mezclados en la imagen, tratar de discernir picos y la separación entre ellos no creo que sea viable.

Veamos una imagen en la que se combinan diferentes colores, cambiemos la saturación a ver si somos capaces de distinguir cambios en los histogramas que nos permitan saber si la saturación es mayor o menor.
En esta imagen predominan los tonos amarillentos de los edificios, verdes de la vegetación y al fondo azules del cielo.
Esta es la imagen tal y como sale de la cámara con un revelado neutro y su histograma.

IMG_8338
image

Aumentemos ahora bastante la saturación general de la imagen.

image

image1332×882 439 KB

image

Y ahora bastante desaturada

image

image1303×884 381 KB

image

Si comparamos los histogramas entre sí, claro que apreciamos diferencias.
En la imagen saturada, los canales se separan más entre sí con respecto a la original, apretándose algunos más hacia los extresmos, como el rojo donde empieza a aparecer un pico en el rojo que antes no estaba.
En la desaturada sin embargo, se aproximan más entre ellos y el histograma tiene a ser más acampanado.
Así que eso nos puede dar una indicación de que estamos saturando demasiado o que no está muy saturado, si tenemos en mente el histograma original.
Claro que seguramente no necesitemos histograma para apreciar que la segunda está muy saturada.

Sin embargo el hecho de que tengamos un histograma como el segundo con un pico en el canal rojo en la derecha, si no sabemos el de partida, no indica por sí solo que la imagen esté saturada.
Dado que como vimos podemos tener valores de rojo muy saturados pero donde el canal del rojo no esté a la derecha, si no con luminosidades más bajas y haya picos más en la zona central.
El histograma último tampoco nos indica que la imagen esté desaturada, puesto que lo que importa no es dónde está el pico si a la derecha o la izda, si no la relación entre los picos de los canales que estén más o menos separados PARA UNA MISMA ZONA de la imagen y esa noción se ha perdido en el histograma, los picos que vemos no sabemos si se corresponden a la misma zona u a otra.

Nos puede servir de ayuda cuando sabemos del histograma del que partimos y vemos cómo va evolucionando, pero no podemos juzgar la saturación de la imagen a partir únicamente del histograma tradicional.

Pero entonces sí que da información de saturación, ¿el histograma de una imagen saturada tendrá los picos más separados?

Igual del ejemplo puesto anteriomente alguien puede llegar a esta conclusión, ya que a medida que saturábamos la imagen los picos se separaban.

Sin embargo esto no es así, debido a que como decía los picos del histograma pueden no corresponderse a la misma zona de la imagen.

Vamos a poner un ejemplo sencillo donde se ve claramente:
Este es el histograma de esta imagen con un círculo relleno de gris medio que no tiene nada de saturación.

image

image1237×926 3 KB

image

Lógicamente sólo da un pico en el centro del histograma con todos los canales superpuestos (este programa sólo muestra el azul porque los superpone y es el último que dibuja).

Y ahora tres círculos de colores primarios puros, completamente saturados y luminosidad 50%

image

image1229×918 3.23 KB

image

Como vemos ambos histogramas son idénticos, tres picos del rojo, verde y azul justo en el centro del histograma como corresponde a su luminosidad del 50% (con cualquier otra sería lo mismo pero con el pico en otra posición).
Sin embargo la primera imagen es una imagen completamente monocromática, sin ninguna saturación ni color, mientras que la segunda son tres parches de colores completamente saturados.

Por tanto el histograma por sí mismo no puede darnos información fiable sobre la saturación de una imagen.

¿Qué tipo de histograma nos permitiría juzgar eso?

Bueno evidentemente un histograma HSL pero no sé de programas que lo implementen, no sé si alguno de los otros histogramas que algunos programas muestran puede ayudar a interpretar la saturación de la imagen.

El histograma de tipo vectorscopio sí que puede ser utilizado para evaluar la saturación de los colores de la imagen y visualizar cuáles son los colores más saturados.

Es una forma de histograma muy utilizada en el mundo de la edición de video, junto con el tipo waveform, y que poco a poco se va haciendo hueco en los programas de revelado de fotos, como por ejemplo

Related Articles

Cursos interesantes de Darktable
· 1 min read

Otoñarse (El Escarabajo verde, TVE)

Capítulo del programa El escarabajo verde de TVE que trata sobre el Otoño en la Laguna de Gallo Canta y

· 1 min read
OjoDigital
· 3 min read
Darktable: el revelador del futuro
· 6 min read

Revelado por zonas

Definición de los conceptos básicos de revelado de una imagen.

· 1 min read