Darktable 1.6 : traitement de photos, développement d’images RAW

Posté par  (site web personnel) . Édité par M5oul, michelLeblond, BAud, Vicolaships et Benoît Sibaud. Modéré par Benoît Sibaud. Licence CC By‑SA.
49
21
déc.
2014
Graphisme/photo

La version 1.6 de darktable est sortie ce 7 décembre 2014. Pour rappel, darktable est un logiciel d'édition de photos spécialisé dans les images RAW.

Cette nouvelle version n'apporte rien de révolutionnaire du point de vue de l'utilisateur, mais plusieurs petites améliorations sympathiques pour la convivialité, un nouveau module « suppression de la frange » (defringe) similaire au module « aberrations chromatiques » et un joli travail d'amélioration général du code et des performances.

Sommaire

Une particularité de darktable est sa nature non-destructrice : l'image originale n'est jamais modifiée, mais l'utilisateur choisit un certain nombre de transformations à faire sur l'image et darktable applique ces transformations pour l'affichage à l'écran et l'export. L'utilisateur peut, par exemple, rectifier l'exposition, recadrer l'image, puis modifier la balance des blancs et ensuite décider de désactiver le module « exposition » : darktable ré-appliquera la balance des blancs et le recadrage.

Une autre particularité de darktable est de ne pas transiger avec la qualité : tous les calculs sont faits avec des nombres flottants 32 bits par canal et par pixel. darktable fait tout son possible pour garder de bonnes performances (utilisations des instructions spécifiques des processeurs modernes, OpenCL pour utiliser le GPU de la carte graphique si possible…), mais reste très exigeant en ressources (4 Go de RAM et un système 64 bits sont un minimum).

La suite de la dépêche est une traduction étoffée des notes de versions.

Nouvelles fonctionnalités

  • Une nouvelle vue « diaporama » pour visualiser les images de la collection courante en plein écran. Oui, ça parait évident, mais ça manquait sur les versions précédentes !

Diaporama

  • La vue « carte » (affichage des images géolocalisées sur fond OpenStreetMap) permet de n'afficher que les images de la collection courante sur le fond de carte ;

  • Gestion des moniteurs haute résolution (alias « retina » pour les Macs) ;

  • Paquets pour Mac OS X signés ;

  • L'outil darktable-cli peut maintenant fonctionner sans serveur X ;

  • Prise en charge des notes audio enregistrées par certains appareils photos ;

  • Un mode « aperçu persistant », variante du mode « aperçu » qui permettait d'avoir temporairement une vue plein écran de l'image courante. Le mode « aperçu » (activé par la touche Z ou CTRL + Z pour avoir en plus la détection des zones de netteté) revient à la table lumineuse dès qu'on relâche la touche qui l'a activé. Le mode « aperçu persistant » reste activé jusqu'à ce qu'on appuie une deuxième fois sur la touche. Il n'a pas de raccourci par défaut, mais on peut l'activer dans les préférences globales (onglet « raccourcis », « vues », « table lumineuse ») ;

  • Une option pour écraser le fichier de destination s'il existe dans le module « exportation » ;

  • La possibilité de recharger au lancement de darktable les fichiers .xmp. Ces fichiers sont enregistrés à côté des images sur le disque et indiquent les modifications que darktable doit apporter à l'image. Ces fichiers .xmp viennent en doublon d'une base de données (située dans ~/.config/darktable/library.db). Recharger les .xmp peut être utile si on travaille sur les mêmes images depuis plusieurs machines ;

  • Gestion des très grandes images (index plus grand que 32 bits). On peut maintenant éditer des images TIFF de 26 770 × 13 385 et, en théorie, des images de n'importe quelle taille peuvent être gérées. Ne pas essayer sur une petite configuration ou une machine 32 bits !

  • Les réglages automatiques du module « correction des objectifs » (basé sur la bibliothèque Lensfun) peuvent maintenant être copiés-collés d'une image à l'autre. Avec les versions précédentes, si l'utilisateur avait activé ce module sur une image, les paramètres détectés automatiquement (objectif, focale, ouverture, distance de mise au point) étaient appliqués à l'identique sur les autres images quand on copiait-collait l'historique ou qu'on créait un style. Avec darktable 1.6, le module détecte si l'utilisateur a fait des changements dans l'interface graphique. S'il a laissé les valeurs par défaut (auto-détectées), alors darktable se comporte comme on pourrait s'y attendre : un copier-coller ou une application de style fait la détection automatique des paramètres avec les métadonnées de l'image cible.

Export d’images

  • Lecture et écriture du format TIFF réécrit (gestion du 32 bits, de la compression) ;

  • L'export JPEG permet de spécifier la résolution dans les méta-données du fichier généré (défaut à 300 points par pouces) ;

  • Gestion des mots de passe avec libsecret pour parler aux gestionnaires de mots de passe de vos environnements de bureau préférés ;

  • Utilisation de HTTPS pour l'export Flickr (nécessaire depuis juin 2014 pour parler aux API Flickr).

Dans la chambre noire

Nouvelle opération « suppression de la frange » (defringe)

darktable possédait déjà deux outils pour réduire les aberrations chromatiques :

  • le module « correction des objectifs », qui utilise une base de données des défauts connus des objectifs et applique la transformation inverse sur l'image pour réaligner les différentes couleurs ;
  • et le module « aberrations chromatiques », qui travaille sur l'image RAW avant matriçage (et donc n'est pas applicable sur des images autres que RAW).

Le module « defringe » repère les franges de couleurs, et reconstruit une couleur moins saturée à partir des pixels voisins sur ces franges. Il fonctionne quel que soit le format d'image et quel que soit l'objectif utilisé. Le résultat est assez convaincant :

Exemple de suppression de frange

Cette transformation est appliquée par darktable après le module de correction des objectifs, donc il peut permettre de rectifier quelques aberrations qui seraient restées après celui-ci.

Mode automatique pour le module « niveaux » (levels)

Le mode par défaut de l'outil « niveaux » montre à l'utilisateur un histogramme et demande à l'utilisateur de placer trois points sur cet histogramme : le noir, le gris, et le blanc :

Réglage en mode manuel

darktable ajuste ensuite la luminosité de chaque pixel afin que le point noir choisi soit effectivement noir (tout ce qui est à gauche de ce point dans l'histogramme est tronqué en noir également), que le point blanc (et tout ce qui est à droite dans l'histogramme) soit blanc et que le gris soit gris.

Avec darktable 1.6, on peut maintenant passer en mode « automatique » et spécifier un pourcentage de pixels au lieu d'un point sur l'histogramme. Par exemple, si on souhaite que 10 % de la surface de l'image soit noire, on peut placer le curseur de noir à 10 % :

Réglage en mode automatique

On peut utiliser cet outil pour changer assez facilement la luminosité des parties sombres ou des parties claires de l'image. Par exemple, en plaçant le curseur de noir à 30 %, on assombrit les parties sombres, sans toucher aux parties claires (version transformée à droite de l'image) :

Résultat de l'application du module

Possibilité de désactiver la balance des blancs

Le module de balance des blancs applique un coefficient multiplicateur sur chaque canal de couleur. On peut maintenant le désactiver.

Nouveau mode de reconstruction des couleurs pour le module « récupération des hautes lumières »

Les zones d'images surexposées posent plusieurs problèmes lors du développement de fichiers RAW. Chaque canal (rouge, vert, bleu) peut arriver à dépasser le maximum et être tronqué. Si seulement un ou deux des canaux sont tronqués, les couleurs en sortie du capteur ne correspondent plus aux couleurs réelles. Si tous les canaux sont tronqués, il n'y a plus d'information de couleur du tout, la zone de l'image est blanche (ou pas, selon le réglage de la balance des blancs).

darktable doit donc reconstruire les zones d'images surexposées. Par défaut, il considère que si l'un des canaux de couleur est tronqué, l'image est blanche (ou grise) à cet endroit. Quand les pixels autour de la zone surexposée sont colorés, le résultat n'est pas forcément très bon :

Reconstruction des zones surexposées par défaut

La version 1.6 a maintenant un mode « reconstruire les couleurs » dans le module récupération des hautes lumières qui permet de faire mieux, en regardant la couleur et la structure des pixels non-surexposés avoisinants :

Reconstruction des zones surexposées avec reconstruction des couleurs

Il ne faut pas attendre de miracle (il manque de l'information dans l'image…), mais c'est un outil de plus pour récupérer des photos qui auraient pu être ratées.

