G'MIC disponible en version 1.4.8.3

Posté par  (site web personnel) . Modéré par Xavier Teyssier. Licence CC By‑SA.
35
15
mar.
2011
Audiovisuel

G'MIC (GREYC's Magic Image Converter) fournit un ensemble complet d'outils pour le traitement des images numériques, en proposant :

  • la définition d'un langage de script dédié à la conception de pipelines d'opérateurs, pour l'application de traitements personnalisés sur des images, ainsi que son interpréteur associé, écrit en C++ ;
  • l'exécutable « gmic », permettant de manipuler, traiter et visualiser des images à partir de la ligne de commande. Dans ce contexte, il peut s'imaginer comme un compagnon / concurrent de la suite d'outils ImageMagick, par exemple ;
  • le greffon « gmic_gimp », qui ajoute des filtres additionnels à GIMP, le bien connu logiciel de traitement d'image.

La version 1.4.8.3 de ce framework multi-plate-forme est maintenant disponible au téléchargement. Un effort particulier a été fait sur la documentation de référence, avec l'illustration de l'application d'environ 500 opérateurs sur des images de test.

G'MIC possède des atouts intéressants, face au bien connu et bien implanté ImageMagick :

  • G'MIC travaille nativement par liste d'images. Il est donc capable de manipuler facilement plusieurs images d'entrée, et / ou produire plusieurs images de sortie, les tailles de ces images pouvant être quelconques.

    Par exemple, « gmic image1.jpg image2.jpg -resize [0],5 -add -div 2 -o output.jpg » additionne deux images en les redimensionnant si nécessaires, et « gmic image3d.hdr -split z -o output.hdr » permet de décomposer une image volumique 3D en plusieurs coupes numérotées, sauvées dans des fichiers « output_xxxx.hdr » différents.

  • G'MIC traite par défaut les images comme des tableaux 2D / 3D de valeurs flottantes, ce qui est, certes, peu économe en mémoire, mais permet d'obtenir une bonne précision de traitement. De ce fait, aucun problème d'arrondi n'apparaît lors du traitement des images à 16 bits/canaux ou à valeurs flottantes. L'exemple suivant permet, par exemple, d'appliquer une correction gamma sur une image 16 bits sans perte de précision :

    « gmic image16.tiff -div 65535 -pow 1.2 -mul 65535 -o output16.tiff »

  • G'MIC sait traiter nativement les données images volumiques, sans les considérer comme un ensemble de coupes. L'exemple suivant calcule les composantes du gradient lissé (en 3D, c-à-d, suivant X, Y et Z), et génère donc trois images de sortie :

    « gmic image3d.hdr -blur 1 -gradient ».

    Le même exemple sur une image 2D génère, bien sûr, uniquement deux images de sortie (composantes du gradient suivant X et Y). La plupart des commandes disponibles travaillent de manière transparente, que ce soit pour des images 2D ou des images 3D.

  • G'MIC possède des outils intégrés de visualisation, rudimentaires mais efficaces, qui sont vus comme des opérateurs de traitement comme les autres. Définir des interaction avec l'utilisateur est donc possible dans un pipeline de traitement, ce qui permet la création de commandes complexes, mais aussi ce qui facilite la conception des pipelines d'opérateurs (chaque étape du pipeline pouvant être visualisée). Par exemple :

    « gmic image.jpg -d -blur 3 -d -mirror x -d -flower 10 -d ».

    G'MIC est même capable de gérer des fenêtres de visualisation et leurs événements utilisateur associés, ce qui permet de créer des programmes relativement complexes, tels que : « gmic -x_tictactoe -x_jawbreaker ». De tels scripts peuvent, bien sûr, se définir dans des fichiers de commande G'MIC personnalisés, que l'on fournit à l'interpréteur.

  • Tous les pipelines définis en langage G'MIC peuvent s'intégrer directement dans le greffon pour GIMP. Ainsi, on peut proposer assez rapidement une interface graphique pour un traitement précis, sans avoir à écrire de code additionnel. Tous les filtres disponibles dans le greffon sont d'ailleurs définis de cette manière.

G'MIC commence à avoir une communauté active d'utilisateurs, avec des tutoriaux (en français et en anglais) et des contributeurs proposant de nouveaux filtres (tel ce sympathique convertisseur 2D->3D). N'hésitez pas à le tester, des paquets sont disponibles pour Debian (via un dépot), Ubuntu (via un PPA), ainsi des des archives pour Windows et MacOS X. Le survol des commandes de la documentation de référence permet d'avoir une bonne vue d'ensemble des possibilités de G'MIC.

Aller plus loin

  • # « convertir » de 2D en 3D ?

    Posté par  . Évalué à 5.

    « This filter is based on estimations of a theorectical depth field of your image. Your 2D image in reality does not contain any real depth information, it is just one flat image. »

    C'est pas censé marcher, mais ça marche quand même ? Rien compris. Quelqu'un sait ?

    • [^] # Re: « convertir » de 2D en 3D ?

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

      'theoretical' devrait plutôt ici être remplacé par 'analytical expression' : le filtre possède plusieurs pré-réglages de cartes de profondeurs plus ou moins adaptés au type d'image à traiter (portrait, paysage, intérieur, ..). On peut également donner au filtre une carte de profondeur personnalisée si l'on en possède une. Le filtre utilise ensuite l'image et la carte de profondeur pour générer une seconde vue 'décalée' pour arriver au 'rendu 3d' (anaglyphe ou stéréo).

      Ca peut paraitre assez basique, mais si la photo est bien adapté à l'une des cartes de profondeurs pré-rentrée, alors ça donne un effet 3d très sympa.

    • [^] # Re: « convertir » de 2D en 3D ?

      Posté par  . Évalué à 5.

      Non cela veut juste dire qu'à partir de n'importe quelle photo 2D, il est possible de faire une image 3D alors que des photos 2D n'ont apriori rien comme données 3D.

  • # script ?

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

    Y'a-t-il une raison pour avoir créer un pseudo langage de script ce qui peut être utile pour des petites lignes de commande mais complexe dans le cas de gros code ? Pourquoi ne pas avoir utilisé un langage embarqué comme lua pour faire la glue entre les fonctions de haut niveau ?

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

    • [^] # Re: script ?

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

      • Ce langage de script (pourquoi "pseudo" ?) a été pensé dès le départ pour optimiser l'écriture de pipelines d'opérateurs de traitements d'images, donc oui, il a une utilité dans le cadre de G'MIC : tu peux écrire des pipelines impliquant plusieurs images d'entrées et ou de sortie, et ce, de manière très concise, beaucoup plus qu'avec n'importe quel autres langage (lua inclus). Le but premier, c'est bien de permettre d'écrire des traitements relativement compliqués, à partir de la ligne de commande.

      • Après, si on sort de ce cadre, le langage n'est pas forcément intéressant à utiliser en tant que tel, et je ne le conseillerais pas personnellement pour faire autre chose que de la conception de pipelines de traitement d'images (de même que je n'utiliserais probablement pas du Bash pour développer des gros algorithmes de calcul par exemple, même si c'est surement possible). Le but n'est surement pas de faire du "gros code" avec !

      • De mon côté, j'ai essayé évidemment de "pousser" un peu le bouchon dans certaines commandes (par exemple -x_jawbreaker, -x_life, et la plupart des commandes interactives), pour voir jusqu'où on pouvait aller avec ce langage, aussi bien dans un but de curiosité, que de débuggage de l'interpréteur. Au final, on peut faire des choses assez amusantes avec. Et surtout, contrairement à la première impression, les bases du langages sont très simples et très logiques.

      • Pour aborder le langage G'MIC, je conseillerais de jeter un oeil aux fantastiques tutoriaux de Jérome : http://zonderr.wordpress.com/ , qui apportent un regard extérieur tout à fait intéressant et intuitif sur la façon dont le langage fonctionne.

      • [^] # Re: script ?

        Posté par  . Évalué à 1.

        L'opinion d'un gars connu.

        « a language for extensions should not be a mere "extension language". It should be a real programming language, designed for writing and maintaining substantial programs. Because people will want to do that! Extensions are often large, complex programs in their own right, and the people who write them deserve the same facilities that other programmers rely on. » — RMS, The Tcl war (sept. 1994) http://www.vanderburg.org/OldPages/Tcl/war/0000.html

      • [^] # Re: script ?

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

        Je ne nie pas l'utilité des fonctionnalités notamment dans l'intégration simple et poussé dans gimp. Pouvoir créer un plugin qui fait quelques choses d'utile, avec une belle interface graphique qui s'écrit en 4 lignes est un tour de force que je reconnais volontiers.

        Mais j'ai du mal à comprendre le choix d'un langage encore plus cryptique que perl :

        #@gmic replace : value_src,value_dest
        #@gmic : Replace pixel values in selected images.
        #@gmic : $ (1;2;3;4) --replace 2,3 -resize2dy 300
        replace :
          -e[^-1] "Replace pixel values $1 with $2 in image$?."
          -v - -repeat @#
            --==[-1] $1 -*[-1] {$2-$1} -+[-2,-1]
          -mv[-1] 0 -done -v +
        

        Et encore il s'agit juste du premier exemple ! ( http://cimg.cvs.sourceforge.net/viewvc/cimg/CImg/examples/gmic_def.gmic ) Franchement ! Il n'était pas possible de rendre le dataflow plus visible ?

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

  • # Multicalques

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

    Comment gmic gère t'il les fichiers multicalques : tiff, xcf, psd, ora (Openraster), ... (autres ?). Typiquement, est-ce que l'on peut fusionner une liste d'images en une seule qui contient plusieurs calques, ajouter des masques de calques, etc ?

    Merci en tout cas pour ce super logiciel, je l'utilise régulièrement pour mes retouches photos et divers trucs en ligne de commande.

    • [^] # Re: Multicalques

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

      Pour le moment, seuls les fichiers multi-pages en formats TIFF sont gérés (en entrée seulement).
      Le multi-page TIFF en sortie sera géré dans la prochaine version 1.4.9.0
      (une première version 'testing' devrait apparaitre ce soir sur le site).

Suivre le flux des commentaires

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