Traitement de photos au format RAW
Le 5 January 2009 à 13:07.

Alors attention, je ne suis ni photographe, ni un de ces amateurs éclairés qui aiment manipuler un gros zoom de 4 kg et maîtrisent vitesse d'obstruction, profondeur de champs et compagnie. Je dirais même que je suis plutôt dans le registre du gars qui apprécie réellement son appareil lorsqu'il lui fait les plus belles photos en n'ayant qu'à appuyer sur un bouton. Un position confortée par le fait d'avoir pour ami un vrai de vrai.

Et c'est justement ce dernier, en tant que photographe officiel pour notre mariage, qui en plus de ça sélection développée m'a "fournit" (aidé par un gros fusil) 14GO de ses fichier "raws" à 14mo la pièce... Alors même si je conserve précieusement ces originaux dans un coin, j'avais besoin d'une méthode pour rapidement les convertir en quelque chose de plus accessible à un profane.

Le format RAW

Les fichiers "RAW" sont en quelque sorte l'équivalent numérique de la bonne vieille pellicule (on aussi parle de "négatif digital"). Il s'agit d'un format "en attente" d'un "développement" qui se fait généralement en jpeg avec des outils de tueurs comme lightroom. Des outils propriétaires qui se décline beaucoup plus modestement en outils libres comme le simplissime rawstudio et le moins accessible ufraw

Car c'est bien là l'intérêt, pouvoir travailler l'image dans les meilleurs conditions possibles, seulement limité par la capacité brute de l'appareil utilisé. Ainsi, techniquement, un fichier RAW est l'image telle qu'elle a été "vue" par la cellule CCD de l'appareil photo, sans traitement, ni compression, ni dégradation. Ainsi si le capteur perçoit des couleurs sur 12 bits par composante RGB, l'image générée pèsera 3x16bits=48bits par pixel, soit 6 octets. Pour une image de 4368 x 2912 pixel, cela nous faut 72mo la bestiole. Compressés sans perte, cela tombe à moins que cela mais cela fait tout de même des fichiers bien balaises, comme les 14mo pour un Canon EOS 5D. Enfin, le RAW contient, outre une miniature de l'image, une série de métadonnées permettant de comprendre ce que la capteur a vu au moment où il l'a vu, ceci permettant de mieux décoder ce qu'il a vu, vu ?

Et encore, il s'agit là d'un cas simple, capture par une cellule CCD de 3 composantes. Certains appareils capturent deux versions de la même image avec des paramètres différents, et certains autres travaillent sur 4 composantes de couleurs.

Mais outre la taille, le vrai "hic" avec le RAW est que contrairement à ce que l'on peut imaginer, il n'y a pas un seul RAW qui ressemble à un autre. Même si beaucoup sont basés sur une version modifiée du format TIFF, chaque format RAW est la propriété du constructeur de l'appareil, souvent lié à la structure technique du capteur utilisé. Il y a donc les RAW de chez CANON qui n'ont rien à voir avec ceux de Pentax, etc. C'est d'ailleurs pour cela qu'Adobe a mis au point un format standard de pellicule numérique (DNG) qui n'est pour l'heure pas des masses suivi.

Maintenant le RAW est fondamental pour un photographe pour la simple et bonne raison qu'il peut au moment du développement travailler l'image (luminosité, profondeur des noirs, balance des blancs, etc.) sur un espace de couleur beaucoup plus large (12 à 16 bits par composantes) qu'avec un JPEG (8 bits généralement). Et ceci sans compter que le JPEG perd de l'information à la compression alors que le RAW représente garde la trace exacte de ce que le capteur a récupéré.

Conversion

