Traitement d'image : Sortie de G'MIC 1.3.3.4

Posté par  (site web personnel) . Modéré par baud123.
19
18
jan.
2010
Audiovisuel
L'équipe de développement de G'MIC est heureuse de vous annoncer la sortie de la version 1.3.3.4 de son projet, dont les objectifs sont :
  • La définition d'un langage de script minimaliste (le langage G'MIC), dédié à la création de pipelines de traitement d'images 1D/2D/3D multi-spectrales (dont les images couleurs forment le sous-ensemble le plus fréquemment rencontré) ;

  • Une implémentation libre de l'interpréteur de ce langage, sous forme d'une bibliothèque C++ ;

  • La distribution de deux outils, intégrant cet interpréteur et destinés aux utilisateurs :
    • Le logiciel gmic, permettant de manipuler/convertir/visualiser des données images, à partir de la ligne de commande ;

    • Le greffon gmic_gimp, proposant l'addition de nombreux effets originaux pour GIMP, logiciel libre phare de la retouche d'image.

G'MIC définit ainsi une boite à outils multi-niveaux pour le traitement d'images, puisqu'il est utilisable à la fois à l'échelle du développeur, de l'utilisateur de la ligne de commande et de l'infographistes (une catégorie n'excluant bien sûr pas l'autre).

Les sources sont distribuées sous licence CeCILL. Des paquets debian compilés sont disponibles, ainsi que les versions Linux (i386 et amd64) et Windows du greffon pour GIMP. Une version MacOSX est en cours de construction. Vue d'ensemble :

Le projet G'MIC a été initié dans l'équipe de recherche IMAGE du laboratoire GREYC (CNRS UMR 6072) à Caen/France, en juillet 2008.
Il est basé principalement sur CImg, une bibliothèque C++ de traitement d'images génériques, également développée dans cette même équipe. Plusieurs autres personnes d'origines diverses ont, depuis, rejoint le casting du projet.

G'MIC sait appliquer un grand nombre d'algorithmes variés de traitement (effets artistiques, filtrage, déformations géométriques, manipulation colorimétriques, débruitage, rehaussement, etc...) sur des images de types quelconques (images scalaires, couleurs, volumiques et/ou multi-spectrales, à valeurs entières 8, 16 ou 32 bits, ou à valeurs flottantes). Comme il définit un langage à part entière, il est également possible d'écrire et d'y ajouter ses propres traitements personnalisés, exprimés dans ce langage. L'interpréteur G'MIC est distribué sous trois formes distinctes :
  • Une bibliothèque C++, libgmic, intégrable dans tout projet libre souhaitant traiter des images, par exemple un logiciel de dessin, de visualisation ou de retouches d'image. L'intérêt d'utiliser G'MIC pour ce type de projets est double : d'une part, cela permet de disposer d'une base de filtres ou d'effets prêt à l'emploi (dont par exemple l'algorithme de débruitage GREYCstoration), et d'autre part, on peut profiter automatiquement de l'enrichissement et de l'amélioration de la base de filtres G'MIC, sans devoir réécrire de code supplémentaire ;
  • Un exécutable en ligne de commande, gmic, permettant de traiter/visualiser/convertir des données images à partir d'une console. Il s'inscrit comme un complémentaire aux outils convert et display de la suite ImageMagick. Il n'est pas aussi riche au niveau des formats d'entrées-sorties gérés, mais possède des caractéristiques qui le rendent intéressant vis à vis de ce dernier, comme la gestion et la manipulation transparente des images à valeur flottantes, volumiques et/ou multi-canaux et même d'objets 3D, ou encore la présence de modules interactifs avancés pour la visualisation de données, et la possibilité de définir des traitements personnalisés en langage G'MIC directement intégrables dans l'interpréteur, interagissant éventuellement avec l'utilisateur : les commandes -x_tictactoe, -x_fish_eye, -x_mandelbrot ou encore -x_spline illustrent quelques exemples d'opérations "complexes" qu'il est possible d'écrire en langage G'MIC (complexes, dans le sens où on s'éloigne un peu du traitement d'image proprement dit). Il possède une logique et une cohérence propre qui peut plaire davantage ;
  • Un greffon, gmic_gimp, pour GIMP, le logiciel libre bien connu pour la retouche d'images. Ce greffon est intéressant car il propose une prévisualisation assez précise pour tous les filtres proposés, et il est capable de mettre à jour sa liste de filtres via Internet, sans nécessité de ré-installation du greffon. Il possède notamment de nombreux filtres pour le débruitage/lissage d'image, et pour le rehaussement des contours et des couleurs. Il est également très extensible, puisque l'utilisateur peut ajouter ses propres filtres en langage G'MIC de manière directe et rapide dans le greffon (de ce point de vue, il partage des concepts communs avec Mathmap).

Nouveautés de la version 1.3.3.4 :

Les nouveautés principales de la version 1.3.3.4 sont :
  • De nombreuses améliorations internes à l'interpréteur et au greffon pour GIMP : beaucoup de déboguage, de relecture du code, de réécriture des messages de log, et d'optimisations ont été réalisées, qui leur confèrent une plus grande stabilité. L'utilisation du langage G'MIC est également plus cohérent (meilleure gestion des chaînes de caractères en particulier).
  • L'optimisation du temps de compilation et de la taille des fichiers générés : la compilation de l'exécutable gmic est maintenant possible sur une machine modeste, et demande moins de RAM qu'auparavant. Pour information , G'MIC a été compilé sur un netbook Samsung NC10 avec 1Go de RAM. Il faut moins de 10 minutes pour le compiler en parallèle sur un quadri-coeurs 2.8Ghz, avec 8 Go de RAM. La taille du binaire gmic a été également divisée par 3, passant de 20Mo à 6.5Mo. C'est un gros frein matériel qui est ainsi levé.
  • Amélioration significative de la documentation, et arrivée de tutoriels pour découvrir l'utilisation de G'MIC. Ces informations sont d'ores et déjà disponibles sur le site web du projet. Des tutoriaux supplémentaires sont en cours de rédaction et devrait arriver d'ici peu.

Que vous soyez développeur, utilisateur averti de la ligne de commande, infographiste ou tout simplement curieux, nous vous invitons donc à tester cette dernière mouture de G'MIC !

Aller plus loin

  • # Temps de compilation

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

    Toujours une actualité aussi dense du côté de G'IMC. Tu indiques que les temps de compilation ont été réduits. Est-ce lié à G'IMC uniquement, ou peut-on espérer que CImg, sur lequel s'appuie G'IMC, a aussi vu ses temps de compilation réduits ?
    • [^] # Re: Temps de compilation

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

      Non, j'a fais le ménage dans G'MIC pour enlever pleins de fonctionnalités "inutiles" (toutes les fonctions de traitements pour les types de pixel autres que float, sachant qu'en pratique, on peut toujours revenir en float pour effectuer ces traitements). Du coup, ça enlève la compilation de beaucoup de fonctions (environ 9 fois moins).

      Mais il y a quelques problèmes avec l'optimisation dans g++.
      Si on enlève les optims, le temps de compil est correct.
      J'ai vu que quelqu'un s'était intéressé au problème, pour une ancienne version de G'MIC :

      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42175

      J'attend un peu de voir ce qui va se passer, mais il semble qu'il y ait des cas ou g++ requiert une quantité de RAM considérable pour essayer d'optimiser des boucles un peu longues (ce qui était le cas dans G'MIC, moins maintenant).
  • # Pour joindre l'utile à l'agréable...

    Posté par  . Évalué à 2.

    En voyant la page d'accueil du site, je me demandais si une des applications de ce projet pourrait être le redressement des images provenant des webcams lorsqu'on les utilise en visio-conférence. Le problème actuels des visio-conférences est que les interlocuteurs ne se regardent pas -- ils regardent l'écran et la caméra est souvent légèrement au-dessus ou en-dessous de l'écran.

    Pour que les interlocuteurs «se regardent», un calcul en temps réel est nécessaire -- sinon il faudrait une solution (opto-électronique) relativement complexe avec la caméra et l'écran dans le même axe. J'imaginais une solution avec deux caméras et un calcul en 3D. A la vue de la dernière image de la galerie (celle où l'on voit un visage s'incliner progressivement), je me demande si G'MIC ne serait pas capable de faire ça.
    • [^] # Re: Pour joindre l'utile à l'agréable...

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

      Techniquement je suppose que ça serait possible, car G'MIC possède une fonction de déformation d'image par un champ de déplacement quelconque.
      Cela dit, G'MIC n'a pas été conçu pour du temps réel, et j'ai un peu peur que "ca rame", comme on dit, même en passant par des pipes pour les entrées sorties.

      Quite à faire un programme dédié, peut-être vaut il mieux programmer quelque chose qui utilise directement une bibliothèque de traitement d'images plus bas niveau (au hasard CImg :) )
      • [^] # Re: Pour joindre l'utile à l'agréable...

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

        Qu'elle est la perte de performance sur le fait d'utiliser le langage de script par rapport à du C++ compilé ?

        Est-ce que tu regardes pour utiliser les instructions SSE ?

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

        • [^] # Re: Pour joindre l'utile à l'agréable...

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

          D'abord comme tout langage de script interprété, tu as un interpréteur qui tourne derrière, et qui analyse le code G'MIC à la volée, donc déjà il y a une perte de performances ici par rapport à un langage compilé.

          Ensuite, non, G'MIC n'utilise pas spécifiquement d'instructions propres aux différents processeurs. Il a été pensé pour être multi-plateforme, et je laisse le soin au compilateur d'optimiser le code de la façon dont il le souhaite.
    • [^] # Re: Pour joindre l'utile à l'agréable...

      Posté par  . Évalué à 2.

      je me demandais si une des applications de ce projet pourrait être le redressement des images provenant des webcams lorsqu'on les utilise en visio-conférence.
      Un truc dans ce genre là ? :
      http://www.chrisharrison.net/projects/3dvideo/
      • [^] # Re: Pour joindre l'utile à l'agréable...

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

        Un truc dans ce genre là ? :

        sans vouloir faire une blague (lourde), yaurait pas les sources :D ? (sous licence libre si possible...). Je n'ai pas vraiment trouvé le dépôt git ou svn correspondant :/
        • [^] # Re: Pour joindre l'utile à l'agréable...

          Posté par  . Évalué à 2.

          À priori les sources ne sont pas disponibles sur le site, mais rien n'empêche de les demander au chercheur qui a pondu l'appli. Sinon il reste aussi la solution de lire son papier et d'implémenter le truc soi-même...
  • # Après GIMP

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

    Je pense qu'il est temps de proposer g'mic aux distributions pour que celui-ci commence a être utilisé à grande échelle. Donc, il faudrait envisager a mon sens un paquet debian et un paquet Fedora, cela me semble un bon début.

    Je n'ai empaqueté qu'un petit programme perl, donc je ne connais pas les spécificités pour le C++. Des spécialistes dans la salle ?
    • [^] # Re: Après GIMP

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

      J'ai mal lu la fin de la dépêche ! Bref, pour debian, intégrer cela dans debian avec leur système de build et le multi arch... afin de l'avoir dans squeeze ;-)
  • # Versions Mac et Windows

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

    Les versions Mac et Windows sont maintenant à jour, avec à la fois les binaires pour le plug-in GIMP, et pour la version ligne de commande.
  • # Super!

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

    Ah ca tombe bien, je cherche justement un algoritme de
    traitement d'image CPU intensif, pour tester des trucs
    dans mon projet open source.
    Est-ce que quelqu'un pourrait me donner des idees?
    Pourquoi pas avec g'mic d'ailleurs.
    Merci beaucoup,
    Francois.

Suivre le flux des commentaires

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