La voix du libre

Émission de radio sur le Web et les logiciels libres

"La voix du libre" est une émission sur les logiciels libres maintenant diffusée sous forme de baladodiffusion (podcast) enregistrée le 2e mercredi de chaque mois (re)commançant le 11 décembre 2013 (Québec - Canada).
Vous pouvez nous écouter en direct ou en différé, via notre baladodiffusion

Nouvelle du 4 novembre 2013

Journal : G'MIC 1.5.7.2 : Multi-threading, Krita, et autres nouveautés...

Sommaire

Bonjour à tous.

Cette semaine, G'MIC, un framework libre pour le traitement d'images s'est enrichi d'une nouvelle mise à jour automnale, estampillée 1.5.7.2. C'est l'occasion pour moi de recenser les avancées réalisées dans cette série 1.5.7.x, depuis mon dernier journal sur ce projet.

Logo

Qu'est-ce que c'est ?

Le projet G'MIC (acronyme de GREYC's Magic for Image Computing) est développé dans l'équipe IMAGE du laboratoire GREYC (UMR CNRS), et propose différentes interfaces utilisateurs pour la manipulation d'images génériques (2d/3d, multi-spectrales,..), dont un plug-in pour GIMP, un web-service, un outil en ligne de commande (gmic), ou encore une bibliothèque C++ (libgmic), et une interface graphique en Qt pour la manipulation d'images provenant de la webcam (ZArt).

Gestion du multi-threading.

La nouveauté majeure de la série 1.5.7.x est la possibilité de lancer des calculs/filtres/effets sur des images, en parallèle, via le lancement de multiples threads. Techniquement parlant, de nouvelles commandes génériques ont été ajoutées permettant une gestion assez fine de la façon dont les calculs parallèles doivent se réaliser. Un utilisateur peut en particulier décider du nombre de threads utilisés pour un calcul, de la façon dont le calcul peut se paralléliser (en parallèle sur plusieurs images simultanément, ou en subdivisant une image, canal par canal ou spatialement).
Et bien sûr, ceci a été ajouté directement dans l'interpréteur G'MIC (le coeur du projet, qui s'occupe de tous les calculs), donc toutes les interfaces utilisateurs en profitent !
Certains filtres utilisent cette possibilité, par exemple les filtres de lissage/débruitage disponibles dans le plug-in pour GIMP. Par exemple, un lissage assez fort sur une image de taille 2048x1365 en RGB donne comparativement :

  • 1 thread -> 20.681 s de temps d'exécution.
  • 2 threads -> 13.454 s de temps d'exécution.
  • 4 threads -> 8.213 s de temps d'exécution.
  • 8 threads -> 5.695 s de temps d'exécution.

Pour info, la machine de test utilisée pour ces timings avait 16 CPUs (mais seulement 8 étaient libres simultanément lors du benchmark). Pas mal de filtres profitent déjà du calcul parallèle, et on va essayer par la suite d'en convertir encore plus. A noter également que les calculs de FFT (Fast Fourier Transform) sont maintenant parallélisés par défaut.
Avoir du multi-threading a demandé pas mal de travail, puisqu'il a fallu dans un premier temps rendre totalement thread-safe les bibliothèques CImg et libgmic sur lesquelles de base G'MIC, avant de pouvoir proposer de nouvelles commandes gérant les threads et les mutex (et le tout, en multi-plateforme).

Début d'intégration dans Krita.

Pour rappel, Krita est un logiciel complet pour la peinture et le dessin numérique.
Grâce au travail acharné de Lukas Tvrdy (développeur employé par la fondation Krita), une ébauche de plug-in fonctionnel intégrant G'MIC dans Krita a été réalisée. Les utilisateurs experts de Krita peuvent commencer à s'amuser avec quelques filtres G'MIC (en particulier pour la colorisation de comics, en compilant la version de devéloppement de Krita. C'est une très bonne nouvelle, et on espère vraiment que ce projet va être mené à son terme !

Autres nouveautés.

Le projet G'MIC continue son petit bonhomme de chemin, avec pas mal d'améliorations/optimisations diverses et variées, et correction de bugs; de nouveaux filtres.
Aujourd'hui, le plug-in pour GIMP comprend 522 filtres disponibles, de quoi occuper les longues soirées d'hiver, en diverses expérimentation sur vos photos de vacances !

plug-in

Quelques nouveautés notables sont listées ici :

  • Toute une panoplie de nouveaux filtres destinés à simuler le rendu colorimétrique de pellicules photographiques spécifiques, ont été ajouté. Ceci a été possible grâce à la collaboration avec un photographe américain Patrick David, fervent utilisateur d'outils libres pour le traitement photo, qui a bien voulu partagé des centaines de profils colorimétriques (faits à la main!). Ceci représente au final plus de 70 Mb de profils couleurs compressés, qui ont été ajoutés à G'MIC. Ci-dessous, un exemple d'un de ces filtres.

fim_emulation

  • Un nouveau filtre permet d'extraire automatiquement des objets distincts sur un fond de couleur fixe (à quelques variations près). Le résultat est une image avec autant de calques que d'objets segmentés. Assez pratique pour récupérer des sprites distincts à partir d'une image d'entrée ou les choses à extraire ont des arrangements complexes.

segment_fixe

  • G'MIC est maintenant capable de générer des fichiers .ggr (GIMP Gradients), et certains filtres permettent par exemple de synthétiser de nouveaux gradients de couleurs, réutilisables dans GIMP par la suite. Par exemple, le filtre suivant synthétise un nouveau gradient en échantillonant des couleurs d'une image le long d'un segment défini par l'utilisateur.

gradient

  • L'installation et la mise à jour de G'MIC sur les machines tournant sous Ubuntu est devenue un jeu d'enfant, grâce au travail acharné du packageur Thorsten "otto" Stettin, qui fournit un PPA pour G'MIC (mais aussi des PPAs pour des versions expérimentales de GIMP 2.9). Il suffit de taper les quelques lignes suivantes :
<code class="sh" style="font-size: medium; white-space: pre-wrap; border-width: 0px 0px 0px 3px; border-style: solid; border-color: rgb(76, 87, 95); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; padding: 1px 0px 1px 5px; display: block; margin: 10px 0px 10px 10px;">sudo add-apt-repository ppa:otto-kesselgulasch/gimp sudo apt-get update sudo apt-get install gmic gimp-gmic</code>

Merci à lui, je n'ai jamais croisé un packageur aussi rapide, c'est un peu le Lucky Luke du PPA !

  • Des nouvelles démos animées ont été ajoutées "pour le fun", à l'interpréteur G'MIC. Créer ce type d'animations nous permet de tester la rapidité de l'interpréteur, étudier les points bloquants pour la programmation de nouveaux effets, et les optimisations éventuelles de fonctions à effectuer. Ces deux démos sont disponibles à partir de l'interface "ligne de commande" gmic.
    • A gauche, résultat de la commande : <code style="font-size: medium; white-space: pre-wrap; border: 1px solid rgb(233, 230, 228); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; padding: 1px 4px;">gmic -x_bouncing</code> (animation visible sur Youtube).
    • A droite, résultat de la commande : <code style="font-size: medium; white-space: pre-wrap; border: 1px solid rgb(233, 230, 228); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; padding: 1px 4px;">gmic -x_metaballs3d</code> (animation visible sur Youtube).

demos

  • Ce journal est déjà long, on ne peut donc pas rentrer dans les détails de toutes les nouveautés, mais en vrac : Ajout de nouveaux algorithmes (le Fast Marching par exemple, ou encore le Cross Bilateral Filter), amélioration de l'affichage X11 en mode multi-threadé, amélioration des visualisateurs d'images intégrés, et amélioration générale de la stabilité. Sans compter les nouveaux filtres divers et variés ajoutés dans le plug-in par tous les contributeurs de G'MIC (ils sont responsables de presque la moitié des filtres disponibles, encore merci à eux !).

Bref !

Le projet G'MIC est loin d'être au point mort :)
En particulier, ses nouvelles capacités de multi-threading augurent de bonnes choses pour la suite. Nous n'avons pas de feuille de route particulière en ce qui concerne les futures avancées du projet : tant que ça avance, on suppose que ça va dans la bonne direction. On espère aussi beaucoup que l'intégration dans Krita sera effective un jour.

Le mot de la fin : N'hésitez pas à l'installer chez vous, le tester, et faire des retours (positifs ou négatifs) sur son utilisation. Et merci à tous les contributeurs qui permettent de faire vivre ce projet. Vous pouvez également suivre les avancées au jour le jour, en suivant le flux Google+ dédié.