URL: https://linuxfr.org/users/dtschump/journaux/imagerie-avancement-du-projet-gmic-version-1328 Title: [Imagerie] Avancement du projet G'MIC (version 1.3.2.8) Authors: David Tschumperlé Date: 2009年10月13日T15:45:22+02:00 Tags: fractales, mathématiques, image, graphisme, gimp, 3d et g'mic Score: 33 Salut les musclés. Je vous propose ici un petit point sur l'avancement du projet [G'MIC](http://gmic.sourceforge.net), pouvant être utile aux [traiteurs d'images](http://fr.wikipedia.org/wiki/Traitement_d%27images) de tout poil (c'est du moins ce que j'espère). La version _1.3.2.8_ de ce projet (qui a débuté à l'été 2008) est en effet disponible depuis hier. [G'MIC](http://gmic.sourceforge.net) est développé dans [l'équipe IMAGE](http://www.greyc.ensicaen.fr/EquipeImage) du laboratoire de recherche [GREYC](http://www.greyc.ensicaen.fr) de l'[ENSICAEN](http://www.ensicaen.fr), à Caen/France. **Le présent :** [G'MIC](http://gmic.sourceforge.net) définit un langage de script simple, permettant d'élaborer des pipelines relativement complexes et génériques de traitements d'images. L'interpréteur de ce langage (le langage [G'MIC](http://gmic.sourceforge.net) donc) est distribué sous forme d'une bibliothèque libre (sous licence [CeCILL](http://www.cecill.info/licences/Licence_CeCILL_V2-en.html)) utilisable librement par des logiciels tiers. Deux programmes utilisant cet interpréteur sont déjà disponibles et distribués avec celui-ci : * D'une part, l'exécutable [**gmic**](http://gmic.sourceforge.net/documentation.shtml) permettant d'appeler les fonctions de [G'MIC](http://gmic.sourceforge.net) en ligne de commande. * D'autre part, le greffon [**gmic_gimp**](http://gmic.sourceforge.net/gimp.shtml) pour [GIMP](http://www.gimp.org), qui ajoute un nombre important de filtres et d'effets à ce fameux logiciel libre de retouche d'images (en particulier des filtres utiles pour le lissage et le débruitage, mais pas uniquement !). En un peu plus d'un an, [G'MIC](http://gmic.sourceforge.net) a beaucoup évolué. Il se voulait au départ, une sorte de clone de _convert_ (de la suite [ImageMagick](http://www.imagemagick.org)) qui permettrait une gestion d'images plus génériques (jusqu'aux séquences d'images volumiques 3D multi-spectrales). Mais il a rapidement évolué en un petit langage de programmation en soi, d'abord avec la possibilité d'interpréter des macros commandes, puis avec l'intégration d'un évaluateur d'expressions mathématiques et l'apparition de commandes de contrôle (boucles, tests, etc..). Contrairement à _convert_, [G'MIC](http://gmic.sourceforge.net) ne se veut pas un expert des entrées/sorties/conversions entre formats d'images. Mais alors, me direz vous, quels sont ses points forts ? Je vous propose ici d'en illustrer quelques uns, en spécifiant pour chaque exemple, la commande _gmic_ utilisée (la version ligne de commande de l'interpréteur [G'MIC](http://gmic.sourceforge.net)), ainsi qu'une copie d'écran du résultat correspondant. J'espère ainsi vous donner tout d'abord une vue d'ensemble des capacités de [G'MIC](http://gmic.sourceforge.net), et ensuite l'envie d'aller découvrir ce petit langage, et/ou les outils distribués avec. Peut-être même aurez vous envie d'intégrer certaines de ses possibilités dans votre propre logiciel de traitement d'images, si vous êtes développeur. La plupart de ces possibilités se retrouvent (ou peuvent potentiellement se retrouver) dans le greffon pour [GIMP](http://www.gimp.org), qui est en fait une partie visible d'un iceberg qui est peut-être plus gros qu'on pourrait le penser au premier abord. * Tout d'abord, [G'MIC](http://gmic.sourceforge.net) possède des **modules de visualisation intégrés** assez utiles. C'est une première différence avec _convert_, qui gère la visualisation de manière séparée, avec l'exécutable _display_, que je trouve personnellement moins pratique : * Visualiser une image 2D/3D quelconque et pouvoir naviguer/zoomer dedans : `gmic lena.jpg` ([**capture 2D**](http://www.greyc.ensicaen.fr/~dtschump/lfr/image.jpg)) ([**capture 3D**](http://www.greyc.ensicaen.fr/~dtschump/lfr/image3d.jpg)) * Visualiser une courbe 1D : `gmic -plot "'cos(x)%sin(x*2)'"` ([**capture**](http://www.greyc.ensicaen.fr/~dtschump/lfr/plot.jpg)) * Visualiser une élevation 3D d'une image 2D : `gmic -elevation3d "'30*sin(x*y)^2'",-4,-4,4,4` ([**capture**](http://www.greyc.ensicaen.fr/~dtschump/lfr/elevation3d.jpg)) * Visualiser un objet 3D, en format .off, ce qui permet d'avoir une alternative au vieillissant mais néanmoins utile [Geomview](http://www.geomview.org/): `gmic eros.off` ([**capture**](http://www.greyc.ensicaen.fr/~dtschump/lfr/eros.jpg)) * Visualiser une caractéristique classique d'une image ou d'une liste d'image, ici les 2 composantes du gradient : `gmic lena.jpg -gradient -d` ([**capture**](http://www.greyc.ensicaen.fr/~dtschump/lfr/gradient.jpg)) A l'usage, ces possibilités de visualisation intégrées sont très pratiques, et rapides à appeler, notamment car elles permettent d'appréhender correctement des données images à valeur flottantes (dernier cas par exemple). Utile aussi, lorsque l'on veut débugguer un script [G'MIC](http://gmic.sourceforge.net) en cours de développement. * Un des autres avantage de [G'MIC](http://gmic.sourceforge.net) est son **grand nombre de filtres/effets prédéfinis**, et surtout son évolutivité dans ce domaine : il est possible d'ajouter ses propres effets personnalisés, chaque effet étant écrit dans le langage de script [G'MIC](http://gmic.sourceforge.net). Beaucoup d'exemples de filtres/effets ainsi que leurs commandes associées sont illustrés sur [**la galerie d'exemples de G'MIC**](http://gmic.sourceforge.net/gallery.shtml). Ce qui est potentiellement intéressant, c'est que tout logiciel intégrant l'interpréteur [G'MIC](http://gmic.sourceforge.net) pourra bénéficier de l'arrivée de nouveaux filtres d'images écrits dans ce langage, sans même avoir besoin de recompiler quoique ce soit. * L'utilisation de [G'MIC](http://gmic.sourceforge.net) a également un grand intérêt lorsque l'on veut **générer des images 2D/3D synthétiques** ou des surfaces maillés en 3D, par exemple pour tester ou comparer les performances d'algorithmes de traitement d'images en développement. Ceci est possible, d'une part car [G'MIC](http://gmic.sourceforge.net) possède un évaluateur d'expressions mathématiques, et d'autre part, car il est capable de dessiner un certain nombre de choses dans des images (polygones, splines, texte, etc...). * Générer une forme géométrique bruitée à partir d'une formule implicite : `gmic 256,256,1,1,"X=x-w/2;Y=y-h/2;sqrt(abs(X)^2+abs(Y)^2.2)+20*?" -t 50%` ([**capture**](http://www.greyc.ensicaen.fr/~dtschump/lfr/ellipse.jpg)) * La même chose pour une image volumique, avec visualisation de l'interface correspondante sous forme d'une surface maillée : `gmic 128,128,128,1,"X=x-w/2;Y=y-h/2;Z=z-d/2;sqrt(abs(X)^2+abs(Y)^2.2+abs(Z)^2)+10*?" -t 30% -blur 1 -isosurface3d 50%` ([**capture**](http://www.greyc.ensicaen.fr/~dtschump/lfr/ellipse3d.jpg)) * On se rend compte assez vite qu'en ajoutant des boucles ou des tests, on peut obtenir des pipelines de génération d'images ou d'objets relativement complexes, et ce, from scratch. Par exemple : `gmic -repeat 20 -torus3d 15,2 -col3d[-1] "{?(60,255)},{?(60,255)},{?(60,255)}" -*3d[-1] 0.5,1 -if "{@{>,-1}%2}" -rot3d[-1] 0,1,0,90 -endif -+3d[-1] 70 -+3d -rot3d 0,0,1,18 -done` ([**capture**](http://www.greyc.ensicaen.fr/~dtschump/lfr/ring.jpg)) Notons que pour ce dernier exemple, il est possible pour des raisons évidentes de clarté, de créer une fonction [G'MIC](http://gmic.sourceforge.net) dédiée `ring_torii` dans un fichier de commande, qui pourra être appelé directement dans [G'MIC](http://gmic.sourceforge.net) par la suite : `gmic -ring_torii`. * [G'MIC](http://gmic.sourceforge.net) est intéressant également, car il permet de **créer des fenêtres tout en gérant les évènements utilisateurs associés** (souris, clavier, ...), et ce, depuis la version _1.3.2.8_. Ainsi, il est possible d'écrire des scripts en [G'MIC](http://gmic.sourceforge.net) où l'utilisateur a un contrôle visuel sur le traitement d'image qu'il effectue. Trois petits scripts existent déjà et illustrent cette possibilité : * Un petit éditeur de courbes fermées splines : `gmic -x_spline` ([**capture**](http://www.greyc.ensicaen.fr/~dtschump/lfr/splines.jpg)) * Une démo "Fish-Eye" où l'utilisateur peut zoomer sur une partie de l'image de manière interactive : `gmic -x_fish_eye` ([**capture**](http://www.greyc.ensicaen.fr/~dtschump/lfr/fisheye.jpg)) * Un explorateur de fractales Mandelbrot/Julia modeste mais fonctionnel : `gmic -x_mandelbrot` ([**capture**](http://www.greyc.ensicaen.fr/~dtschump/lfr/mandelbrot.jpg)) A noter que ces exemples ne sont pas des [Easter Eggs](http://en.wikipedia.org/wiki/Easter_egg_(media)), dans le sens où ce ne sont pas des fonctionnalités cachées, qui seraient codées "en dur" dans [G'MIC](http://gmic.sourceforge.net). Les sources de ces scripts sont disponibles, dans [le fichier des scripts reconnus par défaut](http://gmic.cvs.sourceforge.net/viewvc/gmic/gmic/src/gmic_def.raw?view=markup), mais ils sont tout à fait modifiables et améliorables par quiconque intéressé pour ce faire (je ne les ai pas copiés/collés ici, ils sont un peu plus complexe, vous vous en doutez). On pourrait même à terme imaginer créer de petits jeux en scripts [G'MIC](http://gmic.sourceforge.net), même si le but premier du langage n'est évidemment pas celui-ci. **L'avenir :** Le langage [G'MIC](http://gmic.sourceforge.net) est maintenant stable et fonctionnel. J'ai récemment proposé un projet pour étudiants dont le but serait d'enrichir la base des filtres disponibles, afin de les intégrer rapidement dans le greffon pour [GIMP](http://www.gimp.org), qui est aujourd'hui la partie de [G'MIC](http://gmic.sourceforge.net) la plus utilisée à ma connaissance. Je parcours souvent des forums spécifiques à la retouche photo numérique, et je vois bien qu'il y a encore pleins de processus/effets faits "à la main" qu'on pourrait automatiser avec [G'MIC](http://gmic.sourceforge.net). Dans un futur plus lointain, j'aimerais voir l'interpréteur [G'MIC](http://gmic.sourceforge.net) se retrouver dans d'autres logiciels libres liés au traitement d'image. J'ai essayé de vous montrer que ses possibilités sont assez étendues, et je suis sûr que cela pourrait avoir une utilité dans pas mal de produits traitant aussi bien d'images 2D que 3D. Depuis la dernière version _1.3.2.8_, l'interpréteur [G'MIC](http://gmic.sourceforge.net) peut se compiler sous forme d'une bibliothèque dynamique (C++) indépendante, et l'API a été simplifiée au maximum pour faciliter son insertion dans d'autres projets. Il est donc à priori facile de bénéficier très rapidement de tous les filtres de [G'MIC](http://gmic.sourceforge.net) déjà disponibles dans vos propres programmes (cela inclus bien évidemment, les filtres de débruitage d'image [GREYCstoration](http://cimg.sourceforge.net/greycstoration/index.shtml)). Par ailleurs, les possibilités du greffon [G'MIC](http://gmic.sourceforge.net) sont maintenant utilisables dans les script-fu de [GIMP](http://www.gimp.org), ce qui ouvre encore de nouvelles possibilités pour les scripteurs fous habitués au Scheme. J'ai essayé de vous montrer par ce long journal que [G'MIC](http://gmic.sourceforge.net) a des fonctionnalités intéressantes, a une architecture ouverte, et essaie de faire passer encore un peu plus le libre dans le domaine du traitement d'image. N'hésitez donc pas à le tester et éventuellement à l'intégrer dans vos propres réalisations libres ! Si vous avez des interrogations, vous pouvez aussi me contacter, éventuellement lors de [ce séminaire](http://seminaire.lrde.epita.fr/index.php), ou laisser un commentaire à la suite de ce journal. Sur ce, bon appétit !

AltStyle によって変換されたページ (->オリジナル) /