Attention, la version 1.12 de CImg ne contient pas la dernière version de GREYCstoration. Il faut prendre la version du CVS pour avoir GREYCstoration 2.3 !
En passant, je lance un appel à volontaires : j'aimerais compiler GREYCstoration pour MacOSX car j'ai eu quelques demandes pour ce système.
Malheureusement, je n'ai pas accès à de telles machines, et les deux Mac de la ferme de compilation de Sourceforge ne sont pas accessibles (depuis un petit moment d'ailleurs).
Ce n'est vraiment pas très difficile à faire, ca prend au pire deux minutes à compiler.
Si quelqu'un est intéressé pour le faire (ou l'a déjà fait), il peut me contacter directement sur mon mail du GREYC. Ca serait sympa d'avoir GREYCstoration pour Mac.
Préréquis : Avoir installé X11 pour MacOSX et avoir g++ >3.xx.
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...
Merci pour tes impressions, j'ai corrigé le bug dont tu m'as parlé. J'ai également rajouté quelques infos sur les bornes admissibles des paramètres.
C'est dispo maintenant en téléchargement.
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é.
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 :
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.
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.
"
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 !
Toutes ces bibliothèques ont leurs avantages et leurs inconvénients, leurs styles de programmation (qui plaira ou déplaira), leurs fonctionnalités, etc...
L'important c'est d'avoir le choix, et que l'on puisse utiliser l'une ou l'autre suivant l'occasion (ce qui est bien en traitement d'images, c'est que c'est généralement assez facile de programmer des passerelles entres les bibliothèques, puisque l'on manipule généralement que des tableaux 2D ou 3D de valeurs).
Oui j'imagine bien qu'en optimisant tout ca en assembleur, on pourrait peut-être gagner un facteur 10. Ca ne serait pas encore suffisant pour traiter des séquences d'images format TV en temps réel, mais dans un futur proche, pourquoi pas...
Tiens ca m'interesse l'article CImg sur Software 2.0,
mais impossible de le trouver en kiosque, je ne trouve que
le hors série.
Je me demande bien ce qu'ils peuvent dire dessus, si une ame
charitable veut bien me dire, ca serait sympa :)
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.
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.
GREYCstoration, c'est le nom que j'ai donné au nouvel algorithme de restauration d'images,
que j'ai développé au laboratoire GREYC (CNRS UMR 6072) de Caen.
C'est la suite logique de l'algo 'Tschumperle-Deriche' que j'avais développé à l'INRIA.
Il donne de bien meilleurs résultats, c'est en fait une variante améliorée de l'ancien : il rend les images
moins lisses et s'execute beaucoup plus rapidement. C'est cette vitesse d'exécution qui m'a
convaincu que ca pourrait avoir des applications autres qu'expérimentales (il est vrai que le précédent
était particulièrement lourd en temps de calculs).
Tu peux l'essayer en le téléchargeant sur la page [2] citée plus haut, pour voir la différence.
Je me répond à moi-même : Je pense même
qu'en appliquant à la lettre cette licence, n'importe qui
peut prendre le code de la lib, rajouter une ligne de commentaire
(qu'il licenciera en GPL), et redistribuer le tout en GPL...
Pour le problème de la visibilité de la licence à l'étranger,
il y a une traduction de la licence en anglais, qui est assez bien
faite, et la section 'compatibilité avec la GPL' devrait les rassurer.
J'ai proposé de faire ce plug-in comme projet
à des étudiants de l'Ensicaen, mais malheureusement
un peu tard, donc il n'a pas été choisi. Pour l'instant,
le projet est donc en stand-by.
Je compte libérer le code source une fois que l'article
correspondant aura été publié, je travaille dessus
actuellement (et activement).
Si le code source est libéré, j'espère
qu'il y aura des volontaires pour s'en occuper.
Je n'ai pas le temps de faire ce plug-in moi même,
j'ai d'autres activités (recherche) qui me prennent du
temps. Mais je ne perd pas espoir de le voir peut-être un jour
dans Gimp !
Dans le cas où le Logiciel, Modifié ou non, est intégré à un code soumis aux dispositions de la licence GPL, le Licencié est autorisé à redistribuer l’ensemble sous la licence GPL.
Dans le cas où le Logiciel Modifié intègre un code soumis aux dispositions de la licence GPL, le Licencié est autorisé à redistribuer le Logiciel Modifié sous la licence GPL."
[^] # Re: Version MacOS X
Posté par David Tschumperlé (site web personnel) . En réponse à la dépêche Sortie de GREYCstoration 2.3. Évalué à 2.
[^] # Re: Version MacOS X
Posté par David Tschumperlé (site web personnel) . En réponse à la dépêche Sortie de GREYCstoration 2.3. Évalué à 1.
Ou alors je ne comprend pas la suggestion.
# Version MacOS X
Posté par David Tschumperlé (site web personnel) . En réponse à la dépêche Sortie de GREYCstoration 2.3. Évalué à 10.
Malheureusement, je n'ai pas accès à de telles machines, et les deux Mac de la ferme de compilation de Sourceforge ne sont pas accessibles (depuis un petit moment d'ailleurs).
Ce n'est vraiment pas très difficile à faire, ca prend au pire deux minutes à compiler.
Si quelqu'un est intéressé pour le faire (ou l'a déjà fait), il peut me contacter directement sur mon mail du GREYC. Ca serait sympa d'avoir GREYCstoration pour Mac.
Préréquis : Avoir installé X11 pour MacOSX et avoir g++ >3.xx.
Merci d'avance !
[^] # Re: optimisations
Posté par David Tschumperlé (site web personnel) . En réponse au journal GREYCstoration 2.0. Évalué à 2.
[^] # Re: Moi je veux bien mais ...
Posté par David Tschumperlé (site web personnel) . En réponse au journal GREYCstoration 2.0. Évalué à 2.
C'est dispo maintenant en téléchargement.
[^] # Re: ?
Posté par David Tschumperlé (site web personnel) . En réponse au journal GREYCstoration 2.0. Évalué à 2.
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é.
[^] # Re: Moi je veux bien mais ...
Posté par David Tschumperlé (site web personnel) . En réponse au journal GREYCstoration 2.0. Évalué à 9.
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: ImageMagick
Posté par David Tschumperlé (site web personnel) . En réponse au journal GREYCstoration 2.0. Évalué à 3.
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 David Tschumperlé (site web personnel) . En réponse au journal GREYCstoration 2.0. Évalué à 10.
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: 404 su toutes les url www.greyc.ensicaen.fr/dtschump
Posté par David Tschumperlé (site web personnel) . En réponse au journal Sortie de CImg 1.1.0.. Évalué à 1.
David.
[^] # Re: itk
Posté par David Tschumperlé (site web personnel) . En réponse au journal Sortie de CImg 1.1.0.. Évalué à 7.
- PaintLib : http://www.paintlib.de/paintlib/
- Olena : http://www.lrde.epita.fr/cgi-bin/twiki/view/Olena/WebHome
- Devil : http://openil.sourceforge.net/
- FreeImage : http://freeimage.sourceforge.net/intro.html
- LTIlib : http://ltilib.sourceforge.net/doc/homepage/index.shtml
- Pandore : http://www.greyc.ensicaen.fr/EquipeImage/Pandore/
- VIGRA : http://kogs-www.informatik.uni-hamburg.de/%7Ekoethe/vigra/
...
Toutes ces bibliothèques ont leurs avantages et leurs inconvénients, leurs styles de programmation (qui plaira ou déplaira), leurs fonctionnalités, etc...
L'important c'est d'avoir le choix, et que l'on puisse utiliser l'une ou l'autre suivant l'occasion (ce qui est bien en traitement d'images, c'est que c'est généralement assez facile de programmer des passerelles entres les bibliothèques, puisque l'on manipule généralement que des tableaux 2D ou 3D de valeurs).
David.
[^] # Re: CImg/krita
Posté par David Tschumperlé (site web personnel) . En réponse au journal Sortie de CImg 1.1.0.. Évalué à 6.
[^] # Re: Ca n'a rien a voir mais...
Posté par David Tschumperlé (site web personnel) . En réponse au journal Economie d'énergie. Évalué à 1.
# Ca n'a rien a voir mais...
Posté par David Tschumperlé (site web personnel) . En réponse au journal Economie d'énergie. Évalué à 6.
"Microsoft, c'est de l'énergie et du bonheur en baRre",
suivit de :
"Economie d'énergie"
Très très fort !
[^] # Re: Recette rigolote
Posté par David Tschumperlé (site web personnel) . En réponse au journal J'ai découvert le micro-onde..... Évalué à 2.
en mode grill.
# CImg dans Software 2.0
Posté par David Tschumperlé (site web personnel) . En réponse à la dépêche Revue de Presse - Mars 2005. Évalué à 2.
mais impossible de le trouver en kiosque, je ne trouve que
le hors série.
Je me demande bien ce qu'ils peuvent dire dessus, si une ame
charitable veut bien me dire, ca serait sympa :)
David.
[^] # Re: effet video
Posté par David Tschumperlé (site web personnel) . En réponse au journal Greffon Gimp GREYCstoration. Évalué à 1.
qui pourrait optimiser la chose. Je vais voir ce que je peux faire.
David.
[^] # Re: Licence
Posté par David Tschumperlé (site web personnel) . En réponse au journal Greffon Gimp GREYCstoration. Évalué à 4.
David.
[^] # Re: Bravo !
Posté par David Tschumperlé (site web personnel) . En réponse au journal Greffon Gimp GREYCstoration. Évalué à 7.
je suis épaté. Félicitations, et vivre le logiciel libre !
David.
[^] # Re: pas vraiment simple
Posté par David Tschumperlé (site web personnel) . En réponse au journal Distance entre deux images.... Évalué à 1.
#include "CImg.h"
using namespace cimg_library;
int main(int argc,char **argv) {
const CImg<> img1("image1.png"), img2("image2.png");
const CImg<> diff = (img1-img2).get_abs();
const float erreur = diff.sum();
std::fprintf(stderr,"Erreur entre les deux images : %g\n",err);
return 0;
}
[^] # Re: Cimg, c'est génial !!!
Posté par David Tschumperlé (site web personnel) . En réponse au journal CImg1.0.8beta1 et Plugin GIMP ?. Évalué à 2.
que j'ai développé au laboratoire GREYC (CNRS UMR 6072) de Caen.
C'est la suite logique de l'algo 'Tschumperle-Deriche' que j'avais développé à l'INRIA.
Il donne de bien meilleurs résultats, c'est en fait une variante améliorée de l'ancien : il rend les images
moins lisses et s'execute beaucoup plus rapidement. C'est cette vitesse d'exécution qui m'a
convaincu que ca pourrait avoir des applications autres qu'expérimentales (il est vrai que le précédent
était particulièrement lourd en temps de calculs).
Tu peux l'essayer en le téléchargeant sur la page [2] citée plus haut, pour voir la différence.
# Licence CeCILL
Posté par David Tschumperlé (site web personnel) . En réponse au journal CImg1.0.8beta1 et Plugin GIMP ?. Évalué à 6.
[^] # Re: Double
Posté par David Tschumperlé (site web personnel) . En réponse au journal CImg Library 1.0.7 et licence CeCILL. Évalué à 2.
qu'en appliquant à la lettre cette licence, n'importe qui
peut prendre le code de la lib, rajouter une ligne de commentaire
(qu'il licenciera en GPL), et redistribuer le tout en GPL...
Pour le problème de la visibilité de la licence à l'étranger,
il y a une traduction de la licence en anglais, qui est assez bien
faite, et la section 'compatibilité avec la GPL' devrait les rassurer.
[^] # Re: Gimp
Posté par David Tschumperlé (site web personnel) . En réponse au journal CImg Library 1.0.7 et licence CeCILL. Évalué à 1.
à des étudiants de l'Ensicaen, mais malheureusement
un peu tard, donc il n'a pas été choisi. Pour l'instant,
le projet est donc en stand-by.
Je compte libérer le code source une fois que l'article
correspondant aura été publié, je travaille dessus
actuellement (et activement).
Si le code source est libéré, j'espère
qu'il y aura des volontaires pour s'en occuper.
Je n'ai pas le temps de faire ce plug-in moi même,
j'ai d'autres activités (recherche) qui me prennent du
temps. Mais je ne perd pas espoir de le voir peut-être un jour
dans Gimp !
[^] # Re: Double
Posté par David Tschumperlé (site web personnel) . En réponse au journal CImg Library 1.0.7 et licence CeCILL. Évalué à 1.
"5.3.4. COMPATIBILITE AVEC LA LICENCE GPL
Dans le cas où le Logiciel, Modifié ou non, est intégré à un code soumis aux dispositions de la licence GPL, le Licencié est autorisé à redistribuer l’ensemble sous la licence GPL.
Dans le cas où le Logiciel Modifié intègre un code soumis aux dispositions de la licence GPL, le Licencié est autorisé à redistribuer le Logiciel Modifié sous la licence GPL."
Je pense que ca répond à la question.