Meilleur outil dt-curve-tool pour créer une courbe de base (basecurve) depuis une paire d'images RAW/JPG

cf. http://www.darktable.org/2013/10/about-basecurves/ pour quelques explications sur l'outil.

Limites flexibles (soft boundaries) sur les curseurs

On pouvait déjà faire un clic droit sur les curseurs des différents modules pour faire un réglage fin (à la souris, ou au clavier). Si l'utilisateur entre une valeur au clavier qui dépasse de l'intervalle initialement prévu, alors l'échelle du curseur s'adapte :

Limites flexibles

Limites flexibles : résultat

Troncature de gamut sur le profil de couleur d'entrée

L'essentiel des transformations de darktable sont faites dans l'espace de couleur Lab (un canal L pour la lumière, deux canaux a et b pour la couleur). Dans certains cas (pixels sombres et très saturés), il peut arriver que le canal L soit négatif, ce qui pose problème dans la suite des transformations. Par exemple, sur cette image extraite du manuel utilisateur, on peut distinguer un anneau de pixels noirs autour du cercle bleu :

Sans troncature de gamut

Le module « profil de couleur d'entrée » (qui fait la conversion depuis les couleurs de l'image d’origine vers l'espace Lab) a maintenant un mode « troncature de gamut » qui permet de rester dans un espace de couleur plus réduit où ces problèmes n'apparaissent pas :

Avec troncature de gamut

Un autre exemple assez parlant : https://lwn.net/Articles/623216/.

Gestion des couleurs

  • Les conversions de couleurs sont plus rapides (via l'utilisation d'OpenMP pour paralléliser les opérations) ;

  • Gestion native du profil linéaire Rec2020 (utilisé par le standard de télévision UHDTV) ;

  • Gestion des profils ICC intégrés à l'image pour les images PNG et TIFF.

API de script en Lua

  • Copie, déplacement, réinitialisation et effacement d'images ;

  • Gestion des barres de progressions ;

  • Manipulation limitée de bibliothèques et de vues dans l'interface graphique ;

  • Importation/exportation de styles ;

  • Un système de callback permettant d'appeler un script Lua après un changement dans l'interface (mode de groupage, vue active, changement d'affichage) ;

  • Manipulation des snapshots ;

  • Gestion de plus de types de préférences ;

  • API versionnée (darktable.configuration.check_version pour savoir quelle version de l'API est utilisée) ;

  • darktable.modules a été supprimé.

Améliorations de performances

  • Beaucoup d'améliorations de vitesse en utilisant du code SSE pour les opérations sur les images ;

  • Accélération en particulier des modules « Balance des blancs », « inverser », des exports EXR et PFM, de l'algorithme de dématriçage « AMaZE » (toujours lent, mais moins qu'avant).

Améliorations internes

  • Introspection des paramètres de modules ;

  • Correction de warnings émis par clang/address-sanitizer/… ;

  • Simplification du code utilisé pour l'auto-orientation des images RAW ;

  • Migration vers rawspeed terminé pour le chargement des images RAW ;

  • Corrections de bugs.

Nouveaux appareils photos pris en charges

  • Prise en charge des capteurs de type x-trans, utilisés par certains appareils Fujifilm. Ces capteurs utilisent une disposition de pixels non-standard, qui demandent une adaptation de l'algorithme de dématriçage ;

  • Des dizaines de nouveaux boîtiers pris en charge, des profils pour le module de réduction du bruit… Cf. les notes de version détaillées pour une liste complète.

Aller plus loin

  • # Excellent logiciel.

    Posté par  . Évalué à 6.

    C'est un logiciel dont je me suis beaucoup servi, je l'apprécie beaucoup. Je le trouve complet et très efficace.

    Quelques petits problèmes avec l'ergonomie (les instantanés, un aspect un peu brouillon dans l'affichage de tous les outils, une exportation que je ne trouve pas très claire) mais tout a toujours été PARFAITEMENT fonctionnel.

    • [^] # Re: Excellent logiciel.

      Posté par  (site web personnel) . Évalué à 3.

      Côté ergonomie, c'est clair que c'est assez non-standard. Avant de lire la doc, je trouvais ça pas pratique du tout, mais après avoir lu le manuel, ça va beaucoup mieux en fait :o).

  • # À quand un module d'impression et une brosse performante ?

    Posté par  . Évalué à 4.

    Oui, Darktable progresse et c'est tant mieux. C'est assez rapide et ça semble stable.

    Il reste pour moi deux points noirs : pas de module d'impression et puis la brosse pourrait être beaucoup plus efficace.

    Ici, on peint avec la brosse, puis on doit la cacher pour en voir l'effet, après coup. Sous Lightroom, on choisit son réglage et on en voit tout de suite l'effet avec la brosse. On travaille alors très vite et instinctivement, alors que c'est beaucoup plus laborieux avec Darktable.

    Je pense aussi qu'une version Windows serait un plus (réclamé par les utilisateurs).

    • [^] # Re: À quand un module d'impression et une brosse performante ?

      Posté par  (site web personnel) . Évalué à 10.

      Et bien pour le module d'impression j'y travail depuis déjà pas mal de temps. L'objectif est d'avoir cela pour la prochaine version. Le but étant de pouvoir imprimer une page unique (pas plusieurs images sur la même page, pour cela il existe des logiciels spécialisés). Je viens justement de publier une branche mise-à-jour juste avant de lire ce message. La branche s'appelle "print-module" sur le Git du projet. Donc si tu veux tester ce module en compilant darktable c'est possible, mais attention c'est une branche en développement donc il est possible que les impressions ne marchent pas correctement! J'ai testé sur deux imprimantes Dell-3100cn et une Lexmark X950 avec de bons résultats.

      Le module d'impression supporte les profils d'imprimante bien entendu.

      Voilà, donc c'est en cours…

  • # question

    Posté par  . Évalué à 1.

    J ai essaye le logiciel, c est vrai qu il a l air pas mal. Mais par contre pour moi la fonction basique c est de pouvoir faire un tri des photos (je fait X photos avec du bracketing et je veux en garder 1). Est ce qu on peu (simplement ?) supprimer des photos ?

  • # Thème graphique

    Posté par  . Évalué à 1.

    J'utilise cet excellent soft très souvent, une seule remarque, je déteste le thème graphique, je voudrais que ce soit intégré avec mon thème gtk/qt/kde… :(

    • [^] # Re: Thème graphique

      Posté par  (site web personnel) . Évalué à 4.

      sans un thème sombre c'est difficile de traiter des photos. sinon la version en gtk3 (en préparation) pourra probablement faire cela plus facilement avec le CSS correspondant.

  • # gui ?

    Posté par  (site web personnel) . Évalué à 2.

    J'ai un souci avec la GUI. J'avais l'impression que le logiciel travaille avec des piles de filtres, mais je n'ai pas trouvé "simplement" comment revenir sur un réglage précédent (comme sur les calques d'effet de Photoshop).

    Beaucoup de filtre se contentent de tirettes comme GUI, c'est très rarement parlant. Il faudrait trouver des façon plus expressives de présenter les commandes.

    "La première sécurité est la liberté"

  • # balance des blancs avec pipette

    Posté par  . Évalué à 1.

    Bonjour,

    Darktable semble effectivement un logiciel sympa qui rivalise avec d'autres logiciels libres ou proprio (Lightroom, Rawtherapee).

    Pour l'instant, ce qui me manque le plus pour traiter mes photos avec Darktable est la possibilité de définir la balance des blancs avec une pipette sur l'image ("Point de mesure" dans RawTherapee). Avec la pipette, on choisi une zone de l'image que nous considérons comme devant être le "gris neutre", et le logiciel en déduit automatiquement les paramètres de balance des blancs. Ensuite, on peut ajuster finement les paramètres via les différents curseurs.

    C'est vraiment très pratique et rapide… Est-ce que cela est prévu pour le futur (ou même déjà dans une branche Git ?)

  • # Va falloir que je m'y mette

    Posté par  . Évalué à 1.

    J'ai mal de photos en RAW qui mérite d'être traitées. Je laisse souvent mon 500D en double (jpeg+RAW) quand les conditions sont difficile , en basse lumière principalement….
    La où darktable fait mal , c'est sur ses exigences CPU . Sur la doc il semble que ce soit cpu x86 avec instruction SSE2. J'ai testé sur une vieille machine de recup , un acer de 2008 n'ayant pas survécu à la fin de windows XP (boosté avec 2Go de ram). Avec une mageia caulcdron sur cette machine Darktable refuse ce ce lancer, car il réclame les instructions SSE3…. Zut … Faut que je teste avec une autre machine.
    Ceci étant dit , vu les quantités de données a traiter dans un album en RAW , ça peut exiger toutes les optimisations possible.
    Faut vraiment que je m'y mette. Ce soft semble pouvoir m'aider a tirer le meilleur de certaines de mes photos.

    • [^] # Re: Va falloir que je m'y mette

      Posté par  (site web personnel) . Évalué à 4.

      En plus du CPU récent, il te faudra aussi de la RAM. 4 Go, c'est juste. 2 Go, pas sur que ça soit utilisable…

      • [^] # Re: Va falloir que je m'y mette

        Posté par  . Évalué à 2.

        En effet, pas la peine d'importer un album avec 2 Go, à l'unité pourquoi pas ? Dans un environnement graphique très léger, ça pourrait être tenté (windowmaker ?). Mais la faut pas chercher à être productif, ce sont des conditions extrèmes.

      • [^] # Re: Va falloir que je m'y mette

        Posté par  (site web personnel) . Évalué à 1.

        Même pour des images de quelques dizaines de megapixels, il faut 4Go de ram ? Il est codé en java, ou bien :)

        "La première sécurité est la liberté"

        • [^] # Re: Va falloir que je m'y mette

          Posté par  (site web personnel) . Évalué à 5.

          Même pour des images de quelques dizaines de megapixels, il faut 4Go de ram ?

          Oui. Je l'utilise sur des images 16 Mpixels, et avec 4 Go sur une machine 32 bits, il n'avait pas assez d'espace d'adressage (ça marchait, mais plantage plus ou moins aléatoires à l'export). En passant en 64 bits, ça va mieux.

          20 Mpixel * 3 cannaux * 4 octet (1 flottant simple précision) = 240 Mo par image.

          Le moindre module va utiliser un buffer source et un buffer destination, donc 480 Mo juste pour stocker l'entrée et la sortie.

          Plus de détails : http://www.darktable.org/2012/03/darktable-and-memory/

          Il est codé en java, ou bien :)

          Au contraire, c'est codé en C avec un soucis permanent de perfs (il n'acceptera même pas de tourner sur un processeur qui n'a pas les instructions SSE qui vont bien). Je n'imagine même pas le désastre en Java avec 3 java.lang.Float par pixel ;-).

          • [^] # Re: Va falloir que je m'y mette

            Posté par  (site web personnel) . Évalué à 2.

            Les 2 buffers pourraient être partagé entre modules, non ?

            "La première sécurité est la liberté"

            • [^] # Re: Va falloir que je m'y mette

              Posté par  (site web personnel) . Évalué à 2.

              Je ne connais pas les détails, je suppose que le buffer de sortie d'un module est le buffer d'entrée du suivant en effet. Mais toujours est-il que pendant l'exécution d'un module, tu as besoin d'un buffer d'entrée et d'un de sortie, plus les données internes (qui peuvent manipuler plusieurs images), ça grimpe très vite.

              Et vu que beaucoup d'opérations sont très gourmandes en CPU, il faut un cache pour éviter de tout recalculer à chaque fois pour que ça soit raisonnablement utilisable.

              • [^] # Re: Va falloir que je m'y mette

                Posté par  (site web personnel) . Évalué à 2.

                "Et vu que beaucoup d'opérations sont très gourmandes en CPU,"

                Pour les déformations géométriques, je suis d'accord. Mais pas pour les filtres pixel par pixel, mais j'imagine que créé une fonction à la volé est un peu compliqué. C'est le genre de traitement qui est memory bound, faire quelques opérations de plus ne doit rien changer.

                "La première sécurité est la liberté"

                • [^] # Re: Va falloir que je m'y mette

                  Posté par  (site web personnel) . Évalué à 3.

                  Je ne suis pas sûr de comprendre pourquoi tu continues cette conversation. Je ne suis pas développeur Darktable, je constate que sur ma machine avec 4 Go, c'est un peu juste et j'ai donné quelques pistes d'explication avec un lien vers plus de détails. Si tu penses savoir mieux que les développeurs de Darktable ce qu'ils devraient faire, le lieu pour les conseiller est la mailing-list, mais pas ici.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.