Améliorer ses photos de vacances avec Gimp

Cela fait longtemps que je n'ai rien écrit. Je vais remédier par un petit article sur l'utilisation de c2g et separate luminance pour améliorer le rendu de ses photos de vacances sous Gimp. Le premier est un outil standard de GEGL qu'on trouve sous outils/Action GEGL..., le second est un script-fu téléchargeable ici.

Avant-Après

Avant de voir la procédure voici ce que cela donne avant et après traitement.


On remarque que sur le bleu du ciel et les nuages nous obtenons un effet proche d'un filtre polarisant. Les vagues en bas à droites sont plus présentes et le sable est plus granuleux.

Separate luminance

Une fois l'image chargée, aller sous FX-Foundry/Color/Separate Luminance... Laisser les paramètres par défaut et cliquer sur "Valider".

Cela permet de séparer la luminance de la chrominance en différents calques.

Le traitement conserve l'image d'origine dans le calque "arrière plan".

c2g

Sélectionner le calque "Arrière plan". Aller sous outils/Action GEGL, décocher "aperçu", sélectionner c2g dans la liste. Le traitement propose 3 paramètres : Radius, Samples et Itérations (pour plus de détails, voir mon article le noir et blanc avec c2g). Pour le Radius, je choisi 3000 pixels et 10 pour les 2 autres paramètres. Ces valeurs sont empiriques et sont à déterminer en fonction de la résolution du fichier. Ici, il fait 21 millions de pixels. Cocher "aperçu".

Finalisation

Une fois, le traitement effectué par c2g, remonter le calque "Arrière plan" au dessus de "Lum" et changer sont opacité sur 33. C'est une valeur qui va bien pour la plupart des images. Là, j'ai poussé jusqu'à 50 sur cet exemple pour que le résultat soit bien visible.

Il ne reste plus qu'à aplatir l'image et c'est fini !

Etalonner son appareil photo avec Argyll CMS

Pour pouvoir exploiter au mieux ses fichiers RAW avec UFRaw, Rawtherapee ou Darktable, il est préférable d'avoir un profil ICC correspondant à son boitier. Il est bien sûr possible d'utiliser les profils créés par le fabricant ou bien ceux de sociétés tierces. Seulement, le rendu des couleurs est loin de celui obtenu avec les logiciels pour lesquels ils ont été créés.

Principe

Pour étalonné le capteur de son appareil photo, il faut :

  • faire une photo d'une charte de couleur
  • dé-rawtiser la photo sans aucune correction
  • analyser cette photo avec Argyll CMS pour créer le profil ICC
Idéalement, il faudrait créer un profil pour chaque scène... mais on peut arriver à créer un profil générique qui convienne à la majorité des cas.

Choix de la charte de couleur

J'ai pris une charte CMP Digital target 3 de CMP Color, elle contient 570 patches de couleurs et coûte un peu plus de 80 €. Elle est crée sur une imprimante à jets d'encre, il peut donc y avoir du métamérisme. Dans la même gamme de prix, il y a les color checker de X-Rite. Elles sont teintés dans la masse mais ne contiennent que 24 patches, ce qui n'est à priori trop peu pour faire un profil précis.

J'ai reçu la mire rapidement, 3 jours après l'avoir commandé. Elle livrée dans une chemise en plastique rigide et emballée dans un carton épais pour le transport. Lorsque le fabricant l'envoie, nous recevons un mail avec les mesures spectrales ainsi que les mesures de luminosité de la charte.

Avec l'achat de la cible le fabricant propose la création de plusieurs profils avec ses outils, il suffit de déposer une photo de la mire sur son serveur FTP. Ce que j'ai fait, je lui ai aussi dit que j'étais sous Linux et il m'a répondu qu'il existe des logiciels de calibration sous Linux et que je pouvais le faire moi-même. A ce jour, je n'ai toujours pas reçu les profils promis avec l'achat de la cible.

Prise de vue

Il s'agit de la partie la plus délicate :

  • L'appareil photo doit être le plus parallèle possible à la charte
  • la charte doit être éclairée de façon homogène
  • la lumière doit avoir un spectre le plus large possible. Idélament, la lumière du soleil au zenith par temps clair. On peut aussi se servir d'un flash. Je déconseille cette seconde solution qui donne des résultats moins bon.
  • il faut éviter que des objets de couleurs à proximité de la charte se reflètent dedant sinon, nous risquons de fausser les mesures.

Dérawtisation

L'image doit être la plus neutre possible. Sous UFRaw, les paramettre suivants doivent être appliqués :

  • exposition à zéro
  • rendu numérique
  • les courbes doivent être linéaires
  • contrastes et saturation à 1.0
  • pas de profil en entré
  • profil de sortie sRGB avec un rendu de colorimétrie absolue
  • gamma 1.0 et linéarité à zéro
  • format tif 16 bit

