- 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 :
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
- Page principale du projet (14 clics)
- Greffon pour GIMP (12 clics)
- Galerie d'images (8 clics)
- Équipe Image du GREYC (15 clics)
# Temps de compilation
Posté par jm trivial (site web personnel) . Évalué à 2.
[^] # Re: Temps de compilation
Posté par David Tschumperlé (site web personnel) . Évalué à 4.
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).
[^] # Re: Temps de compilation
Posté par zaurus (site web personnel) . Évalué à 1.
distcc devient tres facile et les temps de compilation
vont en prendre un coup. ;)
# Pour joindre l'utile à l'agréable...
Posté par FantastIX . Évalué à 2.
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 David Tschumperlé (site web personnel) . Évalué à 3.
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 Nicolas Boulay (site web personnel) . Évalué à 2.
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 David Tschumperlé (site web personnel) . Évalué à 2.
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 Frédéric Lopez . É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 BAud (site web personnel) . Évalué à 3.
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 Frédéric Lopez . Évalué à 2.
# Après GIMP
Posté par Sytoka Modon (site web personnel) . Évalué à 2.
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 Sytoka Modon (site web personnel) . Évalué à 2.
# Versions Mac et Windows
Posté par David Tschumperlé (site web personnel) . Évalué à 1.
# Super!
Posté par zaurus (site web personnel) . Évalué à 1.
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.
[^] # Re: Super!
Posté par BAud (site web personnel) . Évalué à 2.
j'avais noté les liens sur http://cookerspot.tuxfamily.org/wikka.php?wakka=Blog20070501(...)
(n'hésite pas à faire des retours de ce que tu as essayé)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.