L'outil qui va bien pour décoder le RAW est dcraw. Cet outil combine en une seule commande la connaissance d'une multitude de format propriétaires et opère les transformations nécessaires (principalement celui de l'espace des couleurs). Dans la version basique, il s'utilise comme ceci :

gaston$dcraw -v -c source.cr2 > cible.ppm
Loading Canon EOS 5D image from source.cr2 ...
Scaling with darkness 128, saturation 3692, and
multipliers 2.395443 1.000000 1.253807 1.000000
AHD interpolation...
Building histograms...
Writing data to standard output ...
gaston$ 
RAW vers PPM

Le format résultant est du PPM, c'est à dire un format bitmap pur et brut avec une profondeur de couleur de 8 bits. Il est cependant possible de monter à 16bits (option -4) ou de générer du TIIF (remplacer -c par -T).

dcraw peut aussi opérer sur le format RAW un certain nombre d'opérations de développement comme la saturation, le mode de conversion des couleurs, la profondeur du noir, etc. Par exemple pour approfondir un peu le noir qui est à 128 pour l'instant (voir trace précédente), nous allons jouer sur le paramètre -k

gaston$dcraw -v -k 145 -c source.cr2 > cible-1.ppm
Loading Canon EOS 5D image from source.cr2 ...
Scaling with darkness 145, saturation 3692, and
multipliers 2.395443 1.000000 1.253807 1.000000
AHD interpolation...
Building histograms...
Writing data to standard output ...
gaston$ 
RAW vers PPM

Vous pouvez aussi jouer sur la balance des blancs (-w), la saturation (-S), etc. Pour ce qui est de l'espace de couleurs, dcraw n'utilise pas par défaut celui de l'appareil, il faut pour cela jouter l'option -o 0, ce qui donne la version finale :

gaston$dcraw -v -o 0 -k 145 -c source.cr2 > cible-2.ppm
gaston$ 
RAW vers PPM

Une fois que la bonne balance est trouvé, il est temps de convertir en JPEG. Cela se fait très simplement avec cjpeg (paquet jpeg-progs) dont le but est de compresser le flux d'entré (PPM) et de produire un flux JPEG en sortie :

gaston$dcraw -v -o 0 -k 145 -c source.cr2 | cjpeg -quality 100 -optimize -progressive > cible.jpeg
gaston$ 
RAW vers PPM

En qualité 100, nous avons une compression sans perte mais une image qui fait 7Mo soit deux fois moins que le CR2. A 80%, même en zoomant, je ne vous aucune différence avec cette fois un fichier de 800Ko. Après c'est à chacun de juger.

Maintenant nous pouvons optimiser tout cela dans un petit script qui va chercher tous les fichier CR2 et les convertir en JPEG dans un dossier passé en paramètre :

#! /bin/sh

dossier_cible="$1"

files=$(find . -name "*.cr2")
for i in $files; do
  cible=$(basename "$i" ".cr2")
  cible="$dossier_cible/$cible.jpeg"
  echo "Conversion de $i vers $cible"
  if [ ! -f $cible ] ; then
    dcraw -o 0 -k 145 -c "$i" | cjpeg -quality 80 -optimize -progressive > $cible
  fi
done

echo "Conversion achevée"
raw-to-jpeg.sh

Commentaires

Chapal, le 5 janvier, 2009 - 15:39

Salut Wink
Le problème c'est qu'avec ce système, tu joue finalement sur peu de paramètre de traitement sur le raw Smiling
ce qui est justement le but du RAW qui est un format "non-fini" et qui ne demande qu'à être développé => d'ou lightroom, lightzone, bibble, ufraw, etc...

Mais c'est vrai que ça peut être pratique si un photographe te file ses RAW

Ulhume, le 5 janvier, 2009 - 16:21

C'est moi qui lui ait volé tout cela chez lui pendant qu'il avait le dos tourné Wink Lui m'a fournit un développement dans les régles de l'art, soit à peine 30% des clichés. Mais moi n'étant pas un puriste, j'avais envie d'avoir aussi les photos "ratés" qui sont eux aussi des moments de vie malgré tout.

Xavier, le 5 janvier, 2009 - 15:48

Bonjour,

tu peux aussi utiliser UFRaw en mode batch.
C'est très intéressant car cela permet de voir les corrections avant application sur un ensemble de fichiers.
Par exemple, tu sais que toute tes photos ont été prises dans les même conditions, elles présentent toutes le même défaut de balance des blancs, tu peux ouvrir un fichier, faire la correction (balance, courbes, saturation, ...) et enregistrer les paramètres, après il ne te reste plus qu'a les appliquer à tous l'ensemble.

Sinon, je n'avais jamais entendu parlé d'appareils pouvant capturer "deux versions de la même image avec des paramètres ou des angles différents", ni d'appareils travaillant "sur 4 composantes de couleurs".

Xavier

Ulhume, le 5 janvier, 2009 - 16:27

Sans aucun doute mais je suis un grand malade de la ligne de commande Wink Et ce que je cherche à faire ici c'est du quick & dirty, contrairement à l'audio, j'ai pas le cerveau câblé ou éduqué pour apprécier les images au delà d'un certain seuil.

Pour les cellules 4 composants, il me semble me souvenir que c'est une techno Sony avec une composant "Emerald" => RGBE. Pour la double capture, je ne me souviens plus du quoi qu'est-ce exactement, je sais que je l'ai lu et que l'idée est de prendre deux clichés à deux niveaux d'exposition différents permettant si j'avais bien tout compris d'augmenter la profondeur sur les parties sur/sous exposées. Maintenant j'en dirais pas plus sinon je vais sortir des âneries.

Kagou, le 5 janvier, 2009 - 15:59

J'ajouterai que le RAW est l'image brute du capteur. Capteur constitué de photo-diodes en matrice, ne captant qu'une seule couleur (Rouge/Vert/Bleu). Ces même photo-diodes ne sont pas réparties en 33/33/33% mais plutôt 50% pour le vert puis 25/25. Le but d'un logiciel de "derawtisation" et de dématricer l'image du capteur pour en sortir une image où chacun des pixels est une couleur codée en RVB. C'est donc dans les algorithmes de dématriçage que tout se joue Wink

Ulhume, le 5 janvier, 2009 - 16:31

Terrible ça, la derawtisation Wink Merci pour les infos complémentaires !

djib, le 5 janvier, 2009 - 16:34

Mmmh, j'utilisais ufRaw, mais RawStudio a l'air très sympa aussi ! Je teste ce soir, merci !

Philippe, le 5 janvier, 2009 - 22:58

Il y a aussi RawTherapee, pas libre mais gratuit, qui tourne parfaitement sous Linux et qui me semble avoir plus de fonctionnalités que RawStudio et Ufraw (mais je n'ai pas encore beaucoup joué avec ces 2 là).

cenwen, le 6 janvier, 2009 - 22:23

Personnellement, j'utilise pour les visionner gtkrawgallery : http://sourceforge.net/projects/gtkrawgallery/ Il fait les photos raw (et les autres jpeg,jpg) , et je trouve que c'est un clone de gqview mais en mieux. Par contre, je ne sais pas s'il permet "la derawtisation", j'en suis à la version 0.6 alors que la derniere est la 0.93. Un dernier mot et peut-etre le + important, c'est une gui de dcraw.

JJL, le 8 janvier, 2009 - 23:57

Ulhume: pour info ce dont tu parles (différents niveaux d'expositions), c'est le HDR. Pour en faire, on peut même se passer d'un super appareil avec des softs genre qtpfsgui.
Attention quand on met les doigts dedans, c'est dur de les en sortir Smiling

Ulhume, le 9 janvier, 2009 - 00:34

@JIL merci pour l'info, effectivement il semble bien que ce soit cela. J'ai trouvé ce magnifique tuto : http://bellette.tuxfamily.org/pixelpost/index.php?x=page&title=hdr1intro

Maintenant pour qu'un profane comme moi mette les doigts là dedans, faudrait d'abord que je puisse coller un script dans mon appareil pour prendre automatiquement la série de photos qui va bien Smiling

Poster un nouveau commentaire

Si vous avez détecté une erreur, coquille ou bêtises du même ordre, merci de plutôt passer par le formulaire de contact
Pour vous abonner au flux des commentaires sur cet article, clickez ici.
Pour répondre à quelqu'un, utilisez plutôt le lien répondre qui se trouve en haut (ou en bas) à gauche de son commentaire.
Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement. Si vous avez un compte gravatar, l'utilisez pour afficher votre avatar.
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <div> <p> <br>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Textual smileys will be replaced with graphical ones.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Every instance of custom tags in the input text will be replaced with a specific tool shortcut.

Plus d'informations sur les options de formatage


Commentaires récents
Porte secrète