Cambiar el color de una imagen modificando los niveles de los canales con ImageMagick
A cada uno de los canales rojo, verde y azul de una imagen podemos aplicarles operadores diferentes para que sólo afecten a ese canal y no a la imagen en su conjunto. En esta ocasión vamos a ver cómo aplicar el operador -level de ImageMagick para que actúe sólo en un canal.
Para ello, primero tendremos que definir sobre qué canal aplicar el filtro con -channel $canal
siendo $canal red, green o blue. Y el nivel que queramos aplicar con -level $porcentaje_de_blanco%,$porcentaje_de_negro%
Partiremos de esta imagen:
Empezaremos con cambios muy moderados, por ejemplo, 4 y 85 en el canal azul, para que de un tono ligeramente azulado:
convert grafiti.jpg -channel blue -level 4,85% channel_blue_level_4_85.jpg
Manteniendo un valor bajo (8) en blancos y una disminución importante del negro (50) aclara mucho la imagen, sin llegar a negarla, y da un tono del canal modificado, en este caso, el verde:
convert grafiti.jpg -channel green -level 8,50% channel_green_level_8_50.jpg
Si lo que hacemos es mantener el negro muy alto y subimos el blanco, aminora el color del canal. Volvemos a modular el verde a ver cómo queda:
convert grafiti.jpg -channel green -level 30,92% channel_green_level_30_92.jpg
Cuando los valores se acercan a 50 tanto el blanco (menos de 50) como el negro (más de 50), los colores se apagan:
convert grafiti.jpg -channel blue -level 43,61% channel_blue_level_43_61.jpg
Si el valor del blanco sube de 50 o el valor de negro baja de 50, se niega la imagen. Veamos el mismo valor para el blanco que en la imagen anterior (43) pero con un valor menor de 50 en el negro (40):
convert grafiti.jpg -channel blue -level 43,40% channel_blue_level_43_40.jpg
Cuanto más bajemos el negro, más ocupará el color del canal en los tonos oscuros. Vamos a bajar mucho el negro en el canal rojo, para que se vea muy claro:
convert grafiti.jpg -channel red -level 15,4% channel_red_level_15_4.jpg