dimanche 29 juin 2008

Booster les couleurs avec ImageMagick en mode Lab

Aujourd'hui, je vous propose de découvrir une technique de Mr Kelby pour faire "claquer" les couleurs d'une photo. Ci-contre, l'image améliorée avec cette méthode.






Etape 1
Pour commencer, nous allons décomposer notre photo de départ dans le mode de couleur Lab avec ImageMagick qui a le bon goût de pouvoir travailler sur 16 bits.





Tapez les 3 lignes suivantes dans un terminal :

convert photo.tif -colorspace LAB -channel R -separate L.tif
convert photo.tif -colorspace LAB -channel G -separate A.tif

convert photo.tif -colorspace LAB -channel B -separate B.tif


Cela nous créé trois fichiers L.tif, A.tif et B.tif correspondants aux couches de couleurs du mode LAB.

Etape 2
Ensuite, nous travaillons sur la couche A ou la couche B en fonction des besoins. Pour cette image, nous allons travailler sur la couche B. Tapez la commande suivante dans votre terminal :

convert B.tif +clone -compose HardLight -composite B2.tif

Cette commande copie la couche B sur elle-même et la fusionne en mode "Lumière vive" dans une nouvelle image B2.tif.

Etape 3
Il ne nous reste plus qu'a recomposer notre image avec notre couche B modifiée à l'aide la commande suivante :

convert L.tif -colorspace LAB \
L.tif -compose CopyRed -composite \

A.tif -compose CopyGreen -composite \

B2.tif -compose CopyBlue -composite \

-colorspace RGB resultat.tif


Si vous trouvez que les couleurs sont trop vives, nous pouvons réduire l'intensité du traitement à l'étape 2 en travaillant sur l'opacité de la fusion de la couche B. par exemple la commande suivante copie la couche B sur elle-même et la fusionne avec une opacite de 60% :

convert B.tif +clone \( +clone -fill gray60 -colorize 100 \) -compose HardLight -composite B2.tif

Automatisation
Bien sûr, cette suite de commandes serait bien plus utile dans un script pour automatiser le traitement. Par exemple, le script suivant peut être placer dans le répertoire de script de Nautilus pour être appliqué via un clique-droit sur une série d'image :

#!/bin/bash
while [ $# -gt 0 ]
do
picture=$1
result=`echo "$picture" | sed 's/\.\w*$/-booted.tif/'`
convert $picture -colorspace LAB -channel R -separate L$$.tif
convert $picture -colorspace LAB -channel G -separate A$$.tif
convert $picture -colorspace LAB -channel B -separate B$$.tif
convert B$$.tif +clone \( +clone -fill gray60 -colorize 100 \) -compose HardLight -composite B2_$$.tif
convert L$$.tif -colorspace LAB \

L$$.tif -compose CopyRed -composite \

A$$.tif -compose CopyGreen -composite \

B2_$$.tif -compose CopyBlue -composite \

-colorspace RGB $result

rm -f L$$.tif A$$.tif B$$.tif B2_$$.tif


shift

done


A titre de comparaison, voici l'image originale améliorée avec une simple augmentation de la saturation. Vous remarquerez que l'image améliorée avec le mode Lab possède des couleurs plus riches.

5 commentaires:

Tuxicoman a dit…

Ca a tendance à moins virer au blanc en mode LAB, c'est vrai. C'est dû au mode LAB ou aux 16bits?

Xavier a dit…

Je ne sais pas à quoi cela est dû. Je pense que c'est principalement le travail en mode LAB qui en est la cause.

Gou a dit…

Bonjour,

Merci pour ce billet très intéressant. J'ai toutefois un petit souci avec l'option "+clone" de l'étape 2, qui me renvoie systématiquement une erreur (option non valide / non trouvée). Qu'apporte-t-elle ?

Question subsidiaire, est-il indispensable d'avoir des photos au format .tif? Le format .jpg ne eut-il convenir ?

Xavier a dit…

Bonjour Gou,

désolé pour le retard, j'étais en vacance.

Pour l'étape 2, je vais corriger le billet car il y a une erreur la bonne commande à taper est la suivante :
convert B.tif +clone -compose HardLight -composite B2.tif

Ensuite, il n'est pas indispensable d'utiliser des fichiers tif. Ce qui est important, c'est d'utiliser des images avec une profondeur de couleur sur 16 bit possible avec des fichiers tif, png, ppm mais pas avec les fichiers jpg.

Gou a dit…

Pas de problème, je m'en doutais un peu à vrai dire (pour les vacances).

Merci pour l'info en tout cas. Je vais essayer comme ça. Mon appareil ne "crache" que du ram ou du jpg, je vais donc me pencher sur les possibilités de conversion sans pertes.