Modular el brillo, la saturación y el matiz con -modulate de ImageMagick

El modificador -modulate de ImageMagick, presente en convert (para aplicar los cambios en un nuevo fichero) y mogrify (para aplicar los cambios en el fichero de imagen original) permite modificar el brillo, la saturación y el matiz de una imagen. Según la documentación de ImageMagick, los tres valores que acepta, en el orden $brillo,$saturación,$matiz, tienen un rango de 0 a 200, siendo 100 el valor neutro. Veremos que no es así.

Brillo y saturación

Cuando a -modulate le pasamos un único valor, este modifica el brillo. Podemos quitar brillo a una imagen indicándole valores por debajo de 100 o subir el brillo con valores superiores a 100. Si le indicamos dos valores, modifica el brillo y la saturación. Para modificar la saturación, pero no el brillo, debemos indicar:

convert $imagen_original -modulate 100,$saturacion $imagen_destino

Modificar el brillo

Para ver de un manera bastante clara cómo modifica -modulate el brillo y la saturación de una imagen, partiremos de una imagen con bastante colorido:

Y, a partir de esa imagen, vamos a modificar primero el brillo. Vamos a ver primero cómo si aplicamos el valor mínimo (0) deja la imagen en negro, pero si aplicamos el máximo (200) aclara bastante la imagen sin llegar a dejarla en blanco:

convert grafiti_almozara.jpg -modulate 0 grafiti_almozara_0.jpg

convert grafiti_almozara.jpg -modulate 0 grafiti_almozara_0.jpg

 

convert grafiti_almozara.jpg -modulate 200 grafiti_almozara_200.jpg

convert grafiti_almozara.jpg -modulate 200 grafiti_almozara_200.jpg

A modo de curiosidad, vamos a ver que, independientemente de lo que diga la documentación de ImageMagick, podemos indicarle un valor superior a 200 y -modulate aplica una mayor modificación:

convert grafiti_almozara.jpg -modulate 500 grafiti_almozara_500.jpg

convert grafiti_almozara.jpg -modulate 500 grafiti_almozara_500.jpg

Pero, por lo general, los valores con los que operaremos con -modulate serán siempre cercanos a 100.

Veamos cómo modifica la imagen con 50 y con 150:

convert grafiti_almozara.jpg -modulate 50 grafiti_almozara_50.jpg

convert grafiti_almozara.jpg -modulate 150 grafiti_almozara_150.jpg

 

Modificar la saturación

Para modificar sólo la saturación, sin afectar al brillo, indicaremos el valor 100 para el brillo y otro valor para la saturación.

Con una saturación de 0, convertimos la imagen en una escala de grises:

convert grafiti_almozara.jpg -modulate 100,0 grafiti_almozara_100_0.jpg

 

Con un valor superior a 0 e inferior a 100, los colores aparecerán apagados:

convert grafiti_almozara.jpg -modulate 100,50 grafiti_almozara_100_50.jpg

convert grafiti_almozara.jpg -modulate 100,50 grafiti_almozara_100_50.jpg

A mayor valor en la saturación, mayor será la intensidad de los colores:

convert grafiti_almozara.jpg -modulate 100,150 grafiti_almozara_100_150.jpg

convert grafiti_almozara.jpg -modulate 100,150 grafiti_almozara_100_150.jpg

 

Cambiar el tono de la imagen

Para el tono (hue) también el rango va de 0 a 200, modificando los colores distintos al blanco y al negro mediante una rueda cromática.

Vamos a ver algunos ejemplos sobre una única imagen, pero podemos ver con mayor claridad esa rueda cromática si creamos un vídeo.

Primero, vamos a generar una imagen con distintos valores:

convert grafiti_almozara.jpg -modulate 100,100,0 grafiti_almozara_0.jpg

convert grafiti_almozara.jpg -modulate 100,100,40 grafiti_almozara_40.jpg

convert grafiti_almozara.jpg -modulate 100,100,160 grafiti_almozara_160.jpg

 

Y ahora vamos a ver cómo hacer un vídeo que gire cinco veces la rueda cromática yendo del 0 al 1000 (200×5):

#!/bin/bash

if identify $1 > /dev/null 2>&1
then 
    withoutextension="${1%%.*}"

    for i in {0..200}
    do
        convert $1 -modulate 100,100,$i png:-
    done | ffmpeg -f image2pipe -i - $withoutextension.mp4
else
    echo "You must write a valid image file."
    exit 1
fi

 

Con if identify $1 > /dev/null 2>&1 comprobamos si es un fichero válido de imagen.

La línea convert $1 -modulate 100,100,$i png:- indica que no genere un nuevo fichero, sino que envíe la imagen a la tubería posterior que la recibirá ffmpeg -f image2pipe -i - $withoutextension.mp4 generando un vídeo cuyo nombre de fichero será el mismo de la imagen pero con extensión .mp4.

 

 

 

 

 

 

 

 

 

 

Un comentario en «Modular el brillo, la saturación y el matiz con -modulate de ImageMagick»

Deja una respuesta

Tu dirección de correo electrónico no será publicada.