2. Histogramme
  • Définition
Un histogramme est un graphique permettant de représenter la distribution des intensités des pixels d'une image, c'est-à-dire le nombre de pixels pour chaque intensité lumineuse. Par convention un histogramme représente le niveau d'intensité en abscisse en allant du plus foncé (à gauche) au plus clair (à droite).
Ainsi, l'histogramme d'une image en 256 niveaux de gris sera représenté par un graphique possédant 256 valeurs en abscisses, et le nombre de pixels de la classe (niveau d'intensité) de l'image en ordonnées.
ex: sur cette image simple en niveau de gris on a tracé un histogramme dont l'échelle est linéaire et un autre dont l'échelle est logarithmique pour faire ressortir les niveaux quand l'image a peu de mode:
graphic graphic
Grâce à l'histogramme à échelle log, on peut voir que l'image se compose principalement de 4 intervalles niveaux de gris.
On peut tracer un histogramme dans le système RGB (Red Green Blue) pour les images couleurs; en réalité, on aura 3 tracés sur le même histogramme, un pour chaque couleur:
graphic graphic
L'histogramme à échelle log en couleur ressemble à celui en niveau de gris et cela pour chaque couleur: l'image est donc "pauvre" en couleur ce que nous observons bien dans l'image.
  • Transformation d'histogrammes
     L'histogramme est un outil très utile pour étudier la répartition des composantes d'une image mais il permet également de corriger le contraste et l'échelle des couleurs pour des images sur- exposées ou sous- exposées. En outre sa modification n'altère pas les informations contenues dans l'image mais les rend plus ou moins visibles (transformations révèrsibles).
On peut donc modifier et améliorer les images si par exemple le contraste est mauvais ou excessif, s'il y a du bruit ou des détails difficilements visibles ...
La modification d'un histogramme est généralement représentée sur une courbe (appelée courbe tonale) indiquant la modification globale des composantes de l'image avec en abscisse les valeurs initiales et en ordonnées les valeurs après modification. La courbe tonale correspond à une fonction de transfert définie par une table de transcodage appelé look up table, notée LUT. Ainsi la diagonale indique la courbe telle que les valeurs initiales sont égales aux valeurs finales, c'est-à- dire lorsque aucune modification n'a eu lieu. Ex:
graphicgraphic
Par exemple on prend une intensité i = 200 de niveau global de couleurs de l'image initiale, l'intensité f(i) de l'image résultante correspond à la même valeur puisque l'équation de la courbe tonale dans ce cas est f(i) = i.
On peut donc modifier l'aspect d'une image en jouant simplement sur cette courbe afin de faire ressortir certains détails:
  • L'éclaircissement et l'assombrissement.
  • Le contraste.
    • L'éclaircissement et l'assombrissement
L'éclaircissement ou l'assombrissement est creé par une simple translation parrallèle de la courbe tonale de l'image originale. Du point de vu mathématique la fonction serait exprimée par f(i) = i + b:
  • L'éclaircissement:
graphicgraphicgraphic
Image originale; image modifiée; courbe tonale correspondante.
  • L'assombrissement:
graphicgraphicgraphic
Image original, image modifié; et courbe tonale correspondante.
  • Le contraste
Le contraste est l’opposition marquée entre deux régions d’une image, plus précisément entre les régions sombres et les régions claires de cette image. Le contraste est défini en fonction des luminances de deux zones d’images.
Entre 2 points voisins Px et Py de niveau de gris respectif f(x) et f(y), le contraste s'exprime par :
C(x,y)(f)=|f(x)-f(y)|/(f(x)+f(y))
Le contraste d'une image peut être modifié soit à partir de la courbe tonale comme la linéarisation, l'égalisation et l'hyperbolisation, soit par des fonctions de transfert comme la fonction Bêta ou Gamma
Egalisation, linéarisation et hyperbolisation
     L'égalisation d'histogramme a pour but d'harmoniser la répartition des niveaux de luminosité de l'image, de telle manière à tendre vers un même nombre de pixel pour chacun des niveaux de l'histogramme. Cette opération vise à augmenter les nuances dans l'image. On égalise quand l'histogramme est étalé mais pas homogène, on obtient à la fin un histogramme à peu prés "plat" :
graphicgraphic
graphicgraphic
     La linéarisation ou étalement d'histogramme consiste à répartir les fréquences d'apparition des pixels sur la largeur de l'histogramme. Ainsi il s'agit d'une opération consistant à modifier l'histogramme de telle manière à répartir au mieux les intensités sur l'échelle des valeurs disponibles. Ceci revient à étendre l'histogramme afin que la valeur d'intensité la plus faible soit à zéro et que la plus haute soit à la valeur maximale.
De cette façon, si les valeurs de l'histogramme sont très proches les unes des autres, l'étirement va permettre de fournir une meilleure répartition afin de rendre les pixels clairs encore plus clairs et les pixels foncés proches du noir.
Un exemple concret: le brouillard est en fait une image où les niveaux de gris sont très resserrés, pour pouvoir "voir" dans le brouillard il suffit d'étaller l'histogramme :
le premier travail consiste à faire l'histogramme des niveau de gris des pixels.
graphic
On remarque que toute la dynamique Noir-Blanc n'est pas utilisée, il n'y a pratiquement pas de pixels entre b et c, on va donc étendre la partie a, b (renforcer) et supprimer (comprimer) la partie b, c.
Cependant, on peut penser que l'idéal serait obtenu si tous les niveaux de gris étaient également représentés, c'est à dire si l'histogramme était "plat" comme celui obtenu par l'égalisation.
En réalité l'oeil ne réagit pas bien à un histogramme plat. Pour avoir une perception uniforme des niveaux de gris il faut une densité hyperbolique de représentation des niveaux des gris. On parle ainsi de notion d'hyperbolisation.
L'histogramme obtenu aura à peu près cette allure:
graphic
Il est ainsi possible d'augmenter le contraste d'une image. Par exemple une image trop foncée pourra devenir plus "visible". Toutefois cela ne donne pas toujours de bons résultats:
graphicgraphic
graphicgraphic
On part de l'image du chat très contrasté où nous ne pouvons distinguer les formes (à gauche), avec l'histogramme correspondant très resserré, on étale donc les valeur de l'histogramme à l'aide de la courbe tonale, cependant on voit que l'image résultante (à droite) contient un peu trop de couleurs sombres, on pourra alors faire une deuxième modification qui répartira les couleurs sombre vers les plus claires.
graphic
courbe tonale de la transformation illustrée ci-dessus.
D'autres outils, plus mathématiques, permettent de modifier le contraste d'une image: les fonctions de transfert, qui fonctionnent en fait sur le même procédé que la courbe tonale.
Les fonctions de transfert
     Les fonctions de transfert améliorent aussi l'image en modifiant de différentes façons le contraste comme la fonction Bêta ou Gamma, mais d'autres fonctions existent en jouant sur des paramètre différents:
  • f(i) = 255 * Log ( i + 1) / Log 256 : augmente le contraste dans les parties sombres.
  • f(i) = 255 - 255 * cos [ p / 2 * i / 255 ] : diminue le contraste dans les parties sombres.
  • f(i) = 255 * H(i) / Hmax : met en évidence les niveaux de gris peu représentés.
La fonction la plus couramment utilisée étant la fonction Gamma (qui est utilisée dans les paramètres de modification de la courbe tonale des illustration précédentes) dont on pourra donner une illustration plus loin.
La fonction Béta
     La fonction Bêta est définie par la formule suivante:
graphic
0 < b < 1 : on augmente le contraste dans les parties claires.
b > 1 : on augmente le contraste dans les parties sombres.
La fonction Gamma
     La fonction Gamma donne le même résultat que la fonction Bêta mais elle est plus utilisée car elle est plus simple et se définie par la formule :
graphic
Avec :
- 0 < g < 1 : on augmente le contraste dans les parties claires:
graphicgraphicgraphic
- g = 1 : d'après la formule on obtient f(i)=i donc il n' y a aucun changement.
- g > 1 : on augmente le contraste dans les parties sombres:
graphicgraphicgraphic