Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Nouveau module : filmic
#1
Contexte

Vous avez bien compris que, depuis 2 mois, je mets le nez dans le code de darktable, un peu pour améliorer le rendu des images, mais beaucoup pour rendre la chaîne de travail (workflow) efficace. Le workflow, c'est le grand oublié de darktable, avec des modules qui sont appliqués dans un ordre bizarre, 3 à 8 modules qui font plus ou moins la même chose, et une gestion de la couleur coulée dans le marbre (on travaille dans Lab à partir de RGB linéaire, circulez y a rien à voir).

Ces décisions ne font pas de sens, ni pour l'utilisateur avancé à qui on impose un workflow limité (tu bosses dans Lab, tu vis avec ses limites, et tu te tais), ni pour l'utilisateur de base qui se retrouve en face d'une machine à gaz alors que, oui, on aurait pu faire tellement plus simple… En ouvrant le code, parfois on a l'impression que c'est Windows qui s'est invité dans Linux : valeurs RGB codées en dur, conversions imposées d'un espace de couleur à un autre, etc. Les développeurs ont fait trop de choix et d'hypothèses à la place de l'utilisateur.

Problème 

La courbe de base de darktable est une saloperie, héritée de darktable 0.1 qui bossait avec la librairie dcraw. Elle créée une transformation non linéaire du signal RGB beaucoup trop tôt dans le pipe, avant l'application des profils de couleur d'entrée et du color checker / LUT. Mais c'est compliqué d'expliquer aux utilisateurs qui adorent la fusion d'exposition que ce module est le mal incarné. La non-linéarité du signal fait exploser un certain nombre d'opérations (algébriques) subséquentes, ce qui peut expliquer la frustration de beaucoup d'utilisateurs qui tournent en rond d'un module à l'autre sans obtenir de résultat, puisque beaucoup d'opérations sont des convolutions (flou, netteté, rotation) et qu'un signal non-linéaire viole le théorème de Parseval qui est la base de toute convolution.

J'ai tenté d'ajouter un profil logarithmique en début de pipe, afin de transformer les valeurs RGB linéaires en valeurs RGB perceptuellement uniformes (en log, les stops sont également répartis), ce qui transforme le pipe en logarithme et peut avoir certains avantages notamment en très haute plage dynamique. Mais le pipe de darktable n'est pas prêt pour ça, et il faut alors venir inverser le gamma de l'espace de couleur ou de l'écran (avec la balance couleur, par exemple), à la fin du pipe, pour avoir une image correcte.

DKT a justement fait remarquer que c'était très un workflow très peu intuitif, même si Jean-Paul et les autres ont réussi à se l'approprier pour sauver des images à large plage dynamique autrement bonne pour la poubelle.

Solution

J'introduis donc aujourd'hui un nouveau module qui réimplémente le mappage de tonalités par logarithme, mais à la toute fin du pipe, couplé à un générateur de courbes de tonalités dites "filmiques" (on va y revenir), destiné à remapper automatiquement la sortie du logarithme vers une valeur de gris spécifique, c'est à dire le gris moyen défini par votre profil écran ou couleur.

Avant

[Image: Capture-d-cran-du-2018-11-07-20-49-29.png]

Après

[Image: Capture-d-cran-du-2018-11-07-20-20-06.png]

Vous pouvez compiler et tester ce module ici : https://github.com/aurelienpierre/darkta...-equalizer

Il possède une version C et une version accélérée SSE2 (2.1× plus rapide que la version de base), et la version OpenCL arrive.

Mode d'emploi


[Image: Capture-d-cran-du-2018-11-07-20-51-54.png]

Le module s'utilise dans l'ordre des curseurs.

Le premier bloc vient directement du module correction du profil d'entrée et s'utilise pareil, à la différence que le curseur « plage dynamique » laisse place au curseur « exposition du blanc » (plage dynamique = exposition du blanc - exposition du noir, donc c'est juste une autre façon de l'écrire).

Utilisez la pipette du gris pour sélectionner la luminosité moyenne du sujet dans l'image. Au studio et en éclairage contrôlé, laissez 18 %. Dans de nombreux cas, vous allez tomber sur des valeurs proches de 18 % même avec l'optimiseur automatique.

La pipette de gris et du noir s'utilisent sur toute l'image, et prélèvent max et min. Quand vous avez beaucoup de bruit, où si le dématriçage n'est pas bon, l'optimiseur va coller le noir dans la tapis (-16 EV), il faudra alors le corriger à la main. Les plages dynamiques de référence pour chaque capteur à chaque sensibilité ISO peuvent se trouver sur DXOMark (cherchez votre appareil et ouvrez les graphes de mesures).

De bons réglages de plage dynamique doivent coller le blanc tout à droite de l'histogramme et le noir tout à gauche. Pas question ici de faire des choix esthétiques, de préserver le bruit, d'ajuster le contraste, etc. Ça, c'est pour la suite. Ici, on ajuste les bornes. Maximisez la plage dynamique, même si c'est moche.

Le second bloc construit, en interne, une courbe des tonalités qui ressemble à ça :

[Image: Capture-d-cran-du-2018-11-07-21-02-06.png]

On appelle ça « folmique » parce que ça ressemble à la réponse en luminance de la bonne vieille pellicule, et que la pellicule, c'est beau.

Pourquoi réimplémenter la courbe des tonalités ? Parce que les points de contrôle vont être automatiquement calculés à partir des propriétés du logarithme, pour ajuster le gris. Du coup, vous réglez votre intention, et le module calcule les paramètres pour vous. Simple, non ?

Le contraste est la pente de la partie linéaire centrale de la courbe. Ajustez selon votre goût, des valeurs correctes sont généralement entre 1.5 et 2.

La latitude est la largeur de la zone linéaire centrale. Un plus petite latitude préserve d'avantage les détails dans les tonalités extrêmes, alors que qu'une plus grande latitude donne plus de contraste aux extrémités. La latitude est limitée mathématiquement entre 25 % et 95 % de la plage dynamique, ne soyez pas étonné si, dans l'interface, des valeurs vous sont interdites et si la latitude est mise à jour avec ces contraintes quand vous modifiez l'exposition du noir ou du blanc.

La balance ombres/hautes lumières permet d'allouer plus d'espace, dans les extrémités non-linéaires, aux hautes ou aux basses lumières selon les détails que vous voulez préserver en priorité.

La saturation est une correction uniquement soustractive pour pallier les sur-saturations qui peuvent arriver quand on modifie le contraste en RGB.

Le dernier bloc, vous n'y touchez pas. À part peut-être la luminosité du blanc et du noir si vous aimez les effets « vintage » délavés, le gris et la puissance (gamma) sont des caractéristiques déterminées par votre profil écran ou profil de couleur de sortie.

Comment ça marche

Le module essaie de positionner 5 points de contrôle à des endroits stratégiques, calculés à partir de vos paramètres, puis essaie de faire passer une courbe par ces points en utilisant une spline de Hermite (strictement monotone). Suivant les paramètres entrés, il est possible que des points soient trop proches pour permettre une interpolation par spline (maths…), le points trop proches sont alors supprimés et l'affichage vous envoie un avertissement du genre « filmic curve using 4 nodes - highlights lost ». Pas de panique, ça veut juste dire que le logiciel a dû s'arranger mais que vous n'aurez pas exactement le résultat souhaité.

Idées d'usage

Fusionné en fusion paramétrique, avec un adoucissement sur les hautes lumières et un flou, ce module donne souvent de meilleurs résultat que le module « ombres et hautes lumières ». Vous pouvez aussi empiler des instances pour un effet mieux contrôlé.

Combiné avec le module balance des couleurs, vous avez un duo de choc qui peut remplacer 80 % des cochonneries qui polluent l'interface.

Exemples

Avant :


[Image: woodstock-people-03.jpg]

Après : 2 instances de balance des couleurs avec les préréglages orange-bleu fournis + module filmic


[Image: woodstock-people-02.jpg]

Avant


[Image: IMG-1342-01.jpg]

Après : filmic + balance des couleurs avec neutralisation des couleurs automatique


[Image: IMG-1342.jpg]

Modules/cochonneries que filmic remplace

* courbes de base
* mappage global des tonalités
* mappage local des tonalités
* ombres/hautes lumières

Modules que filmic complète

* courbes des tonalités


Chaîne de travail suggérée

1. balance des blancs
2. exposition
3. filmic
4. balance couleur
5. débruitage s'il y a lieu
6. zones de couleurs si besoin
7. courbes des tonalités pour fignoler si nécessaire

Note de fin

La feature freeze the darktable 2.6 est dans 7 jours, j'ai besoin de vos tests. Secouez-le, battez le, et dites moi ce qui casse.
Aurélien, photographe portraitiste, spécialiste calcul.
Développeur de filmique, égaliseur de tons, balance couleur, etc.
darktable est mon métier, pensez à m'aider :
[Image: 2FAd4rc]
Répondre


Messages dans ce sujet
Nouveau module : filmic - par aurelienpierre - 08-11-18, 03:28
RE: Nouveau module : filmic - par alwa - 08-11-18, 09:33
RE: Nouveau module : filmic - par alwa - 08-11-18, 10:20
RE: Nouveau module : filmic - par jpg54 - 08-11-18, 12:06
RE: Nouveau module : filmic - par pascal - 08-11-18, 14:44
RE: Nouveau module : filmic - par valmy - 08-11-18, 20:40
RE: Nouveau module : filmic - par pascal - 08-11-18, 23:01
RE: Nouveau module : filmic - par LViatour - 08-11-18, 23:32
RE: Nouveau module : filmic - par pascal - 09-11-18, 07:52
RE: Nouveau module : filmic - par jpg54 - 09-11-18, 14:16
RE: Nouveau module : filmic - par palouf34 - 09-11-18, 14:42
RE: Nouveau module : filmic - par jpg54 - 09-11-18, 14:47
RE: Nouveau module : filmic - par pascal - 09-11-18, 15:27
RE: Nouveau module : filmic - par pascal - 09-11-18, 17:30
RE: Nouveau module : filmic - par LViatour - 09-11-18, 18:54
RE: Nouveau module : filmic - par pascal - 09-11-18, 18:58
RE: Nouveau module : filmic - par LViatour - 09-11-18, 19:05
RE: Nouveau module : filmic - par pascal - 09-11-18, 19:16
RE: Nouveau module : filmic - par LViatour - 09-11-18, 19:22
RE: Nouveau module : filmic - par LViatour - 09-11-18, 21:24
RE: Nouveau module : filmic - par mmoy - 09-11-18, 23:46
RE: Nouveau module : filmic - par mmoy - 10-11-18, 08:52
RE: Nouveau module : filmic - par mmoy - 10-11-18, 09:03
RE: Nouveau module : filmic - par jpg54 - 10-11-18, 09:40
RE: Nouveau module : filmic - par jpg54 - 10-11-18, 17:03
RE: Nouveau module : filmic - par pascal - 10-11-18, 17:36
RE: Nouveau module : filmic - par jpg54 - 10-11-18, 17:52
RE: Nouveau module : filmic - par mmoy - 10-11-18, 20:01
RE: Nouveau module : filmic - par mmoy - 10-11-18, 21:25
RE: Nouveau module : filmic - par jpg54 - 10-11-18, 21:44
RE: Nouveau module : filmic - par jpg54 - 11-11-18, 09:22
RE: Nouveau module : filmic - par mmoy - 11-11-18, 21:23
RE: Nouveau module : filmic - par mmoy - 12-11-18, 15:40
RE: Nouveau module : filmic - par jpg54 - 11-11-18, 21:41
RE: Nouveau module : filmic - par senpai - 11-11-18, 21:58
RE: Nouveau module : filmic - par pepette - 12-11-18, 00:34
Nouveau module : filmic - par pepette - 12-11-18, 15:28
RE: Nouveau module : filmic - par LViatour - 12-11-18, 15:31
RE: Nouveau module : filmic - par pepette - 12-11-18, 22:46
RE: Nouveau module : filmic - par LViatour - 12-11-18, 20:30
RE: Nouveau module : filmic - par mmoy - 12-11-18, 21:06
RE: Nouveau module : filmic - par pascal - 12-11-18, 23:03
RE: Nouveau module : filmic - par pepette - 13-11-18, 23:15
RE: Nouveau module : filmic - par valmy - 13-11-18, 10:00
RE: Nouveau module : filmic - par mmoy - 13-11-18, 10:07
RE: Nouveau module : filmic - par LViatour - 14-11-18, 16:12
RE: Nouveau module : filmic - par mmoy - 14-11-18, 16:31
RE: Nouveau module : filmic - par pascal - 14-11-18, 16:58
RE: Nouveau module : filmic - par mmoy - 14-11-18, 17:09
RE: Nouveau module : filmic - par LViatour - 14-11-18, 17:12
RE: Nouveau module : filmic - par jpg54 - 14-11-18, 19:57
RE: Nouveau module : filmic - par LViatour - 14-11-18, 20:07
RE: Nouveau module : filmic - par jpg54 - 14-11-18, 20:43
RE: Nouveau module : filmic - par pascal - 14-11-18, 22:09
RE: Nouveau module : filmic - par jpg54 - 14-11-18, 22:23
RE: Nouveau module : filmic - par pascal - 14-11-18, 22:38
RE: Nouveau module : filmic - par jpg54 - 15-11-18, 00:58
RE: Nouveau module : filmic - par pascal - 15-11-18, 07:02
RE: Nouveau module : filmic - par mmoy - 15-11-18, 08:10
RE: Nouveau module : filmic - par pascal - 15-11-18, 08:37
RE: Nouveau module : filmic - par jpg54 - 15-11-18, 08:55
RE: Nouveau module : filmic - par pascal - 15-11-18, 09:01
RE: Nouveau module : filmic - par mmoy - 15-11-18, 10:12
RE: Nouveau module : filmic - par jpg54 - 15-11-18, 10:34
RE: Nouveau module : filmic - par pascal - 15-11-18, 10:39
RE: Nouveau module : filmic - par LViatour - 15-11-18, 10:44
RE: Nouveau module : filmic - par nca000 - 16-11-18, 20:22
RE: Nouveau module : filmic - par mmoy - 16-11-18, 20:28
RE: Nouveau module : filmic - par nca000 - 16-11-18, 20:35
RE: Nouveau module : filmic - par mmoy - 16-11-18, 20:38
RE: Nouveau module : filmic - par nca000 - 16-11-18, 20:42
RE: Nouveau module : filmic - par pascal - 16-11-18, 20:52
RE: Nouveau module : filmic - par nca000 - 16-11-18, 21:21
RE: Nouveau module : filmic - par jpg54 - 16-11-18, 23:42
RE: Nouveau module : filmic - par nca000 - 17-11-18, 09:26
RE: Nouveau module : filmic - par jpg54 - 17-11-18, 14:13
RE: Nouveau module : filmic - par palouf34 - 22-11-18, 22:19
RE: Nouveau module : filmic - par jpg54 - 23-11-18, 10:16
RE: Nouveau module : filmic - par mmoy - 23-11-18, 10:32

Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)