Journal : Greffon Gimp GREYCstoration

Posté par Victor STINNER (page perso, ) le 11 mars 2005
0
Pour rendre l'algorithme GREYCstoration de David Tschumperlé accessible à tous, j'ai écrit un greffon Gimp qui l'utilise. C'est une version alpha, seul la fonction de restauration est utilisable (reste l'inpainting, le redimensionnement d'image et la visualisation de flux).

Pour l'utiliser, il vous faut le compiler à la main. Pour ceci, il vous faut : Gimp 2.2.x, g++, entêtes de la librairie gimp, GTK 2.x (2.6 ?) et les entêtes de développement de GTK. En langage Debian, cela donne :
g++ libgimp2.0 libgimp2.0-dev libgtk2.0-dev libgtk2.0-0

Maintenant, téléchargez les sources :
http://www.haypocalc.com/tmp/greystoration_gimp-0.1.tar.gz(...)

Un petit "make install" (pas besoin de passer root), et on lance Gimp. Le greffon est maintenant accessible via le menu Filtres > Misc > GREYCstoration, mais uniquement pour les images RBG (24 ou 32 bpp).

Exemples :
- http://www.greyc.ensicaen.fr/~dtschump/greycstoration/demo.html(...)
- http://www.girouette-stinner.com/castor/restore.html(...)

Liens :
- CImg : http://cimg.sourceforge.net/(...) (la librairie de traitement d'image)
- GREYCstoration : http://www.greyc.ensicaen.fr/~dtschump/greycstoration/(...)

Haypo

> Lire le journal (40 commentaires, moyenne: 2,7).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Bravo !

Posté par dawar (page perso, ) le 11/03/2005 à 16:38. (lien). Évalué à 3.

Rien a dire de plus, sinon que je vais surement tester ce weekend :)

  • [^]Re: Bravo !

    Posté par David Tschumperlé (page perso, ) le 11/03/2005 à 17:07. (lien). Évalué à 7.

    Effectivement, ca fait plaisir de voir un plug-in aussi rapidement,
    je suis épaté. Félicitations, et vivre le logiciel libre !

    David.

  • [^]Re: Bravo !

    Posté par Sylvain Picard () le 12/03/2005 à 13:11. (lien). Évalué à 1.

    vraiment, félicitations à tous les deux... c'est épatant et très utilisable.
    Victor, vivement les versions suivantes gérant les autres fonctions.

    Juste une petite chose pour le greffon, j'ai essayé avec une image, annulé, rogné mon image et de nouveau lancé le greffon. L'aperçu m'affiche alors l'image à la taille originale (avant rognage) : je dois sauver et réouvrir à nouveau l'image pour rafraichir l'aperçu...

    Bon, c'est quand même pas trop génant.

    Merci et bon courage pour la suite...

    • [^]Re: Bravo !

      Posté par Victor STINNER (page perso, ) le 12/03/2005 à 14:20. (lien). Évalué à 2.

      Juste une petite chose pour le greffon, j'ai essayé avec une image, annulé, rogné mon image et de nouveau lancé le greffon. L'aperçu m'affiche alors l'image à la taille originale (avant rognage) : je dois sauver et réouvrir à nouveau l'image pour rafraichir l'aperçu...

      Hum ... Ne serait-ce pas plutôt un bug de Gimp ? J'ai tenté ta manip, mais j'ai toujours obtenu ce que je voulais. J'ai la version 2.2.4, et toi ?

      @+ Haypo

      • [^]Re: Bravo !

        Posté par Sylvain Picard () le 12/03/2005 à 14:53. (lien). Évalué à 2.

        ok... erreur de ma part... j'ai cliqué sur redimensionner au lieu de découper à l'aide de l'outil de découpage...
        inutilisez-moi...

et ca t'interesserait pas de faire un plugin pour...

Posté par djibb (Jabber id, page perso, ) le 11/03/2005 à 17:23. (lien). Évalué à 5.

Une transformation avec des ondelettes ?
du style : 7 niveaux d'ondelettes (fines a grossière) pour le renforcement d'image... ?
Ceci serait TRES utilise pour les astronomes amateurs sous linux.
exemple de logiciels : iris ( http://www.Astrosurf.com/buil/iris/iris.htm(...) ) ou registax

re

Posté par Sylvain (Jabber id, page perso, ) le 11/03/2005 à 18:38. (lien). Évalué à 3.

J'ai les dependances mais ca compile pas sur mdk 10.1 off : /

[code]
[tsubasa@mdk101 greystoration_gimp]$ make install
Compile image.o
In file included from image.cpp:1:
image.h:23: error: ISO C++ forbids declaration of `GimpPreview' with no type
image.h:23: error: expected `;' before '*' token
image.h:28: error: `GimpPreview' has not been declared
image.h:28: error: ISO C++ forbids declaration of `preview' with no type
image.cpp:12: error: `GimpPreview' has not been declared
image.cpp:13: error: ISO C++ forbids declaration of `ppreview' with no type
image.cpp: In member function `void Image::init(GimpDrawable*, int*)':
image.cpp:15: error: `preview' undeclared (first use this function)
image.cpp:15: error: (Each undeclared identifier is reported only once for each function it appears in.)
image.cpp:18: error: `gimp_preview_get_position' undeclared (first use this function)
image.cpp:19: error: `gimp_preview_get_size' undeclared (first use this function)
make: *** [image.o] Erreur 1
[/code]

C'est beaucoup plus facile à paramétrer

Posté par Victor STINNER (page perso, ) le 11/03/2005 à 18:48. (lien). Évalué à 7.

Avec la zone de prévisualisation et les zones de saisies, on paramètre l'outil bien plus facilement ! J'ai réussi à restaurer une image très abimée, voyez l'image de bébé sur :
http://www.girouette-stinner.com/castor/restore.html(...)

Le détail de l'oeil montre que l'algo excelle lorsqu'il trouve des courbes. Par contre, pour les aplats de couleurs, on voit des "tourbillons" qui apparaissent. Il faut rapprocher p1 de p2 pour limiter l'effet.

Haypo

  • [^]Re: C'est beaucoup plus facile à paramétrer

    Posté par gnujsa () le 11/03/2005 à 20:43. (lien). Évalué à 2.

    Cette image est la même que celle de du tutoriel d' Eric R. Jeschke: « Reducing CCD Noise with The GIMP » http://www.gimpguru.org/Tutorials/ReducingCCDNoise/(...)
    (excellent site pour les gimpeurs)

    Au premier coup d'oeil, les résultats avec greystoration ont l'air bien meilleurs (image plus lisse, moins bruitée) que la meilleurs des techniques présentées dans le tutoriel (smart sharpening)

    Merci Victor STINNER pour ce plugin.

    • [^]Re: C'est beaucoup plus facile à paramétrer

      Posté par finss (page perso, ) le 11/03/2005 à 22:05. (lien). Évalué à 6.

      Et merci David Tschumperlé pour l'algo...

    • [^]Re: C'est beaucoup plus facile à paramétrer

      Posté par cosmocat () le 12/03/2005 à 01:33. (lien). Évalué à 2.

      >> Cette image est la même que celle de du tutoriel d' Eric R. Jeschke

      Et il le sait ce pauvre enfant que vous vous servez de lui comme cobaye??

      ...Désolés!

      Futur plugin de première importance dans the Gimp??

Licence

Posté par mammique (Jabber id, page perso, ) le 12/03/2005 à 02:35. (lien). Évalué à 4.

C'est sous quelle licence ?

  • [^]Re: Licence

    Posté par Victor STINNER (page perso, ) le 12/03/2005 à 11:32. (lien). Évalué à 2.

    Il y a trois éléments à considérer :

    - CImg : la librairie graphique. Elle est initialement sous licence CeCILL, mais David Tscumperlé a accepté de la distribuer sous licence GNU GPL. Voir le fichier copyright dans le paquet Debian :
    http://packages.debian.org/changelogs/pool/main/c/cimg/cimg_1.0.7-1(...)

    - GREYCstoration : le coeur du plugin. Il est sous licence CeCILL. Je pense que David T. sera d'accord pour le distribuer sous licence GNU GPL. D'ailleurs, les deux licences ne sont pas compatibles par hasard ?

    - Mon plugin : ... euh ... GNU GPL. Elle est sympa cette licence :o) J'inclurai la licence dans la prochaine version.

    Total : 100% GNU GPL normalement.

    @+ Haypo

    • [^]Re: Licence

      Posté par David Tschumperlé (page perso, ) le 12/03/2005 à 11:48. (lien). Évalué à 4.

      A noter que ce n'est pas moi qui accepte specialement de distribuer en licence GPL (même si je suis d'accord :) ) , mais c'est un des points intéressant de la licence CeCiLL, qui permet de redistribuer tout code CeCill + GPL en GPL.

      David.

      • [^]Re: Licence

        Posté par mammique (Jabber id, page perso, ) le 12/03/2005 à 12:54. (lien). Évalué à 2.

        Ha oui je crois que c'est bon, mais j'avais parlé de la CeCiLL avec David Turner qui prépare la GPL 3.0, il disait que le problème venait du fait CeCiLL ne précisait pas avec quelle version de la GPL elle était compatible.

effet video

Posté par Eric Boulat () le 12/03/2005 à 11:01. (lien). Évalué à 1.

Je ne connaissais pas cet effet, mais je me demandais si cela serait une solution pour restaurer une vidéo dégradée ?

Le top serait d'avoir cet algorithme cablé dans une carte vidéo pour obtenir une visualisation améliorée.

En tout cas, l'effet cartoon est trés intéressant !

  • [^]Re: effet video

    Posté par Victor STINNER (page perso, ) le 12/03/2005 à 11:26. (lien). Évalué à 2.

    Si tu essayes le filtre, tu verras que pour une image de 400x400 pixels (RVB), le calcul prend environ une minute (sur un Athlon à 2 GHz) ...

    Bon, le temps de calcul dépend entièrement des paramètres (et donc du bruit à éliminer). Et puis, à force, on va peut-être réussir à l'optimiser cette algo ;-) Pour info, y'a un paquet de calculs qui sont faits, et tous sur des nombres flottants (float en C). Un bon benchmark pour un processeur donc ;-)

    Je ne pense pas que l'algo soit utilisable aujourd'hui sur de la vidéo (résolution supérieure et un paquet d'images à traiter). Par contre, j'avais lu un papier très intéressant sur la restauration de photo pour traiter le cas du désentrelassement. Bon là le site de GREYCstoration ne semble pas accessible, donc c'est pas gagné pour retrouver le lien.

    Haypo

    • [^]Re: effet video

      Posté par Edouard Gomez (page perso, ) le 15/03/2005 à 00:12. (lien). Évalué à 1.

      >Et puis, à force, on va peut-être réussir à l'optimiser cette algo ;-)

      Bon j'ai regardé ou perdait son temps le processeur grâce à oprofile... le résultat est plutot simple: 96.5933% des instructions retirées le sont dans GREYCstoration::compute_LIC_back_forward(int, int);

      La moindre optim la dedans devrait faire des miracles, je regarderai de plus près si j'ai du temps libre... d'autant plus que mon profilage est partiel, j'aurais dû utiliser CPU_CLK_UNHALTED pour avoir une estimation des cycles passés dans les fonctions.

      Aux amateurs d'optim, le profile et les sources annotées sont sur:
      http://ed.gomez.free.fr/vrac/GREYCstoration/(...)

      Mais biensûr, en bon optimiseur que vous êtes, oprofile n'a plus aucun secret pour vous et donc mon profilage partiel ne vous servira a rien.

      • [^]Re: effet video

        Posté par David Tschumperlé (page perso, ) le 15/03/2005 à 09:26. (lien). Évalué à 1.

        Effectivement, ca me fait penser qu'il y a peut etre une solution pas trop chere en memoire,
        qui pourrait optimiser la chose. Je vais voir ce que je peux faire.

        David.

        • [^]Re: effet video

          Posté par Victor STINNER (page perso, ) le 15/03/2005 à 14:34. (lien). Évalué à 2.

          Hey, j'ai trouvé une solution (temporaire) pour largement accélérer les calculs : prendre un dl "grand".

          dl=0.8 : calul=25 secondes (meilleur rendu)
          dl=1.0 : calcul=21 secondes
          dl=1.5 : calcul=14 secondes (légères nuances)
          dl=3.0 : calcul=7 secondes (on voit que la qualité baisse)
          dl=5.0 : calcul=5 secondes (le filtre ne fait plus que 50% du boulot)

          Le truc intéressant est que la différence entre les images générées pour dl=0.8 (par défaut) et dl=1.5 est peu perceptible. Pour moi en tout cas (j'suis un peu daltonien ...). Après en regardant en détail, on voit qu'il y a bien des différences. Prendre les deux images, coller les deux calques dans la même image, choisir le mode "soustraction" pour le calque supérieur, aplatir l'image, et rehausser le contraste.

          Autre paramètre accélérant le calcul : linear=false.

          linear=true : calcul=25 secondes
          linear=false : calcul=20 secondes

          On peut imaginer différents "profils de qualité". Exemple : "qualité photo" (dl=0.8, linear=true), "brouillon" (dl=3.0, linear=false), et différentes nuances. Ceci permettrait d'avoir un rendu plus rapide de l'effet et de configurer plus rapidement les différents paramètres.

          Allez, un dernier paramètre pour la route : da.

          (Avec linear=false, dl=1.5)
          da=45 : calcul=10.6 secondes
          da=90 : calcul=5.6 secondes (l'image est différente, mais je sais pas dire en quoi ... :-) ... mieux contrastée ? des contours différents on va dire)
          da=180 : calcul=3.2 secondes (il y a beaucoup d'artefacts)

          Beaucoup de bonnes choses pour accélerer le calcul, ou au moins la fenêtre d'aperçu du plugin !

          Conclusion :
          - Avant (a) : 26 secondes (paramètres par défaut)
          - Après (b) : 6 secondes (dl=1.5, linear=false, da=90)
          - Après (c) : 8 secondes (dl=1.5, da=90)

          La différence entre (a) et (b) est largement visible. Par contre, (a) et (c) sont assez ressemblant. Euh, je veux dire que c'est un aperçu de très bonne qualité ;-)

          PS: Je viens de voir que dans mon plugin, le paramètre "dl" est en fait nommé "di".
          Haypo

          • [^]Re: effet video

            Posté par Edouard Gomez (page perso, ) le 15/03/2005 à 17:02. (lien). Évalué à 1.

            Ca ne regle malheureusement pas le probleme de fond qui est double:
            - Pour chaque pixel, on integre sur une assez grande zone autour du pixel courant, ce qui bouffe une bande passante mémoire énorme.
            - On traite l'image pixel par pixel, diminuer le ratio CLOCKS/Pixels.

            Les solutions imaginables pour le premier point:
            - Etre sur de bien aligner le tout, mine de rien, des lectures de memoire alignées c'est plus rapide pour le CPU/Controleur memoire.
            - Penser à utiliser au maximum le cache CPU en travaillant sur des données le plus localisées possible et si possible se servir autant de fois que possible de chaque acces afin de ne pas avoir a y revenir plus tard.
            - Voir si certains calculs pourraient utiliser moins d'acces memoire, selon que l'algo s'y prete ou pas, envisager la reutilisation de resultats precedents couvrant un grand nombre d'acces memoire.

            Les solutions imaginables pour le second point:
            - Regarder de plus pres l'utilisation de tout opérateur couteux (/ et *) et donc minimiser petit a petit les nombre de cycles necessaires par pixel.
            - Il faut voir si on ne peut pas prévoir une vectorisation de la transformation pour pouvoir optimiser le tout en utilisant les instructions SIMD SSE d'abord, puis si on est vraiment très courageux, passer en SIMD iSSE (mais attention, il faut bien prévoir la precision de calcul en virgule fixe sous peine de tuer l'intégration ç cause de l'accumulation d'erreurs d'approximations).

            Voila, c'est toujours les memes concepts d'optim qu'on doit mettre a l'oeuvre. La plupart du temps, chaque technique d'optim est limité par l'algo qui se prete plus ou moins au jeu.

            A savoir que le mieux reste d'optimiser l'algo avant de penser a partir dans les delires de reduction d'acces memoire et de vectorisation.

          • [^]Re: effet video

            Posté par Leroy Frederic (page perso, ) le 20/03/2005 à 14:07. (lien). Évalué à 1.

            coller les deux calques dans la même image, choisir le mode "soustraction" pour le calque supérieur, aplatir l'image, et rehausser le contraste.

            Houlà malheureux ! "Soustraction" fait une soustraction saturée des 2 calques !
            Si c1>c2 alors
            c1-c2= c1-c2
            c2-c1= 0

            Il faut utiliser "difference" pour ce que tu veux faire, ça donne la distance entre les 2 couleurs :
            Si c1>c2 alors
            c1-c2= c1-c2
            c2-c1= c2-c1

            • [^]Re: effet video

              Posté par Victor STINNER (page perso, ) le 21/03/2005 à 22:49. (lien). Évalué à 2.

              Hum, j'ai peut-être utilisé ça, je ne sais plus (j'ai écrit le commentaire après avoir bossé sous Gimp). Je trouve les termes mal choisis.

              Haypo

APT

Posté par mammique (Jabber id, page perso, ) le 12/03/2005 à 13:45. (lien). Évalué à 6.

Ma petite pierre à l'édifice :

http://garbure.org/garbure/?el=SbApt_repository(...)

apt-get update
apt-get install gimp-greystoration

  • [^]Re: APT

    Posté par Sytoka Modon (page perso, ) le 12/03/2005 à 17:05. (lien). Évalué à 1.

    Rien a voir mais juste une question : pourquoi il n'y a pas le paquetage cinelerra pour x86 sous garbure ?

    • [^]Re: APT

      Posté par mammique (Jabber id, page perso, ) le 12/03/2005 à 17:58. (lien). Évalué à 2.

      Parce-que ce n'est pas moi qui m'en occupe :-) Des raisons historiques en gros, j'ai fait le portage de cinelerra sur PowerPC (gestion big/little-endian client/serveur du toolkit guicast), et du coup j'ai été chargé des paquetages PowerPC.

      http://cvs.cinelerra.org/packages.html(...)

      • [^]Re: APT

        Posté par mammique (Jabber id, page perso, ) le 12/03/2005 à 18:16. (lien). Évalué à 2.

        Appart ça j'invite tout ceux qui ont une mauvaise image de Cinelerra d'essayer la version 1.2.2, avec le theme BlueDot (sinon c le vomi assuré), vous changerez surement d'avis.

  • [^]apt-get source

    Posté par Tobu () le 13/03/2005 à 00:58. (lien). Évalué à 2.

    Tu peux renommer http://garbure.org/debian/./pool/main/g/gimp-greystoration_0.1.tar.(...) en http://garbure.org/debian/./pool/main/g/gimp-greystoration_0.1.orig(...) ?
    apt-get source marchera automatiquement après.

    • [^]Re: apt-get source

      Posté par mammique (Jabber id, page perso, ) le 13/03/2005 à 02:24. (lien). Évalué à 2.

      C'est demandé si gentiment !

      • [^]Re: apt-get source

        Posté par aurelj () le 14/03/2005 à 16:25. (lien). Évalué à 2.

        C'est sympa de penser au debian non i386 :-)
        Merci pour ce repository source, la compile et l'install de gimp-greystoration se passe sans soucis sur amd64.

        Juste un petit détail pour améliorer encore un poil le package, il faudrait au minimum ajouter libgimp2.0-dev dans les Build-Depends.

Tite question

Posté par plagiats () le 12/03/2005 à 14:27. (lien). Évalué à 3.

Puisque c'est GPL, est-ce que ce greffon sera livré par défaut dans les versions futures de The Gimp ?

--
La mort est un phénomène naturel qui se produit par l'avalement répété de petites quantités de salive au cours d'une grande période de temps. - George Carlin
  • [^]Re: Tite question

    Posté par Victor STINNER (page perso, ) le 12/03/2005 à 16:03. (lien). Évalué à 2.

    On m'a dit sur IRC qu'ils ne veulent pas greffon en C++. Je comprend, ça rajoute pas mal de dépendences pour compiler Gimp ça ! Enfin, affaire à suivre.

    Haypo

Package debian

Posté par Florent Bayle (page perso, ) le 12/03/2005 à 20:19. (lien). Évalué à 1.

Bon, j'avais pas vu qu'il y avait déjà un package debian, j'en ai donc créé un aussi :

Dans /etc/apt/sources.list :
deb http://debian.sarcelle.net/ unstable main
Et puis :
apt-get update
apt-get install gimp-greystoration

Je ne pensais pas que ce plugin aurait tant de succès

Posté par Victor STINNER (page perso, ) le 13/03/2005 à 16:47. (lien). Évalué à 5.

Pour la peine, je l'ai un peu retravaillé. Modifs :
* Version 0.1.1
* Dialog reorganized with better parameters names.
* Fix plugin entry in Gimp menu (Greycstoration -> GREYCstoration).
* Don't use CImg interface (keyboard/mouse) which remove X11 and pthread dependencies (or Win32 dependencies)
* Change default values (p1=0.1 and sigma=1.4)

http://www.haypocalc.com/tmp/greystoration_gimp-0.1-1.tar.gz(...)

La plus grosse amélioration, c'est le dialogue mieux organisé, et avec des noms de paramètres plus clairs.

Victor

  • [^]Re: Je ne pensais pas que ce plugin aurait tant de succès

    Posté par Cyberdivad (Jabber id, page perso, ) le 13/03/2005 à 21:03. (lien). Évalué à 1.

    Tu parles qu'il a du succès ce plug-in :-)

    Par contre, je me permet de corriger une petite erreur dans le lien, ca évitera un détour par la case recherche aux autres :

    http://www.haypocalc.com/tmp/greystoration_gimp-0.1.1.tar.gz(...)

    Merci pour ce travail sur le plugin et merci à David Tschumperlé pour son algo et les sources qu'il a bien voulu distribuer sous licence CECILL.

    • [^]Re: Je ne pensais pas que ce plugin aurait tant de succès

      Posté par mammique (Jabber id, page perso, ) le 14/03/2005 à 00:51. (lien). Évalué à 4.

      C'est mit à jour, gimp-greystoration_0.1.1-1_i386.deb.

      apt-get update
      apt-get install gimp-greystoration

Comparatif avec Noise Ninja et Denoise Deluxe

Posté par Victor STINNER (page perso, ) le 15/03/2005 à 16:43. (lien). Évalué à 2.

Salut,

J'ai essayé de restaurer les photos données en exemple sur les sites webs des plugins Photoshop Noise Ninja (commercial) et Denoise Deluxe. Voici les résultats :
http://www.girouette-stinner.com/castor/compare.html(...)

GREYCstoration est bien meilleur je trouve.

En passant, je me demande où les auteurs de Noise Ninja ont trouvé une image aussi bruitée :-)

@+, Haypo

Revenir en haut de page