IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement d'images Discussion :

Correction de derive d'eclairage


Sujet :

Traitement d'images

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Points : 93
    Points
    93
    Par défaut Correction de derive d'eclairage
    Bonjour,

    J'ai une image du type de celle prise en piece jointe.
    J'ai sur cette image un effet de bande. J'aimerais uniformiser mon image pour eliminer cet effet. Je ne vois pas dans quelle direction partir.
    Quelqu'un connait il une methode qui permet de faire cela?
    Je ne peux pas identifier par une equation ma perte d'éclairage lors de la prise d'image car celle ci varie beaucoup trop en fonction de la matiere du support pris en photo. J'aimerais donc faire la correction sur l'image finale (celle de la piece jointe).
    Merci d'avance
    Images attachées Images attachées  

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Bonjour,

    personnellement, je projetterai l'image sur l'espace de couleur HSL puis je passerai un filtre passe-haut sur les composantes S et L.

    Nom : HSLhighpass.jpg
Affichages : 184
Taille : 86,3 Ko

    c'est pas parfait, mais c'est simple et rapide...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Points : 93
    Points
    93
    Par défaut
    effectivement, ca marche bien.
    Le problème, c'est que ca deteriore pas mal l'image et que j'aimerais garder au mieux la qualité de l'image d'origine.....

  4. #4
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    En fait, tout dépend de ce que tu veux "garder". Même si pour les yeux ça n'est pas spécialement beau, ça peut être acceptable pour un traitement ultérieur.

    Quel est le traitement ou l'application qui suit ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Points : 93
    Points
    93
    Par défaut
    c'est le rendu pour les yeux qui suit.
    En fait, je plaque cette image comme texture sur une forme dans laquelle on peut se deplacer. Il faut donc que je conserve au mieux la qualité de l'image mais que les transitions se voient le moins possibles....

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par mm2405 Voir le message
    effectivement, ca marche bien.
    Le problème, c'est que ca deteriore pas mal l'image et que j'aimerais garder au mieux la qualité de l'image d'origine.....
    Il faut dire aussi que faire un passe-haut sur une image JPEG ca fait ressortir les artefacs de la compression. Et puis, dans mon exemple, je n'ai pas spécialement tuné les parametres du filtre.

    Quels sont les details que tu voudrais garder ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Points : 93
    Points
    93
    Par défaut
    Mon image d'origine est en BMP. je l'ai passée en JPEG pour la mettre sur le forum. Les images peuvent etre tres differentes et je voudrais faire une correction un peu comme celle que l'on ferait avec une equation mais appliquée à cette image. Je veux conserver la majorité de détail puisque l'utilisateur final devra analyser ce qu il voit.

    Je vais essayer de m'expliquer. Avant, je faisais une correction d'éclairage sur les images "bande" avant de les recoller ensemble. Le probleme, c'est que si ma correction etait fausse, le recollement l'était aussi. en fait, si mon equation etait mauvaise...
    Je fais donc maintenant un recollement par RDF qui ne tient donc pas compte de la couleur ni de la derive d'éclairage.

    J'ai la méthode :

    On a une équation et une valeur de luminance que l'on souhaite.
    On calcule la valeur theorique du pixel par rapport à cette equation.
    on cherche la différence entre la valeur theorique et la luminance souhaitée.
    On applique cette différence à la valeur reelle du pixel.

    Ca corrige bien les bandes mais on n'a pas forcement la meme valeur à l'endroit du recollement donc on voit quand meme cet effet de bande. J'essaie donc de corriger sur l'image complete c'est a dire une fois les bandes assemblées.

    J'espère que c'est clair mais je crois pas......

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par mm2405 Voir le message
    Ca corrige bien les bandes mais on n'a pas forcement la meme valeur à l'endroit du recollement donc on voit quand meme cet effet de bande. J'essaie donc de corriger sur l'image complete c'est a dire une fois les bandes assemblées.
    On a moins de possibilité de filtrage sur l'image complete, car on perd les informations propres aux bandes (hauteur, dérive continue, ...). Mais c'est peut etre suffisant.

    Voici l'image filtrée "proprement" par image J, sur les canaux S et L, en utilisant un filtre FFT passe-haut vertical.

    Nom : testeclairageFFT.jpg
Affichages : 176
Taille : 35,8 Ko

    Est-ce suffisant ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Points : 93
    Points
    93
    Par défaut
    Ah oui, ca c'est génial!!! C'est juste ce que je cherchais.
    Tu l'as passée en HSL et tu as passé un filtre FFT passe haut sur les deux composantes S et L, c'est ca?
    Mais est ce que ce n'est pas ce que tu avais fait la premiere fois??

    Je connais l'espace HSL mais je ne l'ai jamais vraiment utilisé. Je vais cherché deja à convertir mon image. Ensuite, je m'attaquerai à la FFT!!!!

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Points : 93
    Points
    93
    Par défaut
    Bon, alors, j'ai passé l'image en HSL.
    Avec la bibliotheque fftw, j'ai fait la fft de S et L.
    Je récupère alors la partie réelle et imaginaire de la FFT de S et L.
    Juste la, tout roule....
    Pour le filtre passe haut, je suis partie sur un gradient. C'est la que ca va nettement moins bien
    Je passe mon gradient sur quoi?
    Sur le module de S et L?????
    si oui, comment je fait la FFT inverse si je n'ai que le module??
    je suis un peu perdue.
    J'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    float *H,*S,*L,*MS,*ML;
    	float *resortieS,*resortieL;
    	float *imsortieS,*imsortieL;
    	int n=im1.largeur*im1.hauteur;
    	Image imS,imL,imfiltreS,imfiltreL;
    	im.AllocationImage(imS,im1.largeur,im1.hauteur,MYGRAY);
    	im.AllocationImage(imL,im1.largeur,im1.hauteur,MYGRAY);
    	H=new float[n];
    	S=new float[n];
    	L=new float[n];
    	MS=new float[n];
    	ML=new float[n];
    	resortieS=new float[n];
    	imsortieS=new float[n];
    	resortieL=new float[n];
    	imsortieL=new float[n];
    	ConversionBMPHSL(im1,H,S,L);
    	FFT(S,resortieS,imsortieS,im1.largeur,im1.hauteur);
    	Module(resortieS,imsortieS,MS,n);
    	FFT(L,resortieL,imsortieL,im1.largeur,im1.hauteur);
    	Module(resortieL,imsortieL,ML,n);
    	ImageModule(MS,imS,n);
    	ImageModule(ML,imL,n);
    	PasseHautSurFFT(imS,imfiltreS);
    	PasseHautSurFFT(imL,imfiltreL);
    /*	FFTInverse(imS);
    	FFTInverse(imL);*/
    	TransfoImageTab(imfiltreS,S,n);
    	TransfoImageTab(imfiltreL,L,n);
    	ConversionHSLBMP(H,S,L,im2);
    Est ce la bonne direction???

  11. #11
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par mm2405 Voir le message
    Tu l'as passée en HSL et tu as passé un filtre FFT passe haut sur les deux composantes S et L, c'est ca?
    Oui, c'est tout a fait ca. Bon en verité, c'est pas completement un filtre passe-haut car dans imageJ c'est un passe-bande. Mais j'ai indiqué de garder toutes les hautes frequences... ca revient donc a faire un passe haut.

    Mais est ce que ce n'est pas ce que tu avais fait la premiere fois??
    Si. Sauf que la premiere fois j'ai utilisé un filtre lineaire (a base de sinus cardinal): c'est rapide mais pas parfait. Pour le second essai, je suis passé par FFT+multiplication par gaussienne+iFFT, ce qui est plus beau.

    Pour les details sur la mise en oeuvre de filtre dans l'espace de fourier, il y a le tuto de millie:

    http://humbert-florent.developpez.co...ement/fourier/
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Points : 93
    Points
    93
    Par défaut
    bonjour, j'ai bien utilisé les tutos de Florent Humbert (très bien faits au passage) mais je n'arrive pas bien a programmer tout ca.
    Enfin, je vais mettre le tag resolu car j'ai la méthode. A moi de la programmer maintenant.
    Merci beaucoup car ca fait un moment que je cherchais et je n'avais vraiment pas pensé au domaine HSL et a la FFT!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faites des messages corrects !!!
    Par Alacazam dans le forum C++
    Réponses: 6
    Dernier message: 23/03/2006, 15h56
  2. [IB71] mon Blob ne marche pas correctement
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 2
    Dernier message: 17/09/2003, 14h03
  3. autre probleme pour deriver fonction
    Par voyageur dans le forum Mathématiques
    Réponses: 15
    Dernier message: 28/07/2003, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo