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:
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:
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:
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:
Image originale; image modifiée; courbe
tonale correspondante.
Image original, image modifié; et
courbe tonale correspondante.
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" :
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.
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:
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:
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.
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:
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 :
Avec :
- 0 < g < 1 : on augmente le contraste
dans les parties claires:
- 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: