G'MIC : Un nouvel outil libre de manipulation d'images.

Posté par  (site web personnel) . Modéré par Benoît Sibaud.
Étiquettes :
5
18
août
2008
Audiovisuel
G'MIC est un nouveau venu dans le paysage de la manipulation d'image par outils en ligne de commande : Il permet de charger/sauver, manipuler, traiter et visualiser des images ou des groupes d'images qui peuvent être 1D, 2D ou 3D et multi-spectrales, ce qui comprend les images couleurs classiques bien sûr, mais aussi les images volumiques avec plus de 3 composantes par pixel.

En ce sens, il vient compléter les outils disponibles comme ImageMagick ou GraphicsMagick. Mais là où ces deux programmes se focalisent sur la prise en charge de nombreux formats de fichiers différents (principalement pour les images 2D), G'MIC s'intéresse plutôt à la manipulation proprement dite, avec la définition d'un certain nombre de commandes qui peuvent s'enchaîner pour définir des filtres personnalisés. Le site du projet en montre quelques possibilités. G'MIC possède également des modules simples de visualisation d'images et d'objets 3D (pour visualiser des isophotes/isosurfaces ou des cartes d'élévations), très pratiques pour explorer des données images 2D ou 3D.

Cela en fait un compagnon idéal pour les traiteurs d'images de tout poil. G'MIC a été développé dans l'équipe IMAGE du laboratoire GREYC, et est distribué sous licence libre CeCILL 2.0. G'MIC possède certaines caractéristiques propres qui le distinguent de ses 'concurrents' :
  • Il conserve en mémoire une liste numérotée d'images d'entrée. Cela lui permet de manipuler les images, soit par lots, soit séparément, en les combinant éventuellement par la suite. Cette représentation est très adaptée pour manipuler des collections entières d'images, par exemple des séquences vidéos ;
  • Il définit un grand nombre de commandes pour le traitement des images : manipulation géométrique, opérateurs arithmétiques, filtrage, conversion entre espaces de couleurs, etc. Ces commandes sont interprétées dans l'ordre d'apparition sur la ligne de commande, ce qui permet une grande flexibilité de manipulation (équivalent à un petit langage de programmation dédié à l'image). À noter que l'algorithme GREYCstoration est inclus dans G'MIC pour le débruitage d'images ;
  • Les images manipulées sont typées. G'MIC sait travailler avec des images à valeurs flottantes ou des images avec 16 ou 32 bits par composantes. Les types supportés sont ceux du C classique : bool, unsigned char, short, int, float, double, etc. ;
  • G'MIC possède quelques fonctionnalités 3D qui lui permettent d'extraire et de visualiser des caractéristiques 3D des images : isophotes/isosurfaces ou cartes d'élévation. G'MIC sait également charger, sauver et visualiser les objets 3D en format .off.
G'MIC peut être utile dans plusieurs situations : conversions de fichiers image, découpage/réassemblage de données, design de filtres personnalisés, exploration/visualisation de données images, etc.

G'MIC est multi-plateforme, programmé en C++ et basé sur la bibliothèque CImg. Il utilise également les bibliothèques externes de Magick++, FFMPEG, libpng, libjpeg, libtiff, etc. pour gérer différents formats de fichier.

Pour finir, je lance un appel pour aider à packager G'MIC sur différentes architectures/distributions. Si vous arrivez à le compiler sur d'autres systèmes, ou si vous savez faire un paquet pour votre distribution, n'hésitez pas à me contacter !

Aller plus loin

  • # Pas d'IG ?

    Posté par  . Évalué à -1.

    Ce logiciel ne possède pas d'interface graphique ?
    • [^] # Re: Pas d'IG ?

      Posté par  . Évalué à 3.

      G'MIC est un nouveau venu dans le paysage de la manipulation d'image par outils en ligne de commande

      et sur le site officiel :

      G'MIC is a console-based image processing tool

      Donc non, il n'y a pas d'interface graphique...
      • [^] # Re: Pas d'IG ?

        Posté par  . Évalué à 0.

        Allez , je me fais moinsé pour une question qui pourtant est évidente à poser.

        Quand je parlais d'IG, c'est pas une IG propre, c'est de savoir si un programme avait déjà son intégration quelque part dans logiciel comme gimp and co, ou au moins si un projet prépare son intégration.

        Parce qu'un logiciel d'imagerie qui n'est utilisable qu'en ligne de commande me laisse relativement perplexe. Pour travailler a peu près dans le domaine, je sais que jamais je pourrais utiliser un tel outil comme ça, parce que ce n'est pas pratique, parce quand on travail en image on a besoin d'avoir avant/après de manière souple, et d'inserer les paramètre de manière intuitif.

        C'est pour ça que je me permettais de poser cette question, et je trouve ça relativement légitime.
        • [^] # Re: Pas d'IG ?

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

          G'MIC possède une interface simple de visualisation d'images. Il n'y a pas pleins de boutons partout, ca se pilote principalement au clavier et à la souris, mais c'est relativement efficace.

          Travaillant également dans le domaine du traitement d'images, je me permets de ne pas être d'accord avec toi : les outils en ligne de commandes sont très utiles dans ce domaine.
          Je ne compte pas le nombre de fois que j'ai utilisé 'convert' de ImageMagick dans des scripts divers et variés.

          David.
          • [^] # Re: Pas d'IG ?

            Posté par  . Évalué à 2.

            Tu travailles dans quel domaine ?

            Parce que personnellement quand je traite une image, si j'ai besoin de convertir quelque chose, j'utilise directement mon logiciel qui a cette fonction.

            Je veux dire je me vois mal lancer une console, retrouver le chemin de mon image, lancer la fonction avec des chance de me planter dans la syntaxe. Enfin j'aimerai bien que tu m'expliques.

            Ce n'est pas du tout "méchant", c'est juste que j'essaye de comprendre même si je me fais asphalter !
            • [^] # Re: Pas d'IG ?

              Posté par  . Évalué à 6.

              Sauf que si tu dois automatiser le traitement d'images, il est tout de suite plus compliqué d'avoir un opérateur derrière son écran, qu'il s'agisse de traitement batch ou en flux.

              Pour ce qui est du traitement d'images satellites par exemple (dont un certain nombre aurait mérite à s'appuyer sur des logiciels éprouvés plutot que de "réinventer la roue"), la majorité des traitements s'effectue de manière automatique, quitte à avoir un contrôle visuel en fin de chaine.
              Il est plus intéressant de nos jours, avec la puissance de calcul disponible, de traiter une image, même multi-spectrale, par défaut puis de contrôler et de refaire le traitement avec des paramètres différents au besoin que d'avoir un opérateur effectuant toujours les mêmes opérations, sans valeur ajoutée... si ce n'est dans 0,5% des cas.
            • [^] # Re: Pas d'IG ?

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

              C'est lequel ton logiciel ? En ce qui me concerne, pour convertir une image quelconque dans un format que je sais relire facilement dans mes programmes, je préfère ne pas lancer une grosse interface graphique et avoir à trifouiller dans 3 ou 4 menus, alors qu'en une ligne de commande c'est fini. Alors en plus si je dois faire çà pour N images...
              Pareil si j'ai envie de visualiser vite fait une image volumique par exemple, je vais avoir tendance à utiliser G'MIC justement plutôt que de lancer une grosse usine à gaz avec une interface.

              Mais je pense que c'est juste une question d'habitude. Cela dit, ma modeste expérience me fait donc dire que quand même les outils de manip d'images en ligne de commande, c'est bien pratique !

              David.
            • [^] # Re: Pas d'IG ?

              Posté par  . Évalué à 3.

              « [...] je me vois mal lancer une console, retrouver le chemin de mon image, lancer la fonction avec des chance de me planter dans la syntaxe »

              C'est une question d'habitude. Chez beaucoup un terminal est ouvert en permanence et ils sont déjà dans le bon répertoire, reste plus qu'à bien connaître son logiciel (comme tu dois connaître ton interface graphique).


              P.S. : Avoir un shell bien configurer ça accélère énormément l'usage du terminal.

              Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

              • [^] # Re: Pas d'IG ?

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

                Avec konqueror, quand on voit les fichiers que l'on veut traiter, il suffit d'appuyer sur F4 pour avoir une "konsole" ouverte dans ce répertoire. C'est l'un des gros intérêts d'un environnement bien intégré.
                En plus F4 c'est tellement commode que ça se retient vite.
            • [^] # Re: Pas d'IG ?

              Posté par  (Mastodon) . Évalué à 4.

              le fait que ça se fasse en ligne de commande rend l'utilisation scriptable.

              Par exemple, au lieu de charger 200 images en même temps dans gimp ou séquentiellement pour faire une rotation de celles qui ont été prise en mode "portrait", tu peux sélectionner les images en question dans ton navigateur et lancer le script de rotation pour toutes ces images.

              C'est aussi utile pour redimenssionner ou convertir de format un lot d'images par exemple...
            • [^] # Re: Pas d'IG ?

              Posté par  . Évalué à 4.

              Pour bosser dans le monde de l'imagerie, la ligne de commande est trèèèèèèès trèèèèèèès utile. (merci justement à David d'avoir implementé certaines features que je lui avais proposé à l'époque de inrcast)
              Il faut partir du principe que tu as besoin, toi, que de traiter un fichier seulement, mais imagines, si tu as 150.000 images a traiter, et bien, j'y serais encore si je n'utiliserais pas du traitement en ligne de commande.
              Mais je suis d'accord sur un élément: quand tu as des opérateurs qui ne s'y connaissent pas en ligne de commande (graphiste & co) mais besoin de modifier une succession d'image, généralement il faut utiliser des logiciels graphics-compliant. Mais là, on part sur des solutions vfx avec une pointe de tracking pour gérer certains binious.
            • [^] # Re: Pas d'IG ?

              Posté par  . Évalué à 4.

              Il ne faut pas juste se positionner en tant qu'utilisateur final.

              L'intérêt d'une librairie est qu'elle peut être appelée via un autre logiciel, graphique ou non.

              Chaque interface graphique ne devrait être... qu'une interface graphique qui utilise des librairies partagées avec d'autres outils (encore une fois, graphiques ou pas).

              Par exemple, on trouve souvent des logiciels équivalent sous différents environnements (KDE, Xfce et Gnome par exemple).

              Il est inutile de recoder tous les algorithmes spécifiques au traitement d'image dans chacun d'eux. Autant partager ce qui peut l'être via un librairie ou un programme en ligne de commande.

              Et c'est ce qui fait que l'on peut également lancer les commandes à la main, les scripter, partager des scripts utilisés par d'autres librairies...
        • [^] # Re: Pas d'IG ?

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

          Moi je ne travaille pas dans le domaine, mais je sais que quand je dois manipuler plus de 2 images pour leur faire subir le même traitement et bien j'utilise systématiquement la ligne de commande et imagemagick et je te garantis que c'est pratique. Par exemple, je viens de scanner x photos argentiques (vécu) et bien la ligne de commande me permet en deux temps trois mouvement de leur donner à toutes le même ratio en enlevant la bords mal délimité (via crop), ensuite il fallait que ces images aient une bordure, et bien ça a toujours été fait avec imagemagick en ligne de commande. Y'a surement le moyen de faire pareil avec une IG, mais je suis sur que le temps que tu apprennes à te servir de l'IG j'ai fini toutes ces tâches.
          • [^] # Re: Pas d'IG ?

            Posté par  . Évalué à 3.

            ceci dit dans konqueror, avec un clic-droit et l'extention ad-hoc, on fait appel à imagemagick sans passer par la ligne de commande pour tout un tas de choses basiques : redimensionnement, rotation, compression etc...

            ++
  • # vs imagemagick

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

    hello,
    quel différence par rapport à imagemagick? Du peu que je voix, imagemmagick semble plus complet....
    • [^] # Re: vs imagemagick

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

      En vrac :

      * ImageMagick ne gère pas (à ma connaissance) complètement les formats d'images volumiques, G'MIC peut les lire, et les décomposer en série de coupes, par exemple. Pareil pour 'display' qui se limite aux images 2D. G'MIC peut visualiser des images volumiques 3D, on peut se balader dans les coupes, etc..

      * ImageMagick ne gère pas (à ma connaissance) les formats d'images multi-spectrales avec un grand nombre de composantes (genre image ou chaque pixel est un vecteur de 256 composantes). G'MIC, si.

      * En fait, chaque image G'MIC est en interne considérée comme une image volumique multi-spectrale à nombre de composante arbitraire, et de type arbitraire. Les images 2D couleurs en sont justes un cas particulier. Ca veut dire par exemple, que tu peux charger une images volumique 3D à 256 canaux, et faire un blur 3D ou une convolution 3D dessus, ca va marcher. La plupart des fonctions de G'MIC (toutes en fait..) marchent correctement sur les images volumiques multi-spectrales (et ont été programmée pour ce cas général là).

      * ImageMagick ne gère pas de listes d'images de manière aussi flexible que G'MIC. Ici, tu peux charger deux images, décider de convoluer l'une avec l'autre, de les additionner, etc... Dans ImageMagick, tu as beaucoup d'opérations de manipulation, mais ça travaille plutôt image par image, sans tellement d'interaction possible entre les images.

      * G'MIC semble avoir moins d'opérateurs, mais je dirais qu'il faut se méfier, car ce sont des opérateurs "de base'" qui peuvent s'enchainer pour donner des filtres complexes (voir la page web). Par exemple le '-solaris' de convert peut très bien être réalisé en enchainant plusieurs commandes G'MIC.

      * G'MIC est 'typé', tu peux facilement convertir par exemple une image codée en 8 bits, en image 16 bits de même format, par exemple pour le ppm : gmic -t uchar input8.ppm -t ushort -o output16.ppm

      * G'MIC sait extraire des caractéristiques 3D à partir des images, comme les isosurfaces ou les cartes d'élévations, et est capable de les visualiser. Je pense pas que ImageMagick sache faire çà.

      Je dirais que ImageMagick c'est top pour les images 2D couleurs, mais dès que tu as plus de dimensions, c'est pas toujours possible de récupérer les infos que tu veux. G'MIC utilise en interne un format d'images très générique, qui permet plus de flexibilité de manip pour ce type d'images.
      • [^] # Re: vs imagemagick

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

        merci
      • [^] # Re: vs imagemagick

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

        G'mic a l'air intéressant de part son positionnement.
        Je travaille également dans un labo de traitement de l'image et c'est assez surprenant de voir le peu d'outils existant entre le "traitement d'image" façon gimp (2D, image "isolée") et la programmation directe en C/C++ (par ex.) avec des biblio genre openCv, imagemagick, fftw ... sur des images 3D.
        Sur un projet, j'avais choisi à l'origine de couper la poire en deux en bossant avec Octave qui offre une panoplie plus large et plus souple dans le traitement d'image (pas toujours en 3D, malheuresement), mais j'avais été assez vite refroidi par les temps de calcul quand les traitements concernent des images volumineuses, (genre 512^3, double flottants, complexes 8] !) malgré l'écriture de fonctions en C++ pour Octave ...
        La "solution" avait alors été de tout recoder en C/c++, ce qui peut etre un peu lourd pour des essais préliminaires...

        ImageJ (en java) peut aussi etre intéressant en 3D dans certains cas.
        • [^] # difference entre une image naturelle et image artificiel

          Posté par  . Évalué à 1.

          bonjour
          et grand merci a "David Tschumperlé" qui a sorti cette merveille que j'ai essayé ce matin, il est formidable,et je crois qu'il est moins gourmand de la memoire.
          je demande si il est possible de m'aider a trouver la difference qui exist entre une image simple (nature,mer,plage...) avec une image artificiele realiser avec un outils 3D (batiment 3d,personnage 3d...) ,
          est que avec "G'MIC" j'ai de la possibilite de faire ça ,s'il ya d'autre piste je suis pronneur;
          et merci David.
        • [^] # Re: vs imagemagick

          Posté par  . Évalué à 1.

          pardon mon message n'apparaître pas

Suivre le flux des commentaires

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