Fév 18 2010

DCRaw, le dématriceur en lignes de commandes

dcraw.jpg Le format RAW, ou "négatif numérique", est de plus en plus utilisé. Vu comme contraignant et compliqué au début, il est aujourd'hui communément pratiqué grâce à une offre logicielle fournie, performante et facile d'utilisation.

Il subsiste cependant un OVNI sur le terrain du dématriçage : DCRaw, un programme écrit en langage C. Prévu à la base pour Linux, il a été étendu à toutes les plate-formes actuelles : Linux, Windows et Mac. La liste des logiciels qui utilisent ou ont utilisé tout ou partie du code de DCRaw est vertigineuse : RawTherapee, Ufraw, Easyhdr, Picasa, IrfanView, mais aussi ACDSee, Camera Raw, Lightroom ou encore Lightzone (liste non exhaustive !). C'est dire que beaucoup de photographes utilisent DCRaw sans même le savoir...

Dave Coffin, l'auteur du code, met régulièrement à jour son programme (sous licence GPL). Sa dernière mouture en date du 25 décembre dernier était ainsi déjà compatible avec les Alpha 500 et 550, alors que plusieurs logiciels ne le sont toujours pas à ce jour. Vous trouverez beaucoup d'informations sur le site officiel de l'auteur.

En hommage au remarquable travail de ce développeur aussi réactif que discret, nous vous proposons une petite plongée dans le rugueux langage de commande car DCRaw peut toujours être utilisé "à l'ancienne", sans interface graphique, sans bouton à cliquer ni curseur à tirer.


La compilation du code sous Linux est aisée car le compilateur gcc est intégré aux distributions. Si vous n'êtes pas un programmeur dans l'âme, vous pouvez télécharger les versions compilées à l'adresse suivante : http://www.insflug.org/raw/

Une fois compilé, DCRaw s'utilise comme les bons vieux programmes sous cp/m ou DOS : en ligne de commande. L'avantage est de pouvoir compiler le code sous n'importe quelle plate-forme, le désavantage étant de ne pouvoir prévisualiser le résultat final car Dave a conçu son dématriceur sans se soucier de son enrobage graphique.


DCRaw : mode d'emploi

Tout commence par l'ouverture d'une fenêtre : sous Linux une "console" et sous Windows via le menu démarrer "Accessoires > Invite de commandes". Il faut ensuite se positionner dans le répertoire où se trouve DCRaw (avec la fonction cd, sous DOS ou linux), puis taper la commande :

dcraw [options] image

Pour des raisons pratiques, il est intéressant d'avoir l'exécutable DCRaw ainsi que le fichier raw dans le même répertoire car si, sous linux, on peut facilement jongler avec la console, sous DOS il faut taper entièrement le nom du répertoire. Or, à peine arrivé à "Documents ans settings", on sature déjà...

Si on tape :
dcraw dsc0001.ARW
on obtient un fichier dsc0001.ppm. Il s'agit des réglages par défaut de DCRaw qui crée un fichier image 8 bits au format ppm.
Il est possible, voire nécessaire, d'ajouter des options. Par exemple, "-v" affiche les messages complets de dcraw (mode verbeux).

Lançons la commande suivante :
dcraw -v dsc0001.ARW
On peut alors lire les messages suivants :
Loading SONY DSLR-A700 image from dsc0001.ARW
scalling with darkness 254, saturation 8190, and
miltipliers 2.503832 1.000000 1.281681 1.000000
AHD interpolation...
Converting to sRGB colorpace...
Writing data to dsc0001.ppm ...


Les options sont cumulables. Par exemple "-i" identifie le fichier. Si le résultat est 0, le fichier peut être décodé, sinon, le résultat est 1.
Si l'on combine les 2 options "-i" et "-v" :
dcraw -i -v dsc0001.ARW
on demande à DCRaw d'afficher tous les messages d'identification du fichier. On récupère alors les informations suivantes :
• Date
• Appareil photo
• Réglage ISO
• Vitesse
• Ouverture
• Focale
• Profil icc
• Nombre de raw (sur certains appareil, il peut y avoir plusieurs images imbriquées)
• Taille de l'imagette incluse dans le raw
• Taille de l'image
• Nombre de couleurs (en général 3)
• Disposition de la matrice
• Réglage colorimétrique

Si on lance la commande dcraw seule, on obtient la liste complète des options. Soyez attentifs aux majuscules et aux minuscules dans les options.


Les principales options de DCRaw

-v : affichage des messages complets
-e : extrait la vignette du fichier RAW (pas de dématriçage, attention)
-i : identification des fichiers

-P fichier_des_pixels_morts : réparation des pixels morts. La procédure peut sembler rébarbative, mais la fonction est intéressante.
-K fichier_noir.pgm : soustrait un noir du fichier RAW. Pour obtenir ce fichier, il faut prendre une photo dans le noir, et exécuter la commande dcraw -D -4
-k valeur_noir : augmente le niveau de noir de cette valeur.
-n valeur_bruit : utilise la technique des ondelettes pour supprimer le bruit. A priori, l'optimum se situe entre 100 et 1000
-C niv_rouge niv_bleu : correction des aberrations chromatiques (valeurs à prendre entre 0.999 et 1.001
-H valeur_H : traitement des zones claires
0 : zones claires limitées à du blanc pur (par défaut)
1 : zones claires sans limite (une teinte peut apparaître)
2 : combination graduelle entre 0 et 1
3 et + : reconstruit les zones claires. Les valeurs proches de 3 favorisent les blancs, les valeurs proches de 9 favorisent les couleurs. -H 5 serait un compromis entre les 2

-w : utilise la balance des blancs de l'appareil enregistrée dans le raw.
-a : calcule une balance des blancs en moyennant l'image complète.
-A o_gauche o_haut largeur hauteur : exprimé en pixels, la balance des blancs se fait sur le rectangle défini. Il faut bien entendu choisir une zone gris neutre.
-r bdb0 bdb1 bdb2 bdb 3 : réglage manuel de la balance des blancs. Il est préférable de faire une balance des blancs sur boitier et utiliser -w.
-o valeur_o : sélection de l'espace de couleur :
0 : raw
1 : sRGB
2 : Adobe RGB
3 : Wide Gamut RGB
4 : Kodak ProPhoto RGB
5 : XYZ
-p valeur_p : traitement des zones claires 0 : zones claires limitées à du blanc pur (par défaut)
apareil_photo.icm : utilise le profil ICC
embed : utilise le profil ICC contenu dans le raw

-d : créé une image brute, sans dématriçage, en noir et blanc (ce que voit le capteur)
-D : idem que -d, mais sans mise à l'échelle des valeurs. L'image brute par excellence (attention, image très sombre)
-h : créé une image réduite de moitié
-q valeur_q : réglage de la qualité du dématriçage :
0 : interpolation bilinéaire, rapide mais de qualité médiocre
1 : interpolation Nombre Variable de Gradient (VNG)
2 : interpolation Regroupement par Motif de Pixels (PPG)
3 : interpolation Homogénéité Dirigée et Adaptative (AHD)
-f : interpole les 3 couleurs RVB comme couleurs distinctes. A utiliser quand on trouve des labyrinthes ou motifs avec AHD et VNG qui optimisent le piqué.
-m nb_passes : corrige les artefacts par le nombre de passes de correction indiqué.

-W : utilise un niveau de blanc fixé (par défaut, dcraw se base sur l'histogramme)
-b luminosité : divise le niveau de blanc par la valeur indiquée
-g puissance pente_origine : fixe la courbe gamma. Par défaut, on a -g 2.222 4.5. Pour le sRGB, utiliser -g 2.4 12.92
-6 : créé des images sur 16 bits
-4 : créé des images sur 16 bits linéaires. Equivalent à indiquer -6 -W -g 1 1
-T : créé des fichiers TIFF (ppm par défaut)
-t orientation : modifie l'orientation du fichier de sortie. Par défaut, DCRaw utilise la donnée du fichier raw. Valeurs acceptées de 0 à 7
0 : pas de rotation
3 : rotation de 180°
5 : rotation de 90° dans le sens contraire des aiguilles d'une montre
6 : rotation de 90° dans le sens des aiguilles d'une montre


Démonstration par l'exemple

Mon Alpha 700 était réglé à la prise de vue en mode 16:9 (NDLR : mdr !). J'ai développé le RAW avec la commande suivante :
dcraw -e dsc09831.arw
J'ai récupéré une image au format full hd (1920*1080) avec les réglages de l'appareil (redressée en vertical dans mon cas; il n'y a pas de notion d'orientation avec les imagettes des RAW) :

DSC09831.thumb.jpg

Avec l'instruction suivante :

dcraw -w -T -6 q 3 dsc09831.arw

j'ai obtenu un fichier TIFF 16 bits, interpolé en AHD :

DSC09831.jpg

On remarque tout de suite que les couleurs sont moins saturées, et selon ce qu'on veut faire de l'image, il faudra la retoucher (si votre éditeur d'image est GIMP, notez que vous pourrez ultiliser le plugin UFRaw basé sur DCRaw et qui, lui, permet une prévisualisation)

Voici enfin idée du rendu des détails sans aucune accentuation, aucune correction, avec la fameuse vue 100% :

DSC09831-crop.jpg


Conclusion

Si vous lisez ces lignes, c'est que vous n'avez pas abandonné la lecture de cet article aussi rugueux que le langage de commandes. Vous êtes donc mûr pour tenter votre chance !
Merci à Dave Coffin pour son apport décisif à la problématique du développement des fichiers RAW.

Commentaires   

# Gilles 19-02-2010 07:59
Hem... je ne crois pas qu'il y ait du DCRaw dans ACR et Lightroom...
# Patrick Moll 19-02-2010 15:34
Je t'avoue que quand j'ai relu l'article d'Omer, j'ai été stupéfait de voir Camera Raw et Lightroom dans la liste des logiciels ayant utilisé une partie du code de DCRaw (où ses algorithme, ce qui n'est pas très différent). J'ai donc fait une petite recherche et je suis tombé sur cet article de Volker (volker.canalblog.com/archives/2008/05/16/9205770.html) qui doit bien savoir ce qu'il en est effectivement. Je lui ai fait confiance, comme toujours, et du coup j'ai laissé LR et ACR dans la liste à la Prévert qu'a écrite Omer... :wink:
# hery 19-02-2010 15:08
J'ai utilisé qques fois dcraw en mode commande mais je n'ai jamsi réussi à sortir directement des images ok :lol:

Je ne sais pas si vous êtes déjà allé regarder le code de dcraw mais c'est franchement illisible et j'espère que Dave Coffin n'est pas seul pour maintenir ce truc... :lol:
# Mero 25-02-2010 09:12
Il faut voir en DCRaw, un outil qui permet de calculer la couleur d'un pixel en fonction de ses voisins, et des paramètres de calculs qu'on lui fournit. Il recréé une image "brute". Le secret des autres logiciels, c'est tout ce qui est fait après. C'est pour cela que ce bout de code est intégré au cœur d'autres logiciels.
Il n'empêche que ce fut un des premiers, peut-être même le premier, à être compatible avec les a850/a500/a550/... 8)
Et on pourrait le faire tourner sur un smartphone....
# Grosbill 09-08-2010 06:13
DCRAW ne se contente pas de faire du dématriçage et seulement créer une image brute mais, notamment, gère la conversion dans l'espace de couleur, traite la balance des blancs et applique tous les paramètres indiqués lors de la prise de la photo.
Il fait l'essentiel et donc ne fait pas : l'interface utilisateur, la classement des photos, la conversion de format, le cropping, etc.
Si les algorithmes de Dave étaient si triviaux, toutes ces grandes sociétés "spécialisées" auraient utilisé leur savoit-faire pour le faire avant et surtout le faire mieux.
# Julien 10-08-2010 15:16
Que voilà un bon résumé de l'article, Grosbill ;-)
C'est bien précisé par Omer : conversion dans l'espace de couleur souhaité, application d'une BDB éventuellement récupérée sur le boîtier et algorithmes utilisés par les plus grands...

J'ai du mal à y trouver un soupçon de dédain ce qui me fait peiner à comprendre une telle réaction...
# Dcraw et exifvalenza 31-10-2014 17:18
Super ton article..
je cherche depuis un certain temps comment dématricer un fichier raw et récupérer les infos exif du fichier raw
dans le jpeg généré

désolé si ce n'est pas le bon endroit pour poster cette question

Merci à toi

Les commentaires ont été désactivés

Logiciels

28 février 2015
photoshop-a-25-ans-l-age-de-de-raisonPhotoshop vient de fêter ses 25 ans, un âge que peu de logiciels atteignent. Mieux, il est devenu au fil des ans le standard incontesté en édition [...]
09 avril 2014
decryptage-et-mode-d-emploi-de-lightroom-mobile-1-0Elle était annoncée et très attendue : la première version mobile de Lightroom est arrivée, en compagnie de la version 5.4 de Lightroom desktop (comme il [...]
21 mars 2014
photoshop-cc-lightroom-a-12-29-mois-ouvert-a-tous-jusqu-au-31-marsAprès une première période en fin d'année dernière, Adobe a de nouveau ouvert à tous les photographes le Programme de Photographie Photoshop au lieu de le [...]
06 mars 2014
photoshop-et-la-balise-colorspace-des-donnees-exifJ'ai signalé il y a quelques jours un dysfonctionnement de Photoshop CC dans la gestion des profils intégrés aux Jpeg directement produits par les [...]
26 février 2014
photoshop-cc-dysfonctionnement-dans-la-gestion-des-profils-de-couleur-des-jpeg-directsCet article est à la fois un signalement de bug et un appel à témoignages afin d'évaluer la réalité du problème en termes de boîtiers et de systèmes [...]
21 janvier 2014
capture-en-mode-connecte-avec-lightroom-et-un-boitier-sony-alphaComme Capture One, Lightroom intègre une solution de capture en mode connecté, précieuse pour la photo de studio. Hélas, les boîtiers Sony en sont exclus, [...]
04 décembre 2013
reduction-du-bruit-a-tres-hauts-iso-dxo-optics-pro-9-face-a-ses-concurrentsLa version 9.1 de DxO Optics Pro améliore encore la restitution des textures et des détails à très hauts ISO (lire notre premier article sur la [...]