Création du profil avec Argyll CMS

La création se fait en 2 étapes. La première consiste à analyser la charte avec la commande suivante :

scanin -v -p -a -dipn IMAGE_CHARTE.tiff /usr/share/color/argyll/ref/CMP_Digital_Target-3.cht CMP_DT3.txt
Les paramètre principaux de cette commande sont :
  • l'image de la charte
  • l'emplacement des patchs de couleurs sur la charte
  • une mesure étalon des couleurs des patchs
Une fois la commande exécutée, nous obtenons un fichier diag.tif qui permet de savoir si l'image a correctement été reconnue. Ensuite, nous utilisons la commande suivante pour produire un fichier ICC (IMAGE_CHARTE.ICC) :
colprof -v -A "Canon" -M "EOS 5D Mark II" -D "Canon EOS 5D Mark II" -C "Copyright (c) 2010 Xavier BESSE. Some rights reserved." -q l -a m IMAGE_CHARTE

To be continued ...

Il ne reste plus qu'a utiliser ce fichier en entrée de UFRAW ou Darktable. J'ai d'ailleurs fourni une prise de vue de la charte faite avec le 5D Mk II au projet Darktable. La personne en charge de la gestion des couleurs de Darktable a créé une courbe générique pour le logiciel afin d'avoir une gestion précise du 5D Mk II. Grâce à cela, Darktable est aujourd'hui le logiciel libre qui me donne les couleurs les plus fidèles pour mon boitier.

Une fois le profil créé, il est aussi possible de créer des profils simulant le rendu des couleurs proposées par le fabricant du boitier. Par exemple, simuler le rendu des Styles d'Images de Canon ... mais ça, c'est un autre article !

Améliorer la réactivité de Gnu/Linux sur son ordinateur portable

J'utilise aujourd'hui uniquement des ordinateurs portables chez moi, c'est un choix personnel. Parmi les quelques inconvénients de ces machines, il y a la lenteur des disques dur qui affecte la réactivité générale du système. Je présente ici les quelques optimisations que j'ai trouvé sur Internet et appliqué avec succès. Ces optimisations sont appliquées sur un ordinateur portable "standard" : Intel Core2 duo, 3Go de mémoire vive, un DD de 280 Go, carte graphique avec mémoire dédiée.

Choix du système de fichier et partitionnement du disque

Mon disque est partitioné comme suit :

  • swap 4 Go
  • /boot ext3 300 Mo
  • / ext4 10 Go
  • /home ext4 le reste du disque
J'ai une partition séparée pour /boot car lorsque ext4 fut proposé officiellement par les distributions majeures, grub ne le supporté pas encore, il fallait donc que la partition contenant le noyau soit en ext3 par exemple. J'ai toujours une partition de swap, bien que le système ne s'en serve presque pas. Enfin, j'ai une partition pour les données utilisateur séparée du reste du système. L'utilité d'une telle séparation est de pouvoir changer de distribution sans avoir à déplacer les données utilisateurs sur un autres disque. Nous verrons par la suite, que cela a un autre intérêt.
Le système de fichier utilisé est ext4 car il est a priori plus performant que ext3 et ext2. Je n'ai jamais utilisé JFS ou XFS bien qu'ils soient aussi très intéressants.

Tmpfs

La mémoire vive est plus rapide que mon disque dur ! Seulement, le système et les programmes ont besoin d'enregistrer des données temporaires sur le disque pour leur fonctionnement. Ces données sont écrites en plusieurs endroits en fonction de leur nature :

  • /tmp pour des données temporaire supprimées à chaque redémarrage
  • /var/tmp pour des données temporaires pouvant être réutilisées
  • /var/run pour les données du programme en cours d'exécution
  • /var/lock pour permettre à certains programmes de positionner des verrous
Grâce à tmpfs, nous pouvons monter ces répertoires en mémoire vive. Le gros point fort de tmpfs est d'allouer dynamiquement la mémoire vive, les répertoires montés de la sorte n'occupent que l'espace pris par les fichiers. Si nous regardons la taille du répertoire avec un gestionnaire fichier (ou bien df à la console), nous obtenons la taille maximale que peut avoir ce répertoire en mémoire vive. Par défaut, tmpfs défini cette taille maximale à la moitié de la mémoire vive disponible.
Pour utiliser tmpfs sur les répertoires sus-cités, il suffit d'ajouter les lignes suivantes au fichier /etc/fstab et de redémarrer son système :
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /var/run tmpfs defaults 0 0
tmpfs /var/lock tmpfs defaults 0 0
Avec ces quelques lignes, je constate que mon système est plus réactif. C'est difficile à quantifier, je n'ai pas de mesures objectives à fournir. Cependant, les menus de XFCE et leur icônes s'affichent plus rapidement qu'avant, le gestionnaire de fichier Thunar affiche plus rapidement le contenu des dossiers, ... bref c'est plus fluide.
Attention, tout ne peut pas être mis en mémoire vive car les données qui y sont placées sont perdues avec l'extinction de l'ordinateur. Il existe bien sûr possible de créer des scripts pour sauvegarder dans une archive les données au moment de l'arrêt. D'autres scripts rechargent ensuite ces données dans la phase de démarrage du système. Je n'ai pas mis en œuvre cette possibilité.

Le cas Firefox

Firefox gère un cache sur le disque dur dans le répertoire de l'utilisateur. Il est possible de paramétrer la localisation de ce cache et le placer dans le répertoire /tmp. Pour cela, dans la barre d'adresse de Firefox, il suffit de taper about:config, valider l'avertissement puis ajouter la clé browser.cache.disk.parent_directory et lui donner comme valeur /tmp. Une fois cette modification faite, si nous relançons Firefox, nous constatons que la navigation est un peu plus fluide qu'auparavant.

Le tuning ext4

Il est possible de gagner encore en performance en jouant sur certains paramètres de montage des partition dans /etc/fstab. Voici un exemple de ligne je vais détailler :

/dev/sda2 / ext4 noatime,data=writeback,barrier=0,nobh,commit=100,nouser_xattr 0 1
  • L'option noatime désactive l'acces time. Par défaut, à chaque fois, que nous accédons à un fichier, ext4 écrit la date d'accès à ce fichier sur le disque! Dans le cadre d'un usage personnel, cette opération couteuse en temps peut être désactivée sans que cela affecte le fonctionnement du système.
  • L'option data=writeback change le mode de journalisation du système de fichier. Dans ce mode les données peuvent être écrites sur le disque après que leur méta-données soient enregistrées. Cela signifie qu'en cas de plantage, si une opération d'écriture était en cours certaines données ne seront pas retrouvées. Dans mon cas (partition racine), sauf en cas d'installation d'un nouveau programme ou de mise à jour du système, je ne risque pas grand chose. Attention, lorsque cette option est activée sur la partition racine, celle-ci doit être d'abord montée en lecture seule pour que la commande suivante lui soit appliquée : tune2fs -o journal_data_writeback /dev/sdXX où XX est la partition modifiée, sda2 dans notre exemple. Dans le cas contraire, certains programmes comme le serveur X refusent de démarrer. Un fois cette opération faite, on peut redémarrer normalement son ordinateur.
  • L'option commit=100, modifie l'intervalle de mise à jour du journal en seconde. Il s'agit d'une opération de synchronisation entre les données et les méta-données. Par défaut, elle est positionnée à 5 secondes. En la mettant à 100, cela signifie qu'en cas de plantage, je peux perdre jusqu'à 100 secondes d'historique.
  • L'option nouser_xattr désactive les attributs étendus des utilisateurs. Pour un usage personnel, cette fonctionnalité n'est pas très importante.
  • L'option nobh nécessite que la première option data=writeback soit utilisée.
  • L'option barrier=0 ne doit être activée que lorsqu'on a une alimentation de secours ... ce qui est le cas sur un portable :-). Concrètement, cette option renforce l'ordre des commits dans le journal. Encore une fois, sur la partition racine, je ne risque pas grand chose.
Les options les plus significatives sur la réactivité du système sont noatime et data=writeback.

Et les logs ?

Il est aussi possible de mettre le répertoire /var/log en mémoire vive. Cela signifie juste que je perd l'historique des actions sur mon ordinateur. Dans le cadre d'un usage domestique, cela pas pas beaucoup d'importances. Par contre, il faut penser à désactiver le service de log du noyau.

Encore plus de réactivité ?

Pour les plus fortunés, il est possible d'acheter un ordinateur portable avec 2 emplacements pour disque dur et de les configurer en raid 0. Il est aussi possible de remplacer l'unique disque dur du portable par un disque SSD ... très cher.
Une autre solution moins onéreuse peut être d'acheter une Express card SSD, on en trouve de quelques Go pour une cinquantaine d'euros. L'idée est de mettre la partition racine sur ce disque et le reste sur le disque dur.

Les script-fu d'Elsamuko

Dé-rawtiser ses photos sous Linux partie 2 : RawTherapee

page 1 sur 9 | suivante > | >>