Nouveau module : filmic - Version imprimable +- Forum darktable FR (https://forums.darktable.fr) +-- Forum : Autour de darktable (https://forums.darktable.fr/forumdisplay.php?fid=95) +--- Forum : Développement (https://forums.darktable.fr/forumdisplay.php?fid=100) +--- Sujet : Nouveau module : filmic (/showthread.php?tid=3013) |
Nouveau module : filmic - aurelienpierre - 08-11-18 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 Après Vous pouvez compiler et tester ce module ici : https://github.com/aurelienpierre/darktable/tree/tone-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 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 : 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 : Après : 2 instances de balance des couleurs avec les préréglages orange-bleu fournis + module filmic Avant Après : filmic + balance des couleurs avec neutralisation des couleurs automatique 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. RE: Nouveau module : filmic - alwa - 08-11-18 (08-11-18, 03:28)aurelienpierre a écrit : Note de fin Bonjour Aurélien Cela a l'air très intéressant. Est-il possible de tester sur une version Windows et si oui, comment ? Merci pour tout ce travail. RE: Nouveau module : filmic - aurelienpierre - 08-11-18 Sous Windows, il faut compiler à la main. C'est moins évident que sous Linux. RE: Nouveau module : filmic - alwa - 08-11-18 (08-11-18, 09:36)aurelienpierre a écrit : Sous Windows, il faut compiler à la main. C'est moins évident que sous Linux. Dommage, je ne sais pas faire. Mais si je peux aider autrement. RE: Nouveau module : filmic - jpg54 - 08-11-18 Je joue depuis hier avec ce nouveau module, C'est une tuerie. J'ai essayé les plâtres hier avec un bug non bloquant. Ce qui prouve la solidité de darktable même pour les versions de développement ! Citation :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.Aurélien, tu voulais dire Filmique ? Pour la fusion d'exposition de la courbe de base, je suis effectivement arrivé à traiter quelques photos mais j'en ressors toujours frustré du fait de devoir faire des photos sous-exposées pour pouvoir l'utiliser. La sous-exposition fait monter le bruit parallèlement sur plus on monte en ISO. De plus pour arriver à une photo correcte, il faut utiliser pas mal de modules derrière et pas toujours les mêmes donc il est très difficile de systématiser un workflow qui permet de faire un style. De plus je suis un peut fainéant et moins je reste devant l'ordi pour un traitement plus ça m'arrange. Avec les derniers travaux d'Aurélien c'est un vrai plaisir quelques clics et on a une photo destinée pour la poubelle (car elle ne demande de trop me casser la tête pour arriver à quelque chose de potable mais pas satisfaisant) qui devient exploitable. Attention, je n'appelle pas à faire des prises de vue par dessus la jambe, je reste toujours convaincu que les photos se font derrière son viseur mais certaines conditions de prise de vue nous à la quadrature du cercle (exemple : prise de vue dans une église : j'expose pour avoir des vitraux lisibles ou pour des détails dans les ombres ? , idem pour les photos de spectacles avec des projecteurs vers l'objectif). Vivement le capteur organique Fuji/Panasonic : https://www.lesnumeriques.com/photo/capteur-organique-panasonic-promesse-dynamique-centuplee-n49515.html mais à un prix raisonnable. RE: Nouveau module : filmic - pascal - 08-11-18 > Le premier bloc vient directement du module correction du profil d'entrée et s'utilise pareil Est-ce que tu penses donc qu'il faudrait supprimer le nouveau mode du module de correction que tu as introduit? Ou est-ce complémentaire pour un workflow alternatif? > Le dernier bloc, vous n'y touchez pas. Donc tu vas supprimer cette partie? Sinon pourquoi donner des contrôles auxquels il ne faut pas toucher? > Le dernier bloc, vous n'y touchez pas. Donc tu vas supprimer cette partie? Sinon pourquoi donner des contrôles auxquels il ne faut pas toucher? Un peu testé... J'ai souvent le message: "filmic curve using 4 nodes - shadows lost" ? Est-ce normal? RE: Nouveau module : filmic - valmy - 08-11-18 Ce module à 12 curseurs sera -t-il présent dans la version 2.6 de fin d'année ? RE: Nouveau module : filmic - aurelienpierre - 08-11-18 (08-11-18, 14:44)pascal a écrit : > Le premier bloc vient directement du module correction du profil d'entrée et s'utilise pareil Le module de correction du profil peut toujours servir pour travailler dans un pipe-line entièrement logarithmique (comme dans les éditeurs vidéo), mais pour que ça marche vraiment bien, il faut passer le pixelpipe en RGB (j'ai parlé avec Hanatos, on va faire ça progressivement) et il faudra modifier le profil d'entrée pour lui faire comprendre qu'on n'est pas en linéaire (j'ai passé 4 jours à triturer LittleCMS pour trafiquer les TRC de profils, sans résultat probant). Le dernier bloc sert aux gens qui travaillent dans des espaces dont le gamma n'est pas 2.2, ils peuvent alors choisir une puissance de 1.0 (linéaire) à 2.4 (écrans de post-production). Idéalement, il faudrait extraire cette information du profil de sortie, mais voir le point précédent… "filmic curve using 4 nodes - shadows lost", c'est juste un message pour te faire savoir que le logiciel a dû virer un point de contrôle pour réussir à créer une courbe avec tes paramètres. (08-11-18, 12:06)jpg54 a écrit : Je joue depuis hier avec ce nouveau module, C'est une tuerie. J'ai essayé les plâtres hier avec un bug non bloquant. Ce qui prouve la solidité de darktable même pour les versions de développement ! Oui, filmique. RE: Nouveau module : filmic - pascal - 08-11-18 @aurélien, en tout cas je suis assez bluffé par le résultat que l'on obtient avec ce seul module! Encore un grand bravo. RE: Nouveau module : filmic - aurelienpierre - 08-11-18 \o/ merci ! 4 jours presque sans dormir et ma copine me fait la gueule. |