Audiovisuel G’MIC Online, le traitement d’image en ligne

54
15
oct.
2012
Audiovisuel

Le GREYC, laboratoire de recherche en informatique, image, automatique et instrumentation du CNRS situé à Caen, a mis en ligne un service Web (Web service) basé sur le logiciel libre G’MIC (GREYC’s Magic Image Converter, développé dans ce même laboratoire) permettant d’appliquer des filtres/effets sur des images, directement à partir d’un navigateur Web.

Mascotte Gmicky

C’est à l’occasion de la sortie de la nouvelle version majeure 1.5.2.0 de G’MIC que cette interface Web a été mise en place. Elle reprend les principaux éléments du greffon G’MIC pour GIMP : un arbre des filtres disponibles (+ de 200 actuellement), une fenêtre de prévisualisation de l’effet sélectionné et un panneau de réglage des paramètres.

Des détails sur ce service et sur les nouveautés du projet G’MIC, dans la deuxième partie de la dépêche.

Le projet G’MIC en est rendu à la version 1.5.2.0. Il définit un ensemble d’interfaces permettant de manipuler des images génériques (2D, 3D, multi‐spectrales, etc.) en particulier :

  • une bibliothèque C++ libgmic, permettant d’ajouter les fonctionnalités de G’MIC dans un programme C++ ;
  • un binaire en ligne de commande gmic, qui permet de manipuler les images à partir d’un shell, « à la ImageMagick » ;
  • un greffon gmic_gimp pour GIMP, ajoutant des centaines d’effets au logiciel libre bien connu de retouche d’images ;
  • et depuis peu donc, un service Web G’MIC Online permettant d’appliquer des filtres sur des images à partir d’un navigateur Web. Ce service a été développé par Sébastien Fourey, membre de l’équipe IMAGE du laboratoire GREYC. Cette nouvelle interface est particulièrement intéressante pour le projet G’MIC : elle ne requiert aucune installation et devrait permettre de toucher un public plus large. Pour des raisons techniques évidentes, la taille des images que l’on peut traiter est actuellement limitée, et certains filtres du greffon sont absents (car trop gourmands en ressources). Mais cela reste néanmoins une interface très pratique et rapide à utiliser, qui pourrait démocratiser l’usage de G’MIC.

Dans cette dernière version de G’MIC, on peut comme toujours noter l’apparition de nouveaux filtres et effets, et de nombreuses corrections de bogues et optimisations diverses (voir le journal des modifications complet).

G’MIC Online

À noter finalement que G’MIC fera l’objet d’une présentation dans la session Multimédia du Capitole du Libre, à Toulouse, le 24 novembre 2012. N’hésitez pas à tester et à nous donner vos avis et remarques sur ce sympathique projet !

  • # ZArt

    Posté par (page perso) . Évalué à  10 .

    A noter qu'il existe aussi une autre interface a G'MIC : ZArt, développé également par Sébastien Fourey (quel contributeur actif!) permettant de jouer avec les filtres de G'MIC sur les images provenant de la webcam. C'est très intéressant notamment pour faire des démonstrations lives d'opérateurs de traitement d'image à des étudiants, ou lors d'occasions telles que la fête de la science.

    Honte à moi pour cet oubli !

    Voici une copie d'écran de ZArt en action :

    ZArt

    • [^] # Re: ZArt

      Posté par . Évalué à  0 .

      Ca a l'air chouette. Ou peut-on le telecharger?

      • [^] # Re: ZArt

        Posté par . Évalué à  1 .

        Oui et l'installer par la même occasion :
        sudo aptitude install gmic-zart

  • # PIV

    Posté par (page perso) . Évalué à  5 .

    J'ai quelques chercheurs qui font de la PIV. En gros, on construit un champ de vitesse et un champ de corrélation à partir de deux images d'un même fluide à deux instants distants. Quasiment la même chose est possible avec des solides déformables pour avoir le champs de déformation…

    http://en.wikipedia.org/wiki/Particle_image_velocimetry

    On peux aussi faire cela avec une suite d'image voire si on a plusieurs appareils photos ou caméras le faire en 3D… L'intérêt est qu'avec 3 images à chaque instant, on multiplie par 10 environ la précision !

    Est-ce possible avec G'MIC de faire ce genre de chose actuellement ? Si non, est-ce une problématique facilement envisageable ?

    • [^] # Re: PIV

      Posté par (page perso) . Évalué à  2 .

      ils lisent la plaque d'un véhicule par reconnaissance de caractères de photos issues de 3 webcam en 640x480 comme dans NCIS (Los Angeles, je précise…) ?

      • [^] # Re: PIV

        Posté par (page perso) . Évalué à  2 .

        Il y a eu des essais de réalisé avec du 40, voire du 80 millions de pixel. Pas besoin de 3 photos pour lire une plaque ;-)

    • [^] # Re: PIV

      Posté par (page perso) . Évalué à  3 .

      Oui je pense que c'est possible, G'MIC possède des outils d'estimation de déplacement local entre deux images, en 2D et en 3D.

      • [^] # Re: PIV

        Posté par (page perso) . Évalué à  2 .

        Super, as tu une piste à me donner ?

        A ce jour, on enregistre ces estimations dans un fichier NetCDF sous forme de tableau de réel. C'est un format d'image très pratique si on veut faire des traitements dessus dans un autre langage (scilab, matlab, fortran…). Tu choisirais quoi comme format pour ces estimations ?

        Éventuellement, on peux basculer en mode privé pour ne pas fagocité la news, je suis au CNRS moi aussi ;-)

        • [^] # Re: PIV

          Posté par (page perso) . Évalué à  3 .

          Oui, il faudrait que je puisse voir le type des données d'entrées, et ce que tu veux en faire exactement. Je pourrais aviser ensuite. Effectivement on peut continuer en e-mail :p

          • [^] # Re: PIV

            Posté par . Évalué à  3 .

            Bonjour,

            J'encadre un post-doc qui a developpé un protoype de PIV/DIC/"recalage d'image" en 2D en utilisant cimg. Son travail est basé sur l'estimation du flot optique global en utilisant des éléments bilinéaire. Cela ressemble un peu à ce qui est fait ici ftp://ftp-sop.inria.fr/athena/Team/David.Tschumperle/CImg/examples/optflow.c
            tout est fait en GPL, cela peut évidemment être partagé.

            • [^] # Re: PIV

              Posté par (page perso) . Évalué à  3 .

              L'algo d'estimation de déplacement de G'MIC est exactement celui là (G'MIC est basé sur CImg..).
              Donc à priori, on peut utiliser G'MIC pour l'appeller depuis la ligne de commande.

              • [^] # Re: PIV

                Posté par . Évalué à  6 .

                C'est un peu différent tout de même. Dans ce que tu fais tu définis une grille de type différence finies à la taille du pixel, et tu régularises en pénalisant une énergie de type laplacien du déplacement, ce qui évites d'avoir des fortes variations du déplacement. Nous avons implémenté un technique basée sur les éléments finis, qui assure une interpolation bilinéaire par élément avec une grille de taille allant de 16x16 à 64x64 (en général), il y a dans ce cas moins besoin de pénaliser l’énergie associée à l'image.

                Pour expliquer un peu le problème de manière plus générale, associer déplacement et images est un thème abordé par plusieurs communautés.

                Les pionnier sont la mécanique des fluide avec la Particule Image Velocimetry :
                Il s'agit d'observer des particules et de prendre deux images successives à des temps très courts. La technique classique consiste à prendre des petites fenêtres et à chaque fenêtre rechercher le déplacement de corps rigide qui entraîne la meilleur corrélation entre les deux imagettes. Comme le déplacement est pris entre deux temps très courts on peut avoir une image fidèle de la vitesse. On notera le logiciel libre osiv http://osiv.sourceforge.net/ ainsi que jpiv http://www.jpiv.vennemann-online.de/ qui répondent à cette problématique

                On appelle cette méthode en mécanique des solides déformables, Digital Images Correlation. La différence principale vient du fait que les images sont prises avec des temps plus grands entre deux images successives. On a donc des déplacements. Beaucoup de techniques sont identiques à celles de la PIV. On ne s’intéresse toujours pas au recalage entre l'image initiale et l'image finale. Il n'existe pas chez nous de Logiciels Libre pour répondre à ce besoin, mais ceux de la PIV fonctionnent bien.

                A noter que les techniques utilisant le flot optique sont aussi couramment utilisées sur des imagettes, il existe une communauté en analyse d'images qui utilise massivement ces méthodes, on peut se référer à l'implémentation de l'algorithme de Lucas-Kanade dans OpenCV (https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/lkdemo.c?rev=1429) pour plus de détails.

                Il y a eu en 2006 l'apparition de méthodes appelées globales, qui sont celles que j'ai expliqué au début. Dans ces méthodes on recale l'image finale sur l'image initiale. Elles sont également basées sur le flot optique, mais c'est sur toute l'image que s'opère la minimisation et non sur une imagette.

                Dans la communauté d'imagerie médicale, il existe depuis bien plus longtemps (1995) des techniques appelées Image Registration (ou recalage d'images), qui cherchent à rendre le plus semblables possible deux images en déformant l'image finale. Il y a plusieurs catégories, le recalage rigide, on l'on cherche à trouver la meilleurs translations et rotations (en 2D ou 3D) le recalage par similarité (on cherche le grossissement en +), il y a ensuite ce qui s'appelle le recalage déformable ou élastique. Il existe beaucoup de logiciels libres permettant de faire du recalage d'images, le plus complet est elastix (http://elastix.isi.uu.nl/) là où nous utilisons une base élément finis pour les déplacements ils utilisent des BSplines. Il existe également plastimatch (http://plastimatch.org/) qui a moins d'options que elastix ne fonctionne qu'en 3D mais est massivement // peut faire du OpenMP ou du Cuda ce qui le rend dans ce contexte très intéressant.

                De notre cotés nous essayons de développer une plate-forme permettant de balayer tout ces domaines avec la contrainte de tout penser pour que ce soit massivement // du fait de l'arrivée prochaine d'un µtomographe qui nous permettra d'avoir ds images de 2000³ ce qui est infaisable aujourd'hui sur un laptop. et prend beaucoup de temps sur des machines performantes ou des HPC si ce n'est pas parallélisé.

                Je rebondirais également sur l’aspect données, nous essayons également de travailler le plus possible avec netCDF car il permet d'avoir des données pérennes d'acceder aux fichiers en // et de stocker beaucoup plus que des pixels.

                • [^] # Re: PIV

                  Posté par . Évalué à  2 .

                  Je ne sais pas si la lib c++ a changé, mais j'avais déjà vu que c'était dommage que la structure des images et les fonctions de traitement ne soit pas plus séparé. Il est donc difficile de faire du SIMD, de l'openMP et encore plus dure de faire de l'opencl.

                  "La liberté de tout dire n'a d'ennemis que ceux qui veulent se réserver le droit de tout faire". "La question n'est pas de savoir si vous avez quelque chose à cacher. La question est de savoir si c'est nous qui contrôlons le gouvernement ou l'inverse

        • [^] # Re: PIV

          Posté par . Évalué à  3 .

          Éventuellement, on peux basculer en mode privé pour ne pas fagociter la news, je suis au CNRS moi aussi ;-)
          
          

          Ce qu'il faudrait pour rendre cette discussion agréable, c'est qqs images représentatives du problème, comme ça on pourrait jouer avec plutôt que de parler dans l'abstrait.

  • # G'MIC Online

    Posté par (page perso) . Évalué à  8 .

    Un truc qui serait pratique sur G'MIC Online serait d'avoir l'image originale quand on passe la souris sur l'image et la preview de l'effet quand la souris est ailleurs (façon ShowPhoto).

    Sur des effets subtils ça permet de mieux visualiser les différences.

  • # Amélioration

    Posté par (page perso) . Évalué à  10 .

    Sébastien a déjà mis en place quelques améliorations du site, avec :

    • La possibilité de pipeliner les traitements : une image de sortie pouvant servir de nouvelle entrée pour un nouveau filtre.
    • La possibilité de 'bouger' la preview quand le traitement est en vue locale, afin de voir l'effet d'un filtre à plusieurs endroits différents.
    • La taille limite des images passe à 1280 px de haut ou de large.

    Je trouve la proposition du commentaire précédente très pertinente, on va voir si c'est possible à faire.

    • [^] # Re: Amélioration

      Posté par . Évalué à  1 .

      Il faudrait aussi des courbes manipulables par souris pour les courbes de niveau.

      "La liberté de tout dire n'a d'ennemis que ceux qui veulent se réserver le droit de tout faire". "La question n'est pas de savoir si vous avez quelque chose à cacher. La question est de savoir si c'est nous qui contrôlons le gouvernement ou l'inverse

    • [^] # Re: Amélioration

      Posté par . Évalué à  1 .

      Il faudrait un moteur de recherche pour les filtres.

    • [^] # Re: Amélioration

      Posté par (page perso) . Évalué à  1 .

      J'ai vu que ma proposition ci-dessus a été mise en place. C'est un petit peu lent, mais merci !

      • [^] # Re: Amélioration

        Posté par (page perso) . Évalué à  4 .

        Utilises-tu Chrome ?
        Nous avons un problème avec Chrome pour le switch des images, c'est effectivement un peu lent, par contre sous Firefox ou IE ça turbine.

        • [^] # Re: Amélioration

          Posté par (page perso) . Évalué à  2 .

          Argh, je suis démasqué ! J'utilise Chromium la plupart du temps.

          En effet, avec Firefox la vitesse est normale, well done !

Suivre le flux des commentaires

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