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
# Bravo !
Posté par dawar (site web personnel) . Évalué à 3.
[^] # Re: Bravo !
Posté par David Tschumperlé (site web personnel) . Évalué à 7.
je suis épaté. Félicitations, et vivre le logiciel libre !
David.
[^] # Re: Bravo !
Posté par gaston1024 . Évalué à 1.
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 (site web personnel) . Évalué à 2.
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 gaston1024 . Évalué à 2.
inutilisez-moi...
# et ca t'interesserait pas de faire un plugin pour...
Posté par djibb (site web personnel) . Évalué à 5.
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 (site web personnel) . Évalué à 3.
[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]
[^] # Re: re
Posté par Victor STINNER (site web personnel) . Évalué à 6.
Haypo
[^] # Re: re
Posté par Sylvain (site web personnel) . Évalué à 3.
[^] # Re: re
Posté par Bruce Le Nain (site web personnel) . Évalué à 2.
tu trouveras ton bonheur
# C'est beaucoup plus facile à paramétrer
Posté par Victor STINNER (site web personnel) . Évalué à 7.
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 . Évalué à 2.
(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 (site web personnel) . Évalué à 6.
\_o<
[^] # Re: C'est beaucoup plus facile à paramétrer
Posté par cosmocat . Évalué à 2.
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 . Évalué à 4.
[^] # Re: Licence
Posté par Victor STINNER (site web personnel) . Évalué à 2.
- 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é (site web personnel) . Évalué à 4.
David.
[^] # Re: Licence
Posté par mammique . Évalué à 2.
# effet video
Posté par Eric Boulat . Évalué à 1.
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 (site web personnel) . Évalué à 2.
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 (site web personnel) . Évalué à 1.
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é (site web personnel) . Évalué à 1.
qui pourrait optimiser la chose. Je vais voir ce que je peux faire.
David.
[^] # Re: effet video
Posté par Victor STINNER (site web personnel) . Évalué à 2.
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 (site web personnel) . Évalué à 1.
- 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 (site web personnel) . Évalué à 1.
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 (site web personnel) . Évalué à 2.
Haypo
# APT
Posté par mammique . Évalué à 6.
http://garbure.org/garbure/?el=SbApt_repository(...)
apt-get update
apt-get install gimp-greystoration
[^] # Re: APT
Posté par Sytoka Modon (site web personnel) . Évalué à 1.
[^] # Re: APT
Posté par mammique . Évalué à 2.
http://cvs.cinelerra.org/packages.html(...)
[^] # Re: APT
Posté par mammique . Évalué à 2.
[^] # apt-get source
Posté par Tobu . Évalué à 2.
apt-get source marchera automatiquement après.
[^] # Re: apt-get source
Posté par mammique . Évalué à 2.
[^] # Re: apt-get source
Posté par aurelj . Évalué à 2.
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 . Évalué à 3.
[^] # Re: Tite question
Posté par Victor STINNER (site web personnel) . Évalué à 2.
Haypo
# Package debian
Posté par Florent Bayle (site web personnel) . Évalué à 1.
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 (site web personnel) . Évalué à 5.
* 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 . Évalué à 1.
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 . Évalué à 4.
apt-get update
apt-get install gimp-greystoration
# Comparatif avec Noise Ninja et Denoise Deluxe
Posté par Victor STINNER (site web personnel) . Évalué à 2.
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
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.