Journal GREYCstoration 2.0

Posté par  (site web personnel) .
Étiquettes :
0
7
déc.
2005
Bonjour,

La deuxième mouture de GREYCstoration [1] est sortie.
GREYCstoration est un petit programme en ligne de commande qui permet de régulariser des images, et qui a un tas d'applications sympas, notamment le débruitage, l'inpainting, et le redimensionnement d'images. Il est distribué sous licence CeCILL.

L'algorithme utilisé est basé sur des EDP de diffusion anisotropes (équations aux dérivées partielles), qui ont la particularité de bien lisser sans détruire les contours. Cet algorithme a été développé dans l'équipe IMAGE [2] du laboratoire GREYC [3] de Caen (UMR CNRS 6072).

Cette deuxième version corrige quelques bugs de la première, et utilise un jeu de paramètres beaucoup plus simple à régler, et plus intuitif (bon c'est pas encore tout automatique, mais on arrive à quelque chose de mieux plus rapidement, même avec les paramètres par défaut). J'ai essayé d'optimiser un peu, et il me semble aussi que c'est plus rapide.
Une petite interface de visualisation du résultat a également été faite, afin de permettre de comparer globalement et localement l'image originale et l'image restaurée, et de relancer une itération de manière interactive si le lissage n'est pas considéré comme suffisant (avant, il fallait relancer tout l'algorithme depuis le début). Si on est satisfait du résultat, on peut le sauver dans un fichier.
Pour l'occasion, le site de GREYCstoration [1] a été refait presque à neuf (les images de démos sont encore ceux de la première version). Je compte écrire un tutorial illustré par des exemples qui explique précisément le rôle de chaque paramètre. Le choix des paramètres dépend bien entendu du type de bruit que l'on veut enlever dans l'image, et on peut penser à créer des profils pré-défini (comme cela a été commencé dans les plug-ins digikam [4]). J'espère vraiment que Victor Stinner pourra mettre à jour son plug-in pour Gimp [5] assez vite :)

Les sources sont disponibles dans la dernière archive en date de CImg (la 1.11beta) et des binaires précompilés pour PC Linux et Windows sont dispo directement sur le site [1].

Pour finir, je signale que je donne demain (jeudi 8 décembre) un séminaire Image [6] dans les locaux de l'ENSICAEN [7], à 14h qui expliquera en détail les équations qui se cachent derrière GREYCstoration. Ceux qui sont intéressés sont les bienvenus !

[1] http://www.greyc.ensicaen.fr/~dtschump/greycstoration/
[2] http://www.greyc.ensicaen.fr/EquipeImage/
[3] http://www.greyc.ensicaen.fr/
[4] http://extragear.kde.org/apps/digikamimageplugins/
[5] http://www.haypocalc.com/wiki/Restoration_with_GREYCstoratio(...)
[6] http://www.greyc.unicaen.fr/Image/seminaires/seminaire_8_12_(...)
[7] http://www.ensicaen.fr/
  • # ImageMagick

    Posté par  . Évalué à 1.

    Pourquoi faire un programme séparé? Pourquoi ne pas ajouter ces fonctionnalités à un outils déjà bien remplis et assez complet, comme par exemple ImageMagick? Ou en faire un greffon pour gimp?
    • [^] # Re: ImageMagick

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

      Pourquoi pas, c'est vrai.
      Mais j'avoue que concevoir l'algorithme et le programmer a déjà été un sacré boulot.
      L'intégrer dans Gimp ou ImageMagick demanderait du temps que je n'ai pas forcément. J'éspère en libérant les sources que justement quelqu'un pourra prendre un peu de temps pour le faire.
      C'est ce qu'à fait Victor Stinner (greffon Gimp pour la version 1.0 de greycstoration), et on ne peut que le remercier !
    • [^] # Re: ImageMagick

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

      pour des questions de licence ?
      Si il n'a pas envie ou ne peut pas mettre en GPL... rien ne l'y oblige. Or rentrer dans ces programmes necessiterait le passage a la GPL.
      • [^] # Re: ImageMagick

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

        Non ca c'est pas un problème, la licence CeCILL est compatible avec la GPL. On peut très bien redistribuer Greycstoration en GPL si on le désire.

        Extrait de CeCILL :

        "5.3.4 COMPATIBILITY WITH THE GNU GPL

        The Licensee can include a code that is subject to the provisions of one of the versions of the GNU GPL in the Modified or unmodified Software, and distribute that entire code under the terms of the same version of the GNU GPL.

        The Licensee can include the Modified or unmodified Software in a code that is subject to the provisions of one of the versions of the GNU GPL, and distribute that entire code under the terms of the same version of the GNU GPL.
        "

        David.
    • [^] # Re: ImageMagick

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

      c'est intégré à krita http://linuxfr.org/~JRM/17507.html et à gimp (cf plus haut)
      • [^] # Re: ImageMagick

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

        Pour citer David, l'algorithme est aussi disponible dans :
        Digikam : http://www.digikam.org/
        (merci Gilles Caulier !)

        Il faut laisser le temps aux développeurs de plugin de supporter la nouvelle version (j'ai besoin d'aide pour le plugin Gimp !).

        Haypo
  • # faites une news

    Posté par  . Évalué à 4.

    Ben oui, ça le mérite amplement. Pour moi,il n' y a même pas besoin de retoucher le texte....
  • # Moi je veux bien mais ...

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

    Alors ca l'air tres alléchant mais on nous propose un "espece" de binaire, on nous propose pas les sources à part, on nous fournit aucun manuel, l'option -h du fameux binaire ne rensigne en rien à part nous dire via une superbe fenetre d'avertissement type windows qu'il faut utiliser l'option -h, fenetre dans laquelle on ne peut pas cliquer.
    Bref le contenu semble interessant mais il est pas vraiment mis en valeur.
    • [^] # Re: Moi je veux bien mais ...

      Posté par  . Évalué à 5.

      Peut-être faudrait il lire complètement le journal: c'est marqué que les sources sont disponibles dans la dernière archive en date de CImg (la 1.11beta)
      En plus il nous dit qu'il va pondre un tutorial et en plus une conférence: si ça ce n'est pas de la mise en valeur.

      Pour le moment il relache la bestiole pour que Victor Stinner puisse mettre à jour rapidement son plugin pour Gimp (hein Victor stp)

      Donc on remercie bien fort le monsieur, on arrête de raler en se contentant de la première version qui marche d'ailleurs fort bien et on attend sagement tout le bonheur en barre à venir
      • [^] # Re: Moi je veux bien mais ...

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

        Peut-être faudrait il lire complètement le journal

        Je l'ai bien lu rassure toi j'aibien précisé :

        on nous propose pas les sources à part

        Le monsieur fait une page à part = projet à part = source à part, pour moi ca fonctionne comme ca ...

        En plus il nous dit qu'il va pondre un tutorial et en plus une conférence: si ça ce n'est pas de la mise en valeur.

        Je suis tres content qu'il fasse un tutorial, moi je te parle d'un manuel, d'un programme correctement documenté, d'une option -h qui fonctionne.

        Donc on remercie bien fort le monsieur, on arrête de raler en se contentant de la première version qui marche d'ailleurs fort bien et on attend sagement tout le bonheur en barre à venir

        Moi je vais pas le remercier pour un truc qui fonctionne pas, je suis désolé mais j'ai pas pu l'utiliser n'ayant pas de document me permettant de comprendre son fonctionnement ...
        Mais je promet que je ferais un journal pour le remercier quand tout ces problèmes seront réglé.
        • [^] # Re: Moi je veux bien mais ...

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

          Ton expérience m'intéresse pour écrire le tutorial.
          Ce qui serait sympa de ta part, c'est que tu m'envoies (par e-mail) tes premières impressions d'utilisateur 'lambda' pour voir quels points je devrais éclaircir en premier dans le tutorial.
          Je pensais attaquer directement le choix des options mais apparemment avoir la liste des options n'est déjà pas une mince affaire.

          Pour te répondre rapidement, pour restaurer une image tu dois utiliser l'option -restore nom_de_fichier, et si tu mets l'option '-h' EN PLUS, tu obtient normalement la liste des options disponibles et un descriptif rapide dans ton terminal. Chez moi par exemple :

          ./greycstoration -restore toto.ppm -h

          m'affiche :

          -restore = submarine.jpg : Restore the image specified after '-restore'
          -inpaint = NULL : Inpaint the image specified after '-inpaint'
          -resize = NULL : Resize the image specified after '-resize'
          -dt = 50 : Smoothing strength
          -p = 0.8 : Contour preservation
          -a = 0.8 : Smoothing anisotropy
          -alpha = 0.5 : Noise scale
          -sigma = 1 : Geometry regularity
          -iter = 1 : Number of iterations
          -scheme = true : Curvature-preserving scheme (0=false, 1=true)
          -ng = 0 : Add gaussian noise before denoising
          -nu = 0 : Add uniform noise before denoising
          -ns = 0 : Add Salt&Pepper noise before denoising
          -save = 0 : Iteration saving step
          -visu = true : Enable/Disable visualization
          -o = NULL : Output image
          -prenormalize = false : Pre-normalization in [0,255]
          -postnormalize = false : Post-normalization in [0,255]
          -dl = 0.8 : Spatial integration step
          -da = 45 : Angular integration step (in degrees)
          -prec = 2 : Precision of the gaussian function
          -interp = 0 : Interpolation type (0=Nearest-neighbor, 1=Linear,


          Ce n'est pas très détaillé, mais ca permet déjà de jouer un peu avec l'algorithme.
          En ce qui concerne les sources, je peux te donner ce lien :

          http://prdownloads.sourceforge.net/cimg/CImg-1-11beta.zip?do(...)

          qui te permettra de charger les sources du logiciel (fichier examples/greycstoration.cpp). Je prefère regrouper les sources avec CImg (http://cimg.sourceforge.net) plutôt que de les distribuer à part, avec les problèmes de mise à jour que ca peut poser.

          David.
          • [^] # Re: Moi je veux bien mais ...

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

            Salut, sache avant tout que tu n'etais pas particulièrement visé.

            Maintenant que tu nous as montré comment on pouvais lister les options :
            c'est vraiment pas intuitif, autant lister l'intégralité des options ou encore préciser seulement les "grandes" options (-restore -inpaint et -resize) et indiquer que l'on peut obtenir leurs options (plus ou moins) propres en donnant -h [-]restore.
            Mais devoir préciser le nom d'un image pour avoir de l'aide c'est anti-pratique.

            Donc du coup j'ai pu joué avec ce logiciel :) j'ai fait quelques test sur du redimenssionement, ca semble tres concluant bien que je n'y connaisse vraiment rien dans ce domaine.

            Au niveau du listing des options il manque aussi les encadrements de valeurs acceptés, par exemple -alpha je suppose que c'est entre 0 et 1 mais j'en suis pas sur.

            Autre remarque, le traitement terminé, j'ai appuyé par mégarde sur la touche A (je voulais quitter :) et la, grosse catastrophe, la charge cpu est grimpé d'un seul coup, essentiellement occupé par Xorg et mon pager (c'est reproductible).

            Bref comme le dit si bien Victor STINNER juste en dessous, merci beaucoup de "donner" cet algorithme au monde du libre.

            Je me tiens à ta disposition tu peux m'envoyer l'adresse du/le tutorial à jaroug AT dlfp.org la redirection étant activé.

            PS: à tout les rageux qui ont moinssé copieusement mes précédents commentaires parce qu'ils n'allaient pas dans le bon sens, allez vous mouchez et prendre votre biberon.
  • # Merci, et besoin d'aide pour le plugin Gimp

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

    Déjà, merci beaucoup de "donner" cet algorithme au monde du libre, car à ce que j'en ai lu/compris : il vaut son pesant d'or ! C'est-à-dire qu'il est au moins aussi bon que les concurrents payants (propriétaires) voir meilleur.

    Une simplification des paramètres est très appréciables, car il fallait beaucoup d'essai-erreur pour arriver un résultat optimum.

    Par contre, j'ai plusieurs projets sur le feu, comme essayer de suivre un peu mes cours et finir mes projets pour mon école :-) Alors je peux pas donner de date pour le plugin, mais ça sera pas avant l'année prochaine (fin décembre quoi :-)).

    Un coup de pouce serait appréciable. D'ailleurs, j'ai déjà reçu plusieurs contributions : patch pour éviter de gaspiller du temps à mettre à jour la barre de progression dans Gimp, patch pour éviter de manger tout le CPU (utilise nice), patch pour utiliser les autotools, traduction en russe, etc. D'ailleurs un ebuild a été proposé :
    https://bugs.gentoo.org/show_bug.cgi?id=114577

    En tout si je trouve du temps pour ça, je projette d'utiliser la dernière version de l'algo et d'en supporter toutes les fonctionnalités (le redimensionnement est très intéressant en particulier).

    Haypo
    • [^] # Re: Merci, et besoin d'aide pour le plugin Gimp

      Posté par  . Évalué à 2.

      Pour l'adaptation du plugin à la nouvelle version, je peux peut-être m'en occuper. Je vais être offline pour qlqs jours là, donc j'emmène tout ce qu'il faut avec moi, et puis je verrai bien si j'ai le temps de le faire (et si j'y arrive, évidemment). Je te redirai ce qu'il en est en fin de semaine prochaine du coup.
  • # ?

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

    Cela fera-t-il évoluer la version de Cimg qui en est à la 1.1 je crois ?
    Puisque Greycstoration fait partie du packaging Cimg...
    • [^] # Re: ?

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

      Oui oui, en fait j'ai déjà intégré la nouvelle version de Greycstoration dans CImg 1.1.1beta.
      CImg suit un cycle de développement tout à fait continu. Quand j'ai fini une release, je commence la prochaine, et elle est dispo sur le CVS tout de suite (et parfois aussi en archive). Ca a été le cas avec la 1.1.1beta, qui corrige déjà quelques bugs de la 1.1.0.
      Greycstoration en lui-même ne va pas faire sortir une nouvelle release de CImg tout de suite, car en fait les releases sortent après un laps de temps suffisamment long entres elles (i.e un nombre significatifs d'améliorations dans CImg).
      C'est pour cela aussi que j'ai voulu faire ce journal, car à mon avis, l'amélioration sur Greycstoration seul est conséquente, même si le coeur de CImg n'a pas fondamentalement changé.
  • # optimisations

    Posté par  . Évalué à 1.

    Dans l'ensemble, les algos sont quand meme assez longs.

    15sec en moyenne par image, ca fait long, pour ameliorer sa phototeque de telephone portable..

    Tu pense que tes algos peuvent etre bien optimises, avec mmx/altivec/SIMD?
    • [^] # Re: optimisations

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

      Pour le moment c'est écrit en C++, je suppose qu'une bonne optimisation en assembleur de la boucle principale pourrait arranger les choses. SI quelqu'un est volontaire...

Suivre le flux des commentaires

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