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 :

Egalisation d'histogramme des images


Sujet :

Traitement d'images

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Points : 5
    Points
    5
    Par défaut Egalisation d'histogramme des images
    Salut,

    Je sais que pour faire une égalisation d'histogramme il faut tendre à rendre l'histogramme cumulatif linéaire.

    J'ai lu ces pages :

    http://arthur.u-strasbg.fr/~ronse/TI...discrhist.html
    http://fourier.eng.hmc.edu/e161/lect...orm/node3.html

    Mais je n'arrive pas à comprendre comment on rend l'histogramme plus ou moins "plat". Tout ce que je vois c'est comment "étirer" un histogramme.

    L'étirement et l'égalisation des histogrammes sont elles la même chose ? Sinon, pouvez vous m'éclairer sur la manière avec laquelle on rend l'histogramme "plat" ?

    Merci d'avance.

  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
    Citation Envoyé par l0calh0st Voir le message
    Je sais que pour faire une égalisation d'histogramme il faut tendre à rendre l'histogramme cumulatif linéaire.

    J'ai lu ces pages :

    http://arthur.u-strasbg.fr/~ronse/TI...discrhist.html
    http://fourier.eng.hmc.edu/e161/lect...orm/node3.html

    Mais je n'arrive pas à comprendre comment on rend l'histogramme plus ou moins "plat".
    Il faut se débrouiller pour avoir autant de pixels qui ont la valeur "0", que de pixels qui ont la valeur "1", que de pixels qui ont la valeur "2", ... Car, dans ce cas, chaque "bin" de ton histogramme aura la meme valeur et donc l'histogramme cumulé va augmenter linéairement.

    Maintenant, quelle est ce nombre "magique" de pixels qu'il y a dans chaque bin ? Et bien, on sait que la somme de tous les bins est égale au nombre de pixels dans l'image => valeur_du_bin = nombre_de_pixels / nombre_de_bins

    Pour une image de taille WxH à 256 niveaux de gris : valeur_du_bin = (W*H)/256

    Maintenant, grace à l'histogramme cumulé original, on peut savoir les pixels qu'on doit mettre dans chaque bin : tant que le cumul original est inférieur à "valeur_du_bin", on met les pixels dans le 1er bin (=> leur nouvelle valeur sera "zéro").

    Ensuite on recommence : tant que le cumul original est inférieur à "2 fois la valeur_du_bin", on met les pixels dans le 2nd bin (=> leur nouvelle valeur sera "un").

    Etc. On construit ainsi une fonction de conversion de valeurs entre l'ancienne image et la nouvelle : nouvelle_valeur(i) = Entier{ cumul_original[i]/valeur_du_bin }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Merci bien pour ton aide pseudocode.

    Cependant, je ne comprends pas pourquoi, si on a fixé la valeur du bin au préalable, en pratique les niveaux de gris ne sont pas toujours équilibrés ?

    PS : Dans tous les sites on écrit valeur_du_bin = (W*H)/255, y'a t-il une faute ?

    Merci.

  4. #4
    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 l0calh0st Voir le message
    Merci bien pour ton aide pseudocode.

    Cependant, je ne comprends pas pourquoi, si on a fixé la valeur du bin au préalable, en pratique les niveaux de gris ne sont pas toujours équilibrés ?
    Si ton image contient seulement des pixels à "0" et des pixels a "255", c'est impossible de répartir des pixels uniformément dans les 256 cases. Il faudrait pouvoir mettre certains pixels "0" dans la case #1, d'autre dans la case #2, etc.

    Mais on n'a aucun moyen de différencier les pixels "0" entre eux. Donc on les mettra tous dans la meme case.

    PS : Dans tous les sites on écrit valeur_du_bin = (W*H)/255, y'a t-il une faute ?
    Non, ce n'est pas une faute. Dans la théorie, il y a bien 256 cases dans un histogramme : case #1, #2, ..., #256 . Mais en pratique, dans les langages de programmation, les tableaux commencent à l'indice zéro et se terminent à l'indice 255. case #0, #1, ..., #255
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/04/2011, 11h45
  2. Egalisation de histogramme pour une image
    Par mihaispr dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 19/03/2009, 09h58
  3. Histogramme sur des images 32 bits
    Par xxiemeciel dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 27/01/2006, 14h17
  4. Afficher des images sous directX
    Par cyberlewis dans le forum DirectX
    Réponses: 17
    Dernier message: 12/07/2004, 12h07
  5. [TP][MULTI-PROBLEME]Comment afficher des images pcx
    Par mikoeur dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 24/10/2002, 13h57

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