7Menu photo
Mise à jour de la page : 7 janvier 2009
Exécutable dcraw_89.exe (version 3.00) - réalisé avec le compilateur Microsoft - n'a pas besoin des bibliothèques Cygwin (à tester sous Vista !)
Exécutable dcrawggt89.exe (version 2.90 mais code version 8.89 Dcraw 06/12/2008 de D.Coffin . Fonctionne sous Vista yc 64 bits
Ce code supporte de nouveaux boîtiers, Nikon D90, Sony A900, Canon EOS 5D MarkII....
+ fichiers bibliothèques à mettre cyg.zip (bibliothèques Cygwin)-dans c:windows/system32 : cygwin1.dll - cygjpeg-62.dll - cyglcms-1.dll
Le code C est disponible pour toute personne qui me le demande.
Comparaison de divers dématriceurs et divers boîtiers (en cours 2 janvier 2009)
Utilitaire pour les allergiques à la ligne de commande
Version de Dcraw avec options : (ligne de commande en français)
Commentaires sur la conversion rgb = > Lab = rgb
Description sommaire de l'algorithme d'accentuation
3.00 7 janvier
2.98 5 janvier
2.97 2 janvier 2008
2.96
2.95 31 décembre
2.93 et 2.93 a 28 et 30 décembre
2.90 22 décembre 2008
2.88
2.86 - 2.87
2.83 2.84 12 décembre
2.81 6 décembre
2.80 5 décembre 2008
2.75 1 décembre 2008
2.73 28 novembre
2.71 - 2.72a - 27 novembre
2.70
2.67 et 2.68
2.65 et 2.66 19 novembre
2.55 13 novembre 2008
2.51 - 2.52 - 2.53 - 2.54
2.46 et 2.47 7 novembre 2008
2.31 26 octobre
2.28 25 octobre
2.27 24 octobre
2.24 23 octobre
2.21 20 octobre
2.20 18 octobre
2.18 16 octobre 2008
2.17 15/10/2008
Version 2.15 puis 2.16 - 14 octobre
Version 2.13 11 octobre
Version 2.12 10 octobre 2008
Version 2.11 9 octobre 2008
Version 2.0 7 octobre 2008
Version 1.94 7 octobre 2008
Version 1.92 6 octobre 2008
Version 1.91 4 octobre 2008
Version 1.88 30 septembre 2008
Version 1.74 22 septembre 2008
Version 1.7 18 septembre 2008
Version 1.5 9 septembre 2008
Version 1.43 7 septembre 2008
Version 1.42 5 septembre 2008.
Version 1.40 puis 1.41 - 4 septembre 2008
Version 1.32 30 août 2008
Version 1.31 24 août 2008
Version 1.30 22 août 2008
Version 1.25 25 juin 18h00
Versions 1.24 24 juin 11h00
Version 1.23a 23 juin 13h30
Version 1.23 22 juin 15h00
Version 1.22 21 juin 18h00
Version 1.21 20 juin 18h00
Version 1.20 20 juin 11h00
Version 1.19 19 juin 14h00
Version 1.18 18 juin 2008 9h00
Version 1.17 17 juin 2008 18h00
Version 1.15 16 juin 2008 14h00
Version 1.13 13 juin 2008 17h00
Version 1.11 12 juin 2008 10h00
Version 1.0 11 juin 2008 15h00
Version 3.00
intégration des dernières modifications de Paul Lee et Manuel LLorens : AFD, VCD, Es_median_filter, AHD qui sont un peu plus performants
suppression du bug pour "débruitage par ondelettes" et "aberrations chromatiques"
apparition d'un premier débruitage pour AFD noise : réduction du bruit chromatique par filtre hybride , optio supplémentaire pour -u
-u a b c d e f : a b c d e inchangés, f peut prendre la valeur supplémentaire 8 ou 9 - 8 avec median 3x3 et 9 avec median 5x5
Version 2.98
possibilité accrue des 4 "median" et "edge-sensitive" : il est possible en plus de leur position habituelle, cad juste après l'interpolation, de les mettre en oeuvre après l'accentuation si on constate des artefacts.
pour les activer, il suffit d'ajouter +5 à la commande initiale, par exemple
-m 2 1 active un filtre median différentiel 3x3; -m 7 1 activera ce même filtre juste après l'interpolation, puis après l'accentaution
-E 1 1 100 active un Laplacien 3x3; -E 6 1 100 active ce même Laplacien juste après l'interpolation, puis après l'accentuation
quelques paramètre internes de l'accentuation ont été légèrement modifiés pour la protection des valeurs RGB > 65535
Version 2.97
ajout d'une interpolation expérimentale de Paul Lee VCD + AHD
-q 8 avec en option un seuil AHD qui est par défaut à 8, mais réglable par -8 <a b> : 'a' multiplicateur seuil VCD (inchangé par défaut 1) et 'b' seuil AHD partiel. J'ai mis en q 14 l'interpolation 'zone de couleur'
Version 2.95 - 2.96
Bug signalé par P.Lee dans un "median 3x3" supprimé
modification du seuil par défaut de VCD mis à 1.36 au lieu de 2: de mon point de vue un peu moins d'artefacts dans certains cas..D'où le coefficient pour le modifier éventuellement qui change pour l'intervalle [1..1.6]
ajout des versions modifiées par P.Lee de AHD et PPG
les anciennes versions sont toujours appelables et portent l'appellation AHD2 ou PPG2 -q 11 ou -q 13...ou -q 12 pour AFD+AHD. Ces anciennes versions sont les seules à supporter les fonctions RGBMIN ...dont l'intérêt se limite
ajout des fonctions RGBMIN aux "median" différentiels
quelques détails...
...
Version 2.92 - 2.93
Prise en compte des dernières modifications de Paul Lee
Interpolation VCD meilleure qu'auparavant
Filtre Laplacien pour réduire les moirés et les aliasing efficace et qui ne crée plus d'artefacts : "Es_median_filter"
filtre median differentiel pour réduire les artefacts de couleurs
J'ai un peu aménagé ces options...
les possibilités d'utiliser RGBMIN et RGBMax ont été réduites (elles créaient dans certains cas des artefacts), elles sont maintenant limitées à une option -7 1 x (x variant de 5 à 21) qu'il faut déclarer pour quelle soit prise en compte. Elle ne sert plus que dasn AHD, PPG et filtre median 'normal' -m 0 x ou -m 1 x
Pour l'option VCD j'ai maintenu la possibilité de faire varier le seuil, par défaut ce seuil vaut T=2.0, mais on peut le faire varier par un multiplicateur 0.68 à 1.1...Ces changements peuvent amener un rapport signal sur bruit plus faible (ou plus élevé) et un DeltaE plus faible ou plus élevé : -8 mult
L'option 'renforcement' des pixels ' "EECI Refine" est inchangée, même si le code C l'est un peu: -6 <n>
Le filtre Laplacien qui peut réduire le moiré et l'aliasing peut prendre les mêmes options qu'auparavant - E a b c (voir plus bas)
Paul Lee a introduit un nouveau median dit différentiel 3x3, je l'ai complété par un median différentiel 5x5 : -m 2 x ou -m 3 x et maintenu les median de D.Coffin -m 0 x et J.Desmis -m 1 x
j'ai ajouté une interpolation mixte : AFD+VCD - q 10
Les résultats sur les images tests sont un peu améliorés
Version 2.90
j'ai fait un essai ce jour 22 décembre 2008, de NEF du D3x.. et oh miracle même si ce boîtier n'est pas prévu..cela fonctionne.. J'ai testé avec les mêmes réglages un D700 et un D3X à 6400 ISO..The winner is D3x...mieux en définition et sensiblement pareil, voire moins en bruit (l'image choisie sur "image ressource" est NOISE Reduction OFF).
après observation des remarques faites par 'Lassus' sur OjoDigital où il a modifié le code C, j'ai procédé à quelques modifications qui s'avèrent excellentes en s'inspirant des principes énoncés:
toutes ces remarques concernent l'interpolation
possibilité de changer les références du calcul RGBMIN et RGMAX (origine Paul Lee) qui par défaut concernent une cellule 7x7: on peut entrer 5, 7, 9, 13...21. Bien sûr le temps de traitement augmente mais la qualité de l'interpolation notamment la diminution des artefacts est importante. Pour activer cette fonction
-7 1 <val> : 1 active la fonction, <val> = 7 par défaut... 13 convient très bien : -7 1 13
possibilité de renforcer les pixels interpolés après la première interpolation. Cet algorithme présent dans VCD de Paul Lee est maintenant utilisable avec toutes les interpolations, notamment AHD. On peut également déterminer le nombre de passes. Cet algorithme minimise le bruit et réduit les artefacts
-6 <n> : -6 4
ces 2 dispositifs sont valables pour toutes les interpolations et réduisent les artefacts aussi bien en ISO élevés (3200 et plus) qu'en ISO bas (200...)
il est bien sûr possible de combiner les interpolations et paramètres divers :
-q <0...9> : type d'interpolation
-u <a b c d e f> se fonde sur AFD pour détecter et réduire le bruit
-7 1 <val>: détection des valeurs mini et maxi RGB dans une cellule WxW - à noter que VCD, AHD et PPG optimisent l'utilisation de cette détection
-6 <n> : boucle de renforcement des pixels interpolés
-m a b : filtre median RV - BV de type 3x3 ou 5x5 : réduit les artefacts de couleurs
-E a b c : filtre median 3x3 ou 5x5 + Laplacien : réduit (?) les artefacts et minimise le bruit...
Par exemple -q 3 -7 1 13 -6 4 -m 0 2 donne d'excellents résultats pour des images en bas ISO, de mon point de vue nettement supérieurs à NX2, ACR, DXO53...(sur une image test de D700 à 200 ISO chargée sur "image ressources")
Version 2.88
peu de changements sinon la commande -u qui "perd" l'option seuil VCD
j'ai ajouté l'option -8 : seuil VCD
-8 <val>
avec <val> à mettre entre 0.8 et 2
j'ai aussi introduit une nouvelle compilation, avec le compilateur Microsoft...je n'ai pas le moyen de vérifier s'il fonctionne sous Vista
Version 2.86
peu de modifications de fond...mais j'essaie de rendre les commandes des diverses interpolations et filtres (un peu) moins obscures
les commandes d'interpolations inchangées
-q :
0 = bilinéaire
1 = VNG
2= PPG
3= AHD
4= bilinéaire 4 couleurs
5 = AFD
6 = AFD+AHD
7 = Pixel Shift
8= Zone de couleurs
9 = VCD
le paramètre -u qui ajoute des phases à l'interpolation ou la complète en agissant principalement sur Noise AFD, mais aussi AFD seul
-u abcdef
les paramètres a b et c peuvent s'appliquer à l'ensemble des interpolations et agissent en amont de l'interpolation principale
a = active la fonction a=1
b= détecte le bruit 0.100
c= enlève le bruit 0.100
les paramètres d et e ne concernent que AFD ou VCD
d= niveau de luminance 0 2 3 = par défaut 2 - AFD seul (ou VCD seul dans ce cas modifie le seuil (2 par défaut amène le seuil à 1.366 ; 1=1.26 3=1.97) - supprimé dans version 2.88)
e= luminance seule e=1 - AFD seul
le paramètre f peut selon sa valeur être spécifique à AFD ou commun à toutes les interpolations
f=1 - toutes interpolations - agit sur Noise AFD - en amont des autres , il met en place un filtre passe bas plus doux que celui d'origine
f=0 ou f=2 - toutes interpolations - agit sur Noise AFD - met en place un filtre median "map de texture" réducteur de bruit 3x3
f=3 - toutes interpolations - agit sur Noise AFD - met en place un filtre median"map de texture" réducteur de bruit 5x5
les option suivantes sont de mon point de vue à n'utiliser que si on ne peut faire autrement...(absence de produit type Noise Ninja...)
f=4 - AFD seul - met en place un filtre median réducteur de bruit global 3x3
f=5 - AFD seul - met en place un filtre median réducteur de bruit global 5x5
f=6 - AFD seul - met en place un filtre median réducteur de bruit global 3x3 et utilise le filtre passe bas plus doux
f=7 - AFD seul - met en place un filtre median réducteur de bruit global 5x5 et utilise le filtre passe bas plus doux
le filtre -E combiné median + Laplacien qui vise la suppression des artefacts
a= 1 active le filtre median 3x3 + Laplacien 3x3 de type "-4" - conforme à l'algorithme de Paul Lee
a= 2 active le filtre median 5x5 + Laplacien 3x3 de type "-4" - ajout de ma part - conforme à l'algorithmes des auteurs
a= 3 active le filtre median 5x5 + Laplacien 3x3 de type "-8" (plus fort) - ajout de ma part
b = nombre de passes - si b=0, le filtre 7x7 est activé, les interpolations AHD et PPG prennent en compte cette information
c= seuil pour le Laplacien en %; par défaut 100%..peut varier en théorie de 1% à 1000%...ajout de ma part
De mon point de vue, ce qui donne le meilleur résultat sur des images très bruitées (Image de D700 à 25600 ISO)
-q 6 -6 15 -7 1 21 -m 0 15 -y 1.3 -u 1 5 90 2 0 3 ...puis un complément avec un produit spécialisé "bruit" de type Noise Ninja (avec un réglage a minima) ...l'ensemble donne un rendu un peu supérieur à DxO5.3 qui présente un plus d'artetacts et que Capture NX2 qui dénature un peu trop le chromatisme.
Version 2.83 et 2.84
2.84 bug retiré dans AHD..qui donnait des teintes vertes...
prise en compte des modifications de Paul Lee aussi bien pour l'interpolation VCD que pour le median Laplacien
j'ai quelque peu modifié l'appel des options
-m a b
ne peut prendre que 2 possibilités 0= median 3x3 1=median 5x5
à noter que si l'option VCD est prise ou l'option Laplacien, ces 2 filtres ont un algorithme légèrement différent
-E a b c
j'ai ajouté cette option afin de la rendre "compatible" avec celle de la version de Dcraw de P.Lee
(a = 0 - n'active pas le filtre RGB min et max = gain de temps et d'occupation mémoire)
a= 1 active le filtre median 3x3 + Laplacien 3x3
a= 2 active le filtre median 5x5 + Laplacien 3x3 - ajout de ma part
b = nombre de passes
c= seuil pour le Laplacien en %; par défaut 100%..peut varier en théorie de 1% à 1000%...ajout de ma part
à noter que si a est différent de 0, les algorithmes de l'interpolation AHD et PPG sont légèrement modifiés.
Version 2.81 et oubli de ma part (11 décembre 2008)
Paul Lee a modifié le code de VCD et du filtre median+ Laplacien...j'ai moi même apporté un complément
De plus pour "faciliter" l'utilisation les 2 options -m et -u sont utilisables avec toutes les interpolations
- m peut prendre 4 options :
-m 0 : filtre median 3x3 (origine)
-m 1 : filtre median 5x5 (J.D)
-m 2 : filtre median 3x3 + Laplacien (P.Lee)
-m 3: filtre median 5x5 + Laplacien
et -u abcdef
a = active la fonction a=1
b= détecte le bruit 0.100
c= enlève le bruit 0.100
d= niveau de luminance 0 2 3 = par défaut 2 - AFD seul
e= luminance seule e=1 - AFD seul
f = option complémentaire : défaut=0 - 1 = passe bas plus doux (AFD) 2=median carte de texture 3x3 3= median carte de texture 5x5 4 = comme 2 plus median 3x3 (AFD) 5=comme 3 plus median 5x5 (AFD)
oubli de ma part :
j'ai simplifié l'accès aux diverses interpolations, mais j'ai oublié de le mentionner...(c'est sous entendu avec l'option -u) et présent dans l'aide de la ligne de comande
-q :
0 = bilinéaire
1 = VNG
2= PPG
3= AHD
4= bilinéaire 4 couleurs
5 = AFD
6 = AFD+AHD
7 = Pixel Shift
8= Zone de couleurs
9 = VCD
avec ces différentes interpolations on peut faire l'usage (je n'ai pas tout vérifié) de -u et -m
Version 2.80
j'ai introduit 2 nouveaux algorithmes d'interpolation
-q 11 : area_color
-q 12 : interpolation VCD de P.Lee. Cette interpolation se "marie" avec un filtre median et Laplacien adapté :
-m 2 x : x = nb de passes
j'ai mis à jour AFD avec les dernières modifications de M.LLorens
pour toutes les interpolations il est possible d'utiliser le filtre median et laplacien
à noter que la commande de débruitage par ondelettes "-n x" ne fonctionne pas avec AFD
Version 2.77
vues les incompatibilités de caractères rencontrées avec Linux... J'ai changé l'appel de certaines fonctions..en utilisant toutes les lettres de notre alphabet, plus quelques chiffres
u remplace £
G remplace %
O remplace @
Q remplace µ
R remplace [
V remplace $
1 remplace ]
2 remplace #
3 remplace ç
et 5 convertit la sortie en PSD
Bien sûr cela change...mais c'est comme tout on s'y habitue
Version 2.75
M.LLorens m'a adressé des changements et ajouts de code pour l'interpolation
amélioration (légère) de AFD
interpolation mixte AFD - AHD
interpolation "pixel shift" : très rapide, peu génératrice de bruit, mais qui altère les couleurs...
de plus j'ai mieux "intégré" (et je pense un peu) facilité les commandes AFD-Noise
dorénavant les commandes sont les suivantes :
-q <0..10>
avec
q=0 biliniéaire
q=1 VNG
q=2 PPG
q=3 AHD
q=4 bilinéaire 4 couleurs
q=5 AFD
q=6 AFD Noise
q= 7 AHD Noise
q=8 AFD+AHD
q=9 AFD Noise + AHD
q= 10 Interpolation "pixel Shift"
et les compléments AFD et Noise qui s'activent par
-£ a b c d e
a et b : seuil détection du bruit et réduction du bruit
c: passes de luminance = 2 par défaut, essayer 0 ou 1..
d: luminance seule = 0 par défaut
e : peut valoir 0 2 3 4 ou 5
=0 pas de filtre median
=2 filtre median 3 x 3 "map de texture"
=3 filtre median 5 x5 "map de texture"
=4 comme 2 + débruitage total (chroma + luminance) par median 3x3
=5 comme 3 + débruitage total (chroma + luminance) par median 5x5
Version 2.73
nouvelle version de Dcraw de base (D.Coffin) : 8.89 avec nouveaux boîtiers dont EOS5D MKII, G10, 50D, etc.
Version 2.71 - 2.72
pas de "révolution" sinon un suivi dans le rapport à l'écran à l'exécution de DCraw...:
des incidences des réglages notamment du contraste (force et seuil) qui peut être très destructeur
pour les opérations demandées (contraste, luminosité...), je limite volontairement (avant conversion rgb) les valeurs de L à 0..100
j'indique aussi le nombre d'itérations pour réintégrer le gamut
etc.
tout ceci vise à guider l'utilisateur pour régler au mieux...sans trop sortir du gamut (ou mieux ne pas sortir du tout) afin d'éviter les aplats, dérives de couleurs,...
2.72 : l'option -N 2 x 1 -# 5 produit un fichier texte : "horsgamut.txt".. qui reprend les valeurs Lab (avant gamma), les coordonnées des pixels concernés..et la valeur du hors gamut (0...65535).
Version 2.70
introduction d'un filtre median RGB en plus de celui déjà présent
on peut soit activer en filtre 3x3 (9 pixels) ou 5x5 (25 pixels) : le second est bien sûr plus lent d'environ 4 fois...
la version d'origine est 3x3
en théorie plus on accroît la dimension du filtre, plus on gagne en "douceur" pour réduire les artefacts
commande -m a b
a = 0 : 3x3
a= 1 : 5x5
b= nb de passes...
Version 2.65 - 2.66...+ 2.68
bug retiré dans contraste...2.68
bug retiré en colorimétrie relative
bug retiré dans les fenêtres multiples
plus de possibilités pour colorimétrie relative : -# peut être à 4 ou 5 : 4 plus "précis", 5 plus rapide (très peu d'écarts entre 3 4 et 5)
possibilité de baisser la chromaticité pour réduire le bruit
-ç a b c
a = numéro de fenêtre
b= seuil en luminance en dessous duquel la chromaticité sera réduite
c : % de baisse de chromaticité
Version 2.62 et 2.63
introduction d'une "mini" gestion des couleurs
avec -N 2 x 1 ou -N 2 x 2
compléter par -# a
a = 0 laisse comme tel
a= 1 Clip => colorimétrie absolue
a= 2 remplace par anciennes valeurs (avant modifications souhaitées)
a= 3 colorimétrie relative - agit pour l'essentiel sur la chromaticité pour "entrer" dans le gamut (le traitement peut être un peu plus long)
recommandé sauf en debugage - # 3
2.63 : correction d'un bug (petit ??)..certes la colorimétrie relative "fonctionne", mais le processus a oublié de traiter une partie des données normales = corrigé...
2.63 : ajout des option -N 2 x 6 et -N 2 x 7 : qui font la même chose que -N 2 x 1 ou -N 2 x 2 avec -# 3
Version 2.60
j'ai trouvé un bug de l'environnement "cygwin"... qui par calcul attribuait aux très faibles valeurs de L ...des valeurs négatives. Ce bug est résolu...
dorénavant - ce qui n'exclue pas les hors gamut - les images pour les valeurs L < 1 sont nettement plus propres...
Version 2.55
La version 2.54 présente un très gros bug...
La "correction" du hors gamut est délicate... quoi faire ? (au delà des bugs de programmation).
Je propose la démarche suivante:
lorsqu'on se sert de -N 2 x y , seule les options -N 2 x 1 et -N 2 x 2 vont permettre de traiter le gamut spécifiquement. Les autres paramètres gardent leurs caractéristiques précédentes (avant les version > 2.50)
par défaut tous les paramètres qui vont suivre sont à zéro
la commande nouvelle
-# a b c d e f g h
cette commande est à associer avec -N 2 1 1 par exemple
pour les basses valeurs rgb (je ne dis pas BL, car le hors gamut peut être partout : lorsque je vérifie avec ma mire 468 couleurs où j'ai volontairement exagéré contraste et saturation ce sont des couleurs vers L=75 a=-11 b=-23 qui demandent les plus gros correctifs), on utilisera les paramètres 'a' 'b' et 'c' respectivement pour les canaux rouge, vert et bleu. par exemple en réglant 'b' sur 500 on "récupèrera" les valeurs 'g' jusqu'à g=-500 en le ramenant à 0 . je pense qu'il ne faut pas dépasser zéro' et laisser un peu de négatif
pour les hautes valeurs rgb (je ne dis pas HL, car le hors gamut peut être partout), on utilisera les paramètres 'd' 'e' et 'f' respectivement pour les canaux rouge, vert et bleu
le paramètre 'g' permet de décaler le gamut globalement (je n'aime pas) : l'intervalle [0..65535] devient [g... 65535-g]
enfin le dernier paramètre laisse 3 choix à l'utilisateur :
h= 0 - l'image reste comme telle avec d'éventuels dépassements de gamut (visibles)
h=1 - en fonction des nouvelles valeurs entrées en (a..f), ce qui excède sera "clipé"
h=2 - en fonction des nouvelles valeurs entrées en (a..f), ce qui excède se verra attribuer les valeurs 'rgb' initiales du capteur.
quelles paramètres et valeurs : en examinant l'histogramme on verra ce qui "déborde", le canal bleu par exemple, pour les valeurs inférieures à 0.
Version 2.54
après réflexion sur le dépassement de gamut, j'avais plusieurs possibilités en termes de gestion des couleurs. Dans l'esprit de Dcraw (et de Perfectraw) de laisser totalement la main à l'utilisateur, j'ai modifié l'approche de la version 2.53. Plutôt que de borner l'espace par une valeur arbitraire et pour tenir compte des différents gamma (variables,...), et des différents TRC...Je propose la démarche suivante.
1) j'ai réduit le réglage par défaut à rgb=100 ce qui veut dire que tout ce qui est au-dessus de 100 et en dessous de 65435 sera laissé comme tel en fonction du choix proposé par -N 2 x y
2) je propose, si bien sûr on soupçonne un dépassement de gamut, où qu'on veuille le voir, d'utiliser l'option "-N 2 1 1 reglage", avec réglage la valeur entrée jusqu'à obtenir (si bien sûr on le souhaite) la suppression du hors gamut. Ce 'réglage' par exemple 150 va permettre ensuite, en fonction du choix -N 2 1 0 reg ou -N 2 1 9 reg ou etc. d'avoir le résultat voulu
Nota : j'ai arbitrairement choisi la même valeur 'reg' pour les basses valeurs 'rgb' ou les hautes valeurs 'rgb' (le dépassement de gamut étant le plus souvent dans les basses valeurs... ce qui ne veut pas dire obligatoirement basses lumières). Bien sûr je peux changer cette façon de faire...
Version 2.53
J'ai ajouté un paramètre à la commande -N a b c d : 'd' - celui-ci autorise l'utilisateur à modifier la gestion des couleurs (cas où c vaut 4 , 5 ou 9) en instaurant un seuil (en valeurs 16 bits) en deçà duquel les valeurs rgb initiales ont conservées. Par défaut si vous entrez d='0', cette valeur sera à 500 (soit environ rgb=2 dans l'intervalle [0..255]). On peut entrer n'importe quelle valeur comprise entre 0.01 et 5000
j'ai incorporé un nouvel algorithme (plus rapide) de traitement du gamma, mis au point à l'occasion d'un (petit) problème de Perfectraw. Il fait gagner environ 1.5 secondes de temps de traitement pour un résultat quasi identique.
Version 2.51
j'ai modifié, homogénéisé les paramètres "accentuation" (tout le reste est identique)
-µ 'a'.... : 'a' peut valoir 1 2 3 ou 4. Cette option "marque" plus ou moins les pixels - elle est différente de l'option "force"
1 = doux
2 = normal
3 = fort
4 = très fort
j'ai aussi intégré la possibilité de "débruiter" l'option AHD (avec la même procédure que pour AFD):
-q 7 = AHD Noise
la commande -£ est opérationnelle, mais seuls les paramètres 'a' (détection du bruit) et 'b' (réduction du bruit) sont pris en compte
quelques commentaires sur les options AFD :
le paramètre -£ 'c' : passes de luminance vaut 2 par défaut. Selon les auteurs de rares images peuvent nécessiter 'c' = 1 ou 3
si on utilise l'option "AFD - AFD Noise ou AHD Noise" il ne faut pas utiliser l'option -n xx (débruitage par ondelettes") qui amènera des artefacts colorés.
les essais réalisés par M.LLorens amènent des réglages de -£ 'a' 'b' du type 'a'=10 à 30 et du type 'b'=70 à 95
Version 2.50
Introduction de l'algorithme d'interpolation AFD
origine Lian Naixiang, Chang Lanlan and Prof. Tan Yap Peng. et interprété par Manuel LLorens
j'en dirais plus , mais..:
ligne de commande
AFD seul : -q 5
AFD noise : -q 6
options -£ a b c d : a :seuil de bruit (0 100), b: réduction bruit (0 100), c=passes de luminance (0..3) défaut =2, d: luminance seule =1 défaut =0;
j'ai changé (un peu) les paramètres de -µ (accentuation) et il y a 5 algorithmes 1 2 3 4 5 .. avec 1 et 2 plutôt pour les petits rayons (2 + fort)
Version 2.46 et 2.47
Peu de modifications, sinon la possibilité pour l'utilisateur d'utiliser 3 algorithmes de convolution légèrement différents.
Le premier, par défaut a=1, est celui de base.
Les second, troisième et quatrième donnent progressivement (un petit peu) plus de poids aux pixels extérieurs à la matrice (7x7 dans ce cas au lieu de 5x5) et donc un peu moins au centre. Ces 3 algorithmes "devraient" être un peu plus appropriés pour les rayons plus élevé et le '1' pour les très faibles rayons.
Ces 4 options se commandent par le premier paramètre 'a' : a = 1 2 3 ou 4.
J'ai aussi introduit un "rayon" de 0.375 !
Remarque importante: l'accentuation proposée dans ce produit (Dcraw) ne vise pas à résoudre les problèmes d'impression ou de fabriquer des effets spéciaux. Son objectif, c'est de profiter du fichier brut (avant conversion RGB et gamma) pour (re)donner à l'image un rendu voulu, sans faire monter le bruit, après les traitements d'interpolation...ou pour (re)donner à l'image ce que le photographe avait initialement réglé sur son boîtier et que le logiciel (ici Dcraw) ne sait pas interpréter. En ce sens sont à privilégier:
les faibles rayons 0.5 - 1 ou 1.5
le travail en 1 passe
des niveaux de "force" réduits : 10 à 70
la prévention par absence de traitement des BL et des HL : L > 3 ou 5
juste ce qu'il faut pour traiter les aplats (détails) et éviter les images granuleuses : L=1 à 3
...
Version 2.45
Algorithme de convolution différent
algorithme rapide différent qui amène sensiblement les mêmes résultats que l'algorithme "lent"
aucun décalage de pixel n'est effectué (voir plus loin)
je pense résultats meilleurs : surtout une image plus précise.
De mes premiers essais (que je publierais..) résultats au moins égaux à ceux de Photoshop et supérieurs à ceux de ACR. J'ai fait des tests sur des crops 600% afin de voir et mesurer les pixels (en 16 bits). L'image choisie est volontairement difficile avec une transition "oblique" entre un ciel et une montagne de calcaire à Pamukkale (Turquie). J'ai choisi une image réelle plutôt qu'une mire car il y a plus d'incidences réciproques des pixels entre eux. La transition n'est pas "simple" (du clair au foncé) mais multiple. Pour l'instant (6 novembre), j'ai testé plus de 15 transitions de 9 pixels - toujours les mêmes - pour des rayons de 0.5 et 3 et pour différents réglages : force, filtres, rapidité, aplats,...
la commande "aplat" est mise par défaut à L=2 et n'amène pas d'écarts sur cette transition complexe selon que la commande est activée ou non - sinon pour des valeurs très importantes L=10 ou 15.. Par contre elle adoucit les ciels et les zones lisses ou presque lisses (en fonction du réglage)
la commande vitesse qui est mise par défaut sur "rapide" n'amène pas (ou très peu) de différences mesurables
j'ai fait les comparaisons avec ACR et Photoshop en tâtonnant pour ces deux produits pour trouver les réglages proches afin d'obtenir des résultats comparables
les images sont toujours propres, très semblables... (en crops 600%), si Photoshop travaille en mode normal la qualité des couleurs est inférieure, si on travaille en mode fusion "luminosité" les résultats sont quasi identiques (aux petits écarts de réglages près..)
bien sûr il faut "apprendre" à se servir des paramètres qui sont différents de ceux des autres produits.
à suivre.
ligne de commande actualisée
-µ a b c d e f g h i
a : active la fonction 1
b: nombre de passes, 1 à 2 recommandées
c: rayon-contraste, 0.5 ou 1 ou 1.5 ou 2 ou 3
d : force de 0 à 100, des valeurs de 10 à 70 semblent raisonnables. Attention entre les 5 réglages possibles de "rayon-contraste" les valeurs de force ne sont pas exactement semblables...et peuvent donner des résultats différents - dit autrement le 50 de l'un peut être 40 ou 60 pour un autre rayon.
e: fixe la rapidité d'exécution e=0 normal - e=1 plus lent seulement pour les rayons 1.5 2 et 3
f: filtre de limitation de la force entre 0 et 100 - maxi effet à 100 - n'a d'effet que si 'g' est différent de zéro
g: filtre d'action sur le seuil (qui n'est pas celui repris en e) de 0 à 100...et il fonctionne
après de nombreux essais, ces filtres fonctionnent, mais le résultat demande une visualisation graphique en temps réel pour "voir" les changements, donc en ligne de commande je ne recommande pas ces 2 paramètres qu'il vaut mieux laisser à 0.
néanmoins si on entre par exemple d=70 avec f=20 et g=90 on obtient une transition correspondant à force=90, mais avec un contraste supérieur. Si on entre d=70 et f=70 et g=95 on obtient une transition correspondant à d=60 mais avec un contraste plus faible
h : filtre de protection des aplats ou de rendu des détails en écarts de luminance de 0 à 5. De faibles valeurs laissent agir tout et montrent tout. Par exemple h=2 n'agit pas si les écarts entre 9 points de mesure du rayon 1, sont inférieurs à L=2. Ressemble à "détails" de certains logiciels. Par défaut si on entre h=0 dans la ligne de commande, la valeur sélectionnée par le logiciel sera de 2, valeur moyenne qui améliorera les aplats et portraits. Si vous entrez une autre valeur 0.01 ou 5 ou 10, c'est cette valeur qui sera choisie
i: protection des BL (et HL) - n'accentue pas les valeurs inférieures pour limiter le bruit - en valeurs L (de 0 à 4), par défaut l=2. si vous entre 0.01 ou 5 ou 10 c'est cette valeur qui sera choisie
un affichage apparaît après l'accentuation pour montrer le nombre de pixels concernés par les actions :
la ligne supérieure :
BL-HL et Aplats exclues parle d'elle même, ce sont le nombre de pixels qui ne sont pas concernés par l'accentuation des très basses (ou hautes) lumière. Par exemple le logiciel n'accentuera pas les valeurs dont L est inférieur à 1. Pour les aplats c'est le nombre e pixels concernés par un écart de luminance donné et qui ne sont pas accentués
Préserver LH xxxxxx LB yyyyyy; ce sont le nombre de pixels - proches des transitions non concernés par le filtre de force - le filtre 'g' agit sur cette limite. Il est souhaitable que ces valeurs soient supérieures à zéro...
la ligne inférieure :
Action filtre : intermédiaires LH wwwwww LB zzzzzzzz, ce sont le nombre de pixels sur lesquels est appliqué le filtre de force 'f'
par LH et LB il faut entendre pour chaque transition les pixels dont la valeur L est inférieure ou supérieure à la moyenne du pixel en cause.
je supprime volontairement les commentaires realtifs aux versions précédentes d'accentuation pour éviter les confusions
Version 2.34
2 bugs importants ont été retirés. Ils provoquaient un obscurcissement des ombres et une dérive colorimétrique (pour ces ombres) dans le cas d'images hors gamut.
A priori résolu
j'ai de plus arbitrairement monté le seuil possible de limitation des BL à L=15...on n'est pas obligé de s'en servir.
Pour éviter le problème lors d'images à fort gamut ... au lieu d'activer la fonction rgb=> Lab => rgb par -N 2 1 0 ou -N 2 1 3 utiliser -N 2 1 9 (rapide) ou -N 2 1 5 (affichage) ou -N 2 1 4 (précis)
Modification version 2.01 à 2.27 2.28 et 2.30 et 2.31...2.32
Modifications version 2.0
cette option est "buggée"...
attention version totalement buggée... que je revois...
je "profite" du travail fait sur les zones de contrôle, pour me servir des mêmes procédures, mais en les adaptant au "micro-contraste". Ce micro-contraste (accentuation ?) peut se décrire comme suit, car c'est cet algorithme que j'ai mis au point et qui est actuellement présent dans cette version. J'ai choisi des termes proches de ceux utilisés par ailleurs pour que l'utilisateur ne soit pas trop perdu, même si l'algorithme paraît différent de ceux habituels.
L'utilisateur définit :
un "rayon" (en fait le demi côté) d'un carré de pixels. Ce rayon permet de calculer le nombre de zones en partant de la largeur et de la hauteur en pixels de l'image.
dans une première étape, le logiciel va calculer la moyenne de la luminance de chaque zone; par exemple si on définit un rayon de 2 pixels, la machine va faire environ 650000 fois le calcul pour un capteur de 10M°.
une "force" - pour chaque zone,je me sers de la routine "contraste" en entrant "force" comme paramètres après la virgule de 1. Le contraste entré devient 1.34 si on entre 34 comme force
un seuil limite d'action : cette routine a besoin d'un seuil limite d'action en valeur L, à partir duquel le contraste va diminuer progressivement. (et 100-L pour les basses lumières).
une progressivité : je me sers de la progressivité pour masquer les ruptures trop franches aux variations importantes de luminance.
la commande se traduit comme suit (exemple):
-£ a b c d e
a = 1 ou plus: active la fonction, a = nombre de passes
b = force - des valeurs comprises entre 5 et 40 sont acceptables.. rien n'interdit d'entrer plus
c = rayon en pixels - des valeurs comprises entre 1 et 10 sont acceptables, on peut bien sûr entrer plus
d = progressivité en pixels. Ce paramètre est important pour masquer les créneaux...Des valeurs proches du rayon (en étant inférieures) sont recommandées.
e = seuil limite d'action - en valeurs L, des valeurs entre 60 et 85 donnent de bons résultats.. on peut entrer plus.. jusque 90
cette version est expérimentale et donne un effet d'accentuation, avec des algorithmes de mon cru. On doit pouvoir améliorer (peut être en jouant également sur la chromaticité ??)
un bug actuel que j'espère résoudre rend impossible l'usage simultané de cette fonction avec d'autres options -N
Modifications version 1.94
possibilité d'utiliser jusqu'à 50 zones de contrôle secondaires... Il "suffit" (!) d'utiliser la syntaxe -] suivie du numéro...ex -] 1 xxxxx et -] 2 yyyy et bien sûr d'y associer les traitements souhaités associés à chaque zone
Par exemple on peut entrer : dcrawggt88 -w -v -o 4 -4 -T -g 2 -Y 0 1 -N 2 1 0 -U 0 6 0 -] 1 50 50 500 1387 100 -@ 1 1.1 1.4 1.2 -] 2 50 1000 291 334 140 -Z 2 1.3 60 -] 3 2500 200 500 500 5 -@ 3 1 1.1 0.8 -% 3 1.3 80 _asc4145.NEF
il est possible (je l'ai testé..sans la ligne de commande) de créer 10000000 de zones !...pour un usage futur!
Modifications version 1.91
cette version me parait une évolution assez importante et a nécessité un certain niveau de travail - du fait du fonctionnement en lignes de commandes. Si bien sûr une interface graphique interactive reprenait ces modifications, elle permettrait facilement une extension des possibilités.
La possibilité est donnée de créer des fenêtres supplémentaires (une seule pour simplifier dans le cas de la ligne de commande). A l'intérieur de ces fenêtres on peut faire varier l'ensemble des paramètres concernés par l'option -N (travail en mode Lch Lab), c'est à dire à ce jour : luminosité, exposition , traitement des basses lumières, chromaticité (saturation), contraste, rendu (paysage, portrait, standard..), mais il serait possible si le code de Dcraw évolue, de prendre en compte également l'accentuation et le débruitage (tous les deux en mode Lab).
Cette fenêtre supplémentaire se comporte ainsi comme une zone de contrôle (à l'image des points de contrôle de Nikon Capture NX).
On peut d'une part appliquer une modification de son choix à l'ensemble de l'image (par exemple contraste et chromaticité) et agir sur la fenêtre secondaire sur la chromaticité (avec d'autres valeurs) et le traitement des basses lumières, etc. Tous les paramètres sont combinables.
Le traitement en lignes de commandes étant contraignant, j'ai été amené pour chacun des paramètres qui intervient sur l'option -N (sauf -$ qui mesure et -B pour traiter manuellement les HL qui est plus qu'expérimental et non aboutit), à ajouter en tête de commande le numéro de fenêtre , '0' agit sur l'image entière, '1' agit sur la fenêtre sélectionnée; Par exemple l'ancienne commande -@ 1.1 1.3 1.2 qui agissait sur la chromaticité devient @ 0 1.1 1.3 1.2 pour une action sur l'image entière et @ 1 1.1 1.3 1.2 pour une action sur la fenêtre.
il est bien sûr indispensable de déclarer la fenêtre avec l'option -]
-] prend 6 paramètres (a b c d e f):
a = 1 : seule fenêtre à ce jour possible
b : position de la fenêtre par rapport au bord gauche de l'image (en pixels)
c : position de la fenêtre par rapport au bord supérieur de l'image
d : largeur de la fenêtre
e: hauteur de la fenêtre
f: nombre de pixels traduisant la progressivité entre l'image modifiée et les parties voisines. Ce nombre peut varier de 1, on voit nettement apparaître les contours, à la moitié de la plus petit valeur entre largeur et hauteur, dans ce cas la transition est difficilement visible. Cette progressivité joue sur les 3 composantes L c et h.
Par exemple en entrant -] 1 50 200 1500 700 100, on crée une fenêtre secondaire positionnée à x=50 et y=200 et faisant 1500 pixels de large et 700 de haut. L'image est pleinement modifiée dans la zone centrale soit un rectangle dans ce cas de 1300 par 500 et sur 100 pixels de chaque côtés on assure une progressivité.
Bien sûr pour prendre les coordonnées il faut insérer dans la ligne de commande -j -t 0 qui va positionner l'image dans les conditions de capture de l'appareil.
éditer le menu 'prompt' pour voir les modifications aux commandes.
Modifications version 1.88
Un apport qui peut sembler inutile...mais qui en réalité permet à nouveau de comprendre ce que fait le logiciel...
J'ai introduit la possibilité - toujours en activant l'option -N (travail en mode Lab, Lch) - de scruter une partie de l'image - avant les conversions RGB (gamma, espace..). Pour que ce soit opérationnel il est nécessaire (comme pour une balance des blancs sur une zone grise) d'entrer dans la ligne de commande " -j -t 0 " qui va mettre l'image avec les pixels orientés comme à la prise de vue.
ensuite en entrant -$ pixels gauche, pixels haut, delta1, delta2
* où pixels gauche: nombre de pixels à partir de la gauche de l'image, qui marque le début de la zone à mesurer
* où pixels haut : nombre de pixels à partir du haut de l'image, qui marque le début de la zone à mesurer
* delta1 = largeur de la zone en pixels (> 0) 5 à 20 sont a priori des choix possibles
* delta2 = hauteur de la zone en pixels.
on obtient au traitement 2 lignes :
la première donne pour cette zone les valeurs Lab "moyennes" correspondant à l'espace colorimétrique choisi pour le calcul.
la seconde donne les valeurs rgb "moyennes" (avant conversion RGB via l'espace colorimétrique de travail). J'ai exprimé ces valeurs dans l'intervalle [0..255] qui est plus familier que (0..65535).
Dans les possibilités offertes, cela permet entre autres un "bricolage manuel" des couleurs via l'option -B a b c d e f - en complément de -H 3 à 9 (voir le prompt de Dcrawggt88 pour informations!), mais qui permettrait en faisant du développement complémentaire et avec une interface graphique de simuler sensiblement une partie des fonctionnalités des points de contrôle
mais cela permet de comprendre ce qui se passe et les incidences des paramètres de gestion des couleurs. Par exemple, on constatera... ce qui peut paraître évident... que le choix de sortir le TIFF sans espace de couleur (option -o 0 ) inscrit les valeurs (rgb) dans le TIFF (cqfd)..les valeurs rgb calculées (après interpolation, balance des blancs, etc. mais sans gamma ni espace) et rgb affichées sont les mêmes.
Modifications version 1.85
j'ai modifié l'algorithme de l'option -@ chromaticité. Au lieu systématiquement d'appliquer un coefficient aux tons ternes, pastels et saturés , je mesure d'abord pour chaque pixel la saturation RGB et en fonction de sa valeur (terne, pastel, saturée)..j'applique le coefficient ad hoc ou je le minore pour éviter de déborder de l'espace colorimétrique de calcul. C'est un autre choix, qui prend quelques millisecondes de calcul en plus, mais est (un peu) plus respectueux des habitudes et de la colorimétrie...lorsque bien sûr on pousse loin les saturations. En effet saturation et chromaticité n'ont pas les mêmes références, une couleur peut avoir une faible chromaticité et être saturée...
Modifications version 1.84
toujours avec l'option -N, ajout de l'option -U <a b> qui agit sur la luminosité
'a' : déplace l'histogramme de 'L' (luminance) vers la droite ou la gauche
'b' : 0 accroît la luminosité, 1 diminue la luminosité
attention il n'y a volontairement aucun contrôle, si vous entrez -U 50 0, l'histogramme va être déplacé de la moitié.. cad le point zéro se retrouver à L=50. Donc à utiliser avec modération par exemple -U 5 1 ou -U 10 0.
Modifications version 1.83
essentiellement de forme ou pour prévenir de mauvaise commandes
changement du format du seuil pour l'option -Z (exposition en mode Lch). J'ai mis le même type de données que pour -[ (basses lumières) et -% contraste, en valeurs de luminance.
prévention des mauvaises entrées - par exemple seuil < 50 qui devient 50 automatiquement, etc.
forme du "menu" après le prompt : lignes plus courtes donc a priori plus lisibles.
un petit bug retiré.
Modification version 1.80
paramètre supplémentaire pour l'option -[ (basses lumières): un quatrième paramètre compris entre 0 et 4 (valeurs L) fixe le seuil en dessous duquel aucune action ne se produit, afin de limiter la montée du bruit dans les BL. Si ce seuil vaut zéro, l'ensemble de l'histogramme est traité. Si L=0.7 les valeurs en dessous de 0.7 ne seront pas modifiées...
Modifications version(s) 1.70 à 1.79
elles visent pour l'essentiel :
corriger les bugs, plantages, etc.
optimiser le trio : performances graphiques, rapidité et encombrement mémoire : le langage C n'a pas de "garbage collector" ce qui rend problématique la gestion de la mémoire qui est très fortement sollicitée dans l'opération rgb=> Lch, Lch => rgb
Apports version 1.74 : ajout de 2 espaces colorimétriques de conversion pour l'option -N : AdobeRGB et Bruce RGB
Optimisation du code C - plus compact - pour l'option -N
affichage plus complet des dépassements d'espaces colorimétriques par l'ajout de 3 lignes qui apparaissent après la ligne : "Conversion Lch ==> Lab => xyz => rgb"
la ligne suivante est maintenue (exemple) : "depas: i_r Rouge 133623 i_g vert 13197 i_b bleu 0" - elle dit que par rapport à l'espace de conversion choisi (ici Prophoto) 133263 pixels ne sont pas par calcul dans l'intervalle (0...65535) pour le canal rouge, 13197 pour le vert et 0 pour le bleu
apparaît ensuite la ligne "minimum rgb calcul -1749 maximum rgb calcul 65536"; ce qui veut dire que la valeur minimal théorique est de -1749 par rapport à (0 ...65535) et le maxi à 65536 soit +1
apparaît ensuite 2 lignes - une pour le minimum et l'autre pour le maximum : "Minimum 'traduit par option' en rgb = 296 63787 60 et couleur fausse= vert " (et similaire pour le maximum), veut dire que la valeur rgb correspondant au minimum par calcul (-1749) est le trio rgb : r 296 g:63787 b:60 et que la couleur fausse est le canal vert.
selon l'option choisie :
-1 ou -2: - qui ne borne pas les valeurs - va prendre en compte les valeurs -1749 et 65536 et "essayer" de rendre quelque chose. Bien sûr le type de variable déclarée dans DCraw pour l'image est de type 'ushort', qui ne peut prendre des valeurs qu'entre 0 et 65535. Dans ce cas le transtypage va amener la valeur fausse à 65536-1749 = 63787... au lieu de -1749. Ce qui va amener à l'écran des couleurs atypiques qui vont montrer les pixels défectueux
-3 - qui borne les valeurs, va ramener la valeur -1749 à zéro. Cette option affichera qu'il y a des pixels 'out' mais donnera un résultat à l'écran et dans le TIF conforme aux règles habituelles de la colorimétrie relative.
-4 ou -5 : - laisse les anciennes valeurs rgb. Cette option affichera qu'il y a des pixels 'out', mais donnera un résultat à l'écran et dans le TIF correspondant aux valeurs avant conversion rgb => Lch; Lch=>rgb
0 : fera comme -1 mais sans affichage
9 : fera comme 5 sans afficher
sur une image saine devrait apparaître : i_r Rouge 0 i_g vert 0 i_b bleu 0 et la ligne "minimum rgb calcul 0 et maximum rgb calcul 0"....Seule les valeurs < 0 et > 65535 seront prises en compte, par exemple si la conversion trouve 65535,3, maximum rgb calcul donnera 65535.
bien sûr en traitement d'image normal les options -1 et -2 ne sont pas à utiliser car les couleurs seront vraiment fausses
Apports version 1.76 :
action sur le contraste : -% a b :
'a' :agit sur le contraste 1.0 ne fait rien, 0.8 baisse le contraste de 20% de manière uniforme, 1.1 ..1.4 accroît le contraste de manière différenciée selon le seuil 'b'
'b': seuil d'action. Il faut entrer une valeur > 50 et < 90 (valeurs de luminance). Le contraste va prendre la valeur 'a' dans l'intervalle '100-b' <==> 'b' puis se réduire pour atteindre 1 pour L=0 et L=100.Par exemple si vous fixez le seuil L=80, de L=0 à L=20 le contraste à 1.10 le contraste croit progressivement de 1.0 pour L=0 pour atteindre sa valeur nominale à L=20. Puis de L=20 à L=80 le contraste vaut 1.1, puis de L=80 à L=100 le contraste baisse progressivement de 1.1 à 1.0.
Apports version 1.78 -
voir action sur les BL plus bas (bug a priori retiré et action changée)
plusieurs rendus spécifiques : -J a qui agissent simultanément sur contraste, chromaticité et exposition et donnent des "rendus" typés paysage, portrait ou standard... ne pas mettre l'option -J amène le rendu neutre.(si bien sûr on n'agit sur rien par ailleurs)
a = 2 : paysage
a= 3 : portrait
a= 4 : standard
Apports version 1.79
bug retiré dans l'option contraste
version de base de D.Coffin , passée de 8.87 à 8.88
Modifications version(s) 1.60
Équilibrage des canaux verts : en première étape j'ai repris le code que M.Llorens a modifié pour traiter l'équilibre des verts de la matrice de Bayer. L'ancien algorithme est remplacé par un "nouveau" où sont pris en compte 2 paramètres : a) général = équilibre les canaux verts globalement; b) général + local = fait comme a) mais en plus agit localement autour de chaque pixel. Pour cela on ajoute le paramètre "rayon" (en pixel) qui est en fait le nombre de cases du carré de pixels retouchés autour du pixel de référence.Ce rayon peut varier de 2 à 12 soit dans le premier cas 2x2 pixels retouchés et dans le second 12x12 = 144. Cette option se traduit par un (léger) accroissement du temps de traitement. Cet équilibrage des canaux verts améliore notablement le traitement de l'image (interpolation) en réduisant ou supprimant les artefacts (labyrinthes, etc.)
Prise en compte des possibilités liées à la transformation rgb ==> xyz ==> Lab ==> Lch et réciproque.
lors de l'utilisation de cette option -N , il est en première étape possible de choisir , l'espace de travail de conversion, (Prophoto ou sRGB ou WideGamut ou CIE RGB ou BetaRGB) pour limiter les "clipping" d'images, ainsi que la possibilité ou non en fin de traitement de borner (clip) les résultats ou si il y a dépassement de laisser la valeur rgb initiale. Ces options permettent de "voir" à l'image les débordements de l'espace de conversion choisi lors du traitement. Les quelques essais que j'ai pu faire confirment sur de vraies images (en plus de celles d'une mire) qu'un APN a un profil très large et très supérieur à sRGB et incite à modérer les actions sur saturation, exposition, contraste, etc...sinon au détriment des vraies couleurs.
-N a b c :
a = 2 utilise la conversion rgb==> Lch ;
b =1 via calcul XYZ par espace Prophoto (recommandé) b=2 via sRGB b=3 via WideGamut b=4 via CIE RGB b=5 via BetaRGB (1 recommandé);
c : ces options permettent de voir (soit à l'écran et /ou soit par calcul) les dépassements d'espaces.
c=0 Calcul rapide - borne valeurs rgb espace de calcul choisi
c=1 Calcul rapide -affiche données - ne borne pas valeurs rgb espace de calcul choisi
c=2 Calcul précis et lent -affiche données- ne borne pas valeurs rgb espace de calcul choisi
c=3 Calcul précis et lent -affiche données - borne valeurs rgb espace de calcul choisi
c=4 Calcul précis et lent -affiche- laisse les valeurs rgb initiales si dépassement
c=5 Calcul rapide - affiche données- laisse les valeurs rgb initiales si dépassement
c=9 Calcul rapide - laisse les valeurs rgb initiales si dépassement
De petites valeurs (aux environ de 100 et jusque 5000) sont pour l'essentiel sans importance car dues aux "erreurs" de calcul liées à la double transformation (rgb => lch =rgb), inversions de matrices, puissances, sinus, cosinus, arctg, limitations des calculs sur les réels - ici en valeurs 'double', etc.
j'ai jouté un affichage (option c = 1 ,2,3 4 ou 5) pendant le traitement qui montre a minima les dépassements de l'espace de conversion . Si il y a dépassement ici , il est sur que il y aura débordement de l'espace. Il s'affiche la ligne suivante :
dépassements: i_r rouge <val>, i_g vert <val>, i_b bleu <val> après modifications Lch.
les valeurs <val> traduisent le nombre de pixels qui ont "débordé"
i_r, i_g i_b traduisent le dépassement rgb après conversion et modifications Lch, mais bien sûr avant application du gamma. Souvent ces indicateurs traduisent des valeurs rgb négatives. On arrive assez facilement à des valeurs de 200000 lorsqu'on sature une image saine et voir plus de 2000000 lorsqu'on a une image surexposée.
option recommandée pour traiter les images rapidement -N 2 1 0 ou -N 2 1 5 , les autres options -N 2 2 0, -N 2 3 0, -N 2 4 0 -N 2 5 0 etc. peuvent servir de test ! Les options sur 'c' permettent de voir et comprendre.
dans le cas d'images surexposées, cette double conversion peut amener dans certains cas des artefacts (sauf c=4 5 ), dans ce cas, baisser l'exposition par la commande -y <val> par exemple -y 0.9 et/ou agir sur les hautes lumières avec -H <2..9>
A ce stade je n'ai mis en oeuvre et de manière spartiate et expérimentale que 3 options qui utilisent la conversion Lch
action sur la chromaticité (C de Lch) qui ressemble à la saturation, avec 3 possibilités : tons ternes, pastels et saturés:
-@ <a b c> : a agit sur les tons ternes, b sur les pastels et c sur les saturés (a=b=c=1.0 ne fait rien;par exemple a=0.9 b=1.3 c=1.2, réduit les tons ternes de 10%, accroît les pastels de 30% et les saturés de 20%)
action sur l'exposition par la luminance L avec 2 paramètres, accroissement exposition, et seuil à partir duquel se produit une limitation progressive de l'action
-Z <a b> : a agit sur l'exposition (doit être supérieur à 1) et b sur le seuil, de L=50 à 90. Par exemple -Z 1.2 65, accroît l'exposition (la luminance) de 20% pour les valeurs de L inférieures 65, puis réduit cet accroissement au dessus de L=65.
on peut constater une meilleure conservation des teintes lors de l'utilisation de cette option "luminance", plutôt que -F (exposition)
action sur les basses lumières (modification version 1.78)
-[ a b c d:
'a' : valeur d'amplification des BL entre 0.5 et 3...1.5 à 2 recommandé , a<1 accroît les ombres;
'b' : seuil limite d'action entre L=10 et L=50 ou plus..,jusque 100; 20 à 40 recommandé ;
'c': profondeur de la courbe par rapport au linéaire=0, de 0,5 à 2 ou plus ...10; 1 à 2 recommandé (coefficients logarithmiques). Par exemple -[ 2 40 1 double les BL pour L proche de zéro et n'agit plus à partir de L=40. La courbe de type '3' réduit vite son action par rapport à une décroissance linéaire, plus vite que la '3', etc. On peut essayer par exemple -[ 2 80 1, ou -[ 2.5 80 2 qui vont "éclaircir" globalement une image;
'd' : (à partir de version 1.80) = seuil de protection des ultra basses lumières. Ce seuil compris entre (en valeurs L) 0 et 4 empêche - sous ce seuil - la modification des valeurs L. Ce paramètre prévient l'accroissement du bruit.
remarque : contrairement à d'autres logiciels, il n'y a pas ici "d'amplificateur de saturation", car en travaillant sur les valeurs Lch, seule la composante L est touchée.
Quelques exemples d'utilisation des paramètres :
exemple d'amplification de la luminance pour un seuil à L=50 et une amplification de base de 2,5, pour 5 profondeurs et 2 valeurs intermédiaires de L
| Profondeur => | 0 | 0,5 | 1 | 3 | 10 |
| L=0 | 2,5 | 2,5 | 2,5 | 2,5 | 2,5 |
| L=10 | 2,2 | 2,07 | 1,96 | 1,61 | 1,133 |
| L=25 | 1,75 | 1,53 | 1,38 | 1,31 | 1,04 |
| L=50 | 1 | 1 | 1 | 1 | 1 |
- exemple pour un seuil à L=20 et une amplification de 2
| Profondeur => | 0 | 0,5 | 1 | 3 | 10 |
| L=0 | 2 | 2 | 2 | 2 | 2 |
| L=5 | 1,75 | 1,65 | 1,56 | 1,61 | 1,13 |
| L=10 | 1,5 | 1,35 | 1,25 | 1,06 | 1,00 |
| L=20 | 1 | 1 | 1 | 1 | 1 |
- exemple pour un seuil à 90 et une amplification de base de 1,5
Profondeur => 0 0,5 1 3 10 L=0 1,5 1,5 1,5 1,5 1,5 L=10 1,44 1,42 1,39 1,31 1,14 L=50 1,22 1,15 1,10 1,02 1,00 L=90 1 1 1 1 1
- exemple pour un seuil à L=30 et une amplification de base de 0,5 (réduction de 50% de la luminance des BL)
Profondeur => 0 0,5 1 3 10 L=0 0,5 0,5 0,5 0,5 0,5 L=5 0,58 0,62 0,65 0,76 0,93 L=15 0,75 0,82 0,87 0,97 1,00 L=30 1 1 1 1 1
Exemple de représentation graphique des paramètres d'action sur les basses lumières :
- amplification : ici 2.2 fois la référence. On peut choisir n'importe quelle valeur.. mais 1.5 à 2 semblent usuelles
- seuil : jusqu'à L=62,5 l'amplification a une action. On peut choisir L=25..on n'agira que sur les basses lumières ou L=95 quasiment tout l'histogramme est concerné
- profondeur : en rouge décroissance linéaire, puis 3 possibilités de décroissance. Par commodité de visualisation je n'ai mis que 4 courbes...il y en a une infinité.
- protection : ici le seuil est amplifié pour 'voir', des valeurs de L vers 0.5 ou 1 semblent correctes
- en bleu, la luminance de référence comprise entre L=0 et L=100.
- bien sûr le logiciel fait autant de fois l'opération qu'il y a de pixels...soit environ entre 7 et 22 millions de fois.
Toutes les options ( @, Z, [, %, J) sont opérationnelles si on a entré dans la ligne de commande l'option -N - attention les options @ et [ doivent être utilisées simultanément avec précautions.
Modifications version 1.50
A ce stade la modification est expérimentale et ne sert à rien!.
L'option -N <a b c > avec <a> différent de 1, procède à une conversion : rgb => xyz => Lab ==> Lch, puis fait exactement l'inverse pour revenir à rgb. Essayez pour constater que l'image et l'histogrammes sont inchangés... Sinon dans les images sur exposées ou qui "débordent" de l'espace Prophoto. Dans ce cas on verra apparaître à l'écran des artefacts de couleurs...Pour y "remédier ?", appliquer -y <val>.
Le temps de traitement est acceptable... sur ma machine avec des fichiers NEF de D200, ce traitement à vide (rgb => Lch puis Lch => rgb) prend environ 4 secondes.
Par contre, la possibilité d'avoir les valeurs Lch (et Lab), ainsi que les XYZ obtenues avec conversion en espace Prophoto, va permettre de se servir de ces modèles qui sont plus réputés pour manipuler les couleurs que RGB ou HSV ou HSL.
Donc il est dans les possibilités de faire varier :
exposition bien sûr, notamment agir sur les BL ;
contraste, avec un contraste variable
chromaticité C (peu différent de la saturation) en agissant séparément sur les teintes ternes, pastels et saturées
teinte H en pouvant agir par "tranches de couleurs" par exemple en découpant l'ensemble des teintes en 9 sous groupes et en agissant séparément
combinaison possible des 3 paramètres L C et H pour agir par exemple sur les zones cramées..
Mais il sera aussi possible de se servir des modèles de Bradford et mieux encore CIECAM02 pour ajuster le rendu en fonction des illuminants.
Également il pourra être dressé des cartes ou statistiques en termes de deltaE.
etc.
Bien sûr si c'est nécessaire et utile!
Modifications versions 1.40
Elles concernent les espaces colorimétriques de sortie incorporés à DCRAW. En version 'standard' DCRAW propose 'raw'(sans espace), 'XYZ', 'sRGB', 'AdobeRGB', 'WideGamutRGB', 'Prophoto'. Ont été ajoutés 4 espaces de grande taille soit pour leurs caractéristiques spécifiques, soit pour leur réputation.
Ce sont CIE RGB qui a un point blanc spécifique (1,1,1) , Bruce RGB (de Bruce Frazer), DonRGB (de Don Hutcheson), et BetaRGB (de B.Lindbloom). Pour activer ces options il suffit dans la ligne de commande de remplacer -o [0..5], par -o [0..9] : -o 6 = CIE RGB; -o 7 = Bruce RGB D65; -o 8 = DonRGB D50; -o 9 = BetaRGB D50.
Ces modifications se font par calcul et agissent sur la conversion en 16 bits XYZ ==> RGB et non comme le fait un profil colorimétrique (voir plus loin les options -p fichier.icm -o fichier.icm ); il suffit d'examiner les histogrammes par exemple en comparant l'action de "-o 6" (espace CIE RGB) et celle de -p CIERGB.icc -o CIERGB.icc. En termes qualitatifs il n'y a pas photo, d'un côté un histogramme régulier et de l'autre un histogramme haché...!
Ces "grands" espaces sont souhaitables pour traiter les fichiers RAW afin de conserver toutes les données, quitte bien sûr si on le souhaite, en post traitement, convertir vers un espace plus petit.
avec ces nouveaux espaces pris en compte, les options -g (gamma) et -Y (TRC) restent opérationnelles.
L'autre modification est la possibilité d'agir sur l'exposition. Je me suis servi du code C de G.Luijk (trouvé sur le web) que j'ai modifié (si on examine l'action de "exposition" dans PerfectRaw et dans ma version de Dcraw, on peut voir des algorithmes différents...) pour prendre en compte un niveau de 'seuil' variable pour préserver les HL. Par défaut ce seuil est à 32768 (par rapport à 65536), on peut choisir n'importe quelle valeur entre 50% histogramme (32768) et environ 95% (62768).
cette option se commande par -F a b c (voir plus loin la commande complète) : a = valeur de la variation d'exposition (exemples 0.6 0.8 1.4 2 ...), b=choix entre protection des HL algorithme CIE ou HSL et sans protection, c= niveau du seuil (de 32768 à 62768 par rapport à 65536).
elle agit avant la transformation matricielle XYZ RGB et la prise en compte du gamma; elle est donc différente de l'option -L qui elle agit a posteriori de ces actions. Ces deux options peuvent être complémentaires: -F abaisse l'exposition et -L relève les BL.
à partir de la version 1.41 , j'ai ajouté l'option -y <val>. Ce coefficient agir directement et proportionnellement sur les multiplicateurs de canaux. Par exemple si l'option -w (balance des blancs du boîtier) indique - 1.93594 1.00 1.2539 1.00 et qu'on entre la valeur 0.8 on obtiendra 1.5468 0.8 1.003 0.8. La balance des blancs ne sera pas modifiée mais l'exposition le sera... Alors à quoi cela sert-il car il existe déjà les options -F et -L. Dans le cas d'un histogramme normal (cad qui ne déborde pas), pas de différence sinon qu'on ne peut agir sur l'éclaircissement des BL ou la préservation des HL. Lorsqu'il y a surexposition, essayez de comparer l'option -F et -y. Dans le premier cas l'histogramme est "coupé", dans le second cas on "récupère" ce qu'il y a au delà de la limite... Bien sûr avec toutes les conséquences possibles notamment des dérives de couleurs pour les ciels vers les magentas... Plusieurs utilisations possibles :
récupérer les HL par glissement de l'histogramme sans autre actions...
compléter les options -H 2 ou -H 3 à 9 (vers 1.42), soit en récupérant encore plus les HL, lorsque la modification proposée par DCRAW est insuffisante. Par exemple -H 9 amène comme coefficients (avec l'exemple cité plus haut) 1.00 0.517 0.648 0.517, mais dans certains cas fait encore apparaître du magenta. Ajouter le paramètre -y 0.85 va amener comme nouveaux coefficients 0.85 0.4395 0.55 0.439 et une image avec une quasi absence de magenta.
compléter les options -H 2 ou -H 3 à 9 lorsque le paramètre par défaut amène une image sans zones magentas, mais sombre. Dans ce cas entrer - y 1.4 (exemple) redonnera de la luminosité à l'image et accroît les coefficients qui deviennent 1.40 0.724 0.907 0.724
etc.
j'ai activé la directive de compilation TIMER (V 1.42) qui permet de voir la durée de 4 phases de traitement :
lecture fichier et matrice de Bayer
interpolation (dématricage) et compléments
traitement des HL
conversion RGB dont gamma variable
Ajout de l'option -x a b (v 1.43) . Il est possible (c'est un ajout mineur) de modifier séparément les canaux rouge et bleu de la balance des blancs (comme le fait le point gris de Capture NX). Par exemple si le réglage du boîtier (-w) est 1.82 1.0 1.25 1.0, si on modifie par l'option -x , on obtient si a et b valent 0.95 et 1.03 de nouveaux coefficients 1.729 1.0 1.1875 1.0. Cette option permet de retoucher "à la marge" le réglage par défaut du boîtier.
Modifications version 1.32
Uniquement de forme (menus, messages...)
Modifications version 1.31
Elles sont minimes:
utilisation de la bibliothèque LCMS 1.17 au lieu de 1.14
suppression des caractères accentués dans les menus et rapports
affichage D65 ou D50 pour Prophoto et WideGamut selon le choix au lieu de Dxx
Commentaires sur la version 1.30 - août 2008
j'ai intégré les bibliothèques LCMS et JPEG, ce qui rend possible l'utilisation des options -o et -p. Malheureusement un bug persistant (DCRAW ou LCMS ?) rend inefficace son utilisation pour les profils d'entrée. Son intérêt est de pouvoir travailler dans d'autres espaces colorimétriques que ceux prévus à l'origine (sRGB, AdobeRGB, WideGamut, Prophoto, Sans espace, XYZ). Dans ce cas l'option -Y qui ajuste le rendu gamma TRC est inopérante.
Dans certains cas (pour certains processeurs) l'option -l qui ajuste les canaux verts pour améliorer le dématricage (suppression des labyrinthes notamment dans l'algorithmes AHD) fonctionnait très très mal. Ceci tient aux calculs en réels "long double" qui assurent une précision jusque 10^4932...qui dans certains cas étaient entachés d'erreurs importantes. J'ai apporté le correctif en ajoutant des options mathématiques de compilation,....au prix d'un léger ralentissement.
Je donne le choix par l'option -I 1 de remettre les espaces de sortie Prophoto et WideGamut en D65
J'ai (je pense) amélioré la présentation des options possibles des lignes de commandes (lorsqu'on tape : Dcrawggt87)
La version courante de Dcraw - celle réalisée par D.Coffin est la 8.87 du 12 août 2008 qui rend possible le traitement Raw des boîtiers récents notamment Canon EOS1000D et Nikon D700.
A titre pédagogique, j'ai ajouté des commentaires lors du travail de Dcraw, afin de voir l'action et l'ordre des divers paramètres.
Action des commandes ajoutées
16 bits 'gamma', 'courbes de contraste TRC' (Tone Reproduction Curve):
le gamma 16 bits (origine G.Luijk et M.LLorens pour l'option -g 0 ou sRGB qui ont fait un travail remarquable à la fois par son originalité et sa vitesse), modifié par moi même : option -g) peut prendre les valeurs variables raccordant une partie linéaire et une partie de type puissance, l'ensemble peut être appelé LUT. Attention les gamma de base se traduisent en réalité par un gamma moyen plus faible (de l'ordre de 5 à 10%)
'0 / sRGB' ou '9' gamma de base de 2.4 '0' doux débouche les ombres - '9' plus dur... (moyenne réelle proche de 2.2)
'2' ou 3' ou '4' / varia'