CHAPITRE 2:
TRAITEMENT D’IMAGES
TRANSFORMATION D’HISTOGRAMME
ISTIC GLSI2
PLAN
Etirement de l’histogramme
Égalisation d’histogramme
Autres transformations d’histogramme
Transformation linéaire
Transformation linéaire avec saturation
Transformation linéaire par morceau
Transformation non-linéaire
2/73
TABLE DE CONVERSION
L’implémentation des méthodes de transformation
d’histogramme peut être optimisé en utilisant une
table de conversion appélée aussi «LUT» (Look Up
Table),
Une table de conversion est une table qui à tout niveau (de 0 à
Nmax) fait correspondre un autre niveau (dans la plage 0-
Nmax).
j = Transformation(i)
3/73
ETIREMENT DE L’HISTOGRAMME
4/73
ETIREMENT DE L’HISTOGRAMME
Appelé aussi
Expansion de la dynamique
Recadrage de la dynamique
Etalement de l’histogramme
C’est une transformation linéaire par morceaux sur
l’intervalle [0, L-1] (L=256 pour une image 8bits)
Principe
répartir les fréquences d’apparition des pixels sur
toute la largeur de l’histogramme
Objectif
Amélioration du contraste de l’image
5/73
ETIREMENT DE L’HISTOGRAMME
Pour des images trop claires ou trop
foncées, ou encore pour des images dont
les pixels ont des niveaux distribués sur
une plage étroite
Il s'agit de redistribuer les niveaux sur
l'ensemble de la plage 0-gmax (gmax=255
pour une image 8 bits)
Histogramme Histogramme étiré
6/73
ALGORITHME DE L’ÉTIREMENT DE L’HISTOGRAMME
Image dont la dynamique est [min,max]
Objectif de l’étirement de l’histogramme est le
recadrage de la dynamique de son histogramme
de façon à utiliser toute la plage des niveaux de
gris [0,L-1] (L=256 pour une image 8bits)
améliorer le contraste de l’image
0 255 7/73
min max
ALGORITHME DE L’ÉTIREMENT DE L’HISTOGRAMME
Soit I(i,j) l’image source codée sur L niveaux (256 pour
une image en niveau de gris)
On étire la dynamique en réechelonnant les niveaux de
gris entre 0 et L-1
exemple:
image codée sur 8 bits
Recadrage de la
dynamique entre 0 et 255
8/73
ALGORITHME DE L’ÉTIREMENT DE L’HISTOGRAMME
Image I Histogramme de I
%
255
identité
255 0 255
min max
Image I’ Etirement de l’histogramme
255 Histogramme de I’
9/73
255
min max
0 255
ALGORITHME DE L’ÉTIREMENT DE L’HISTOGRAMME
for i=1:nblig
for j=1:nbcol
R(i,j) = 255*(I(i,j)-minI) / (maxI-minI);
end;
end;
10/73
Pas optimal
ALGORITHME DE L’ÉTIREMENT DE L’HISTOGRAMME
Utilisation d’une LUT (Look Up Table)
for k=1:256
LUT[k]=255*(k-1-minI)/(maxI-minI);
end;
!!!Attention, sous Matlab,
for i=1:nblig la première case du tableau
for j=1:nbcol est 1 et non pas 0
R(i,j) =LUT[I(i,j)+1];
end;
end;
11/73
ALGORITHME DE L’ÉTIREMENT DE L’HISTOGRAMME AVEC
DES SEUILS
Cette transformation est une transformation
linéaire par morceaux sur l’intervalle [0, L-1]
(L=256 pour une image 8bits)
Effet
Amélioration du contraste de l’image
12/73
ALGORITHME DE L’ÉTIREMENT DE L’HISTOGRAMME AVEC
DES SEUILS
Image I identité Histogramme de I
255
%
255
0 255
Smin Smax
Transformation de l’étirement
Image I’ de l’hisogramme avec des seuis
255 Histogramme de I’
13/73
255
min max
Smin Smax 0 255
ALGORITHME DE L’ÉTIREMENT DE L’HISTOGRAMME AVEC
DES SEUILS
On remplace, dans la formule de l’étirement de
l’histogramme, min et max respectivement par Smin
et Smax
avec min(I (i, j)) Smin et Smax max(I(i, j))
Et saturation des niveaux de gris < Smin
Saturation des niveaux de gris > Smax
I'(i, j) 0 I'(i, j) 0
I'(i, j) L-1 I'(i, j) L-1 14/73
ALGORITHME DE L’ÉTIREMENT DE L’HISTOGRAMME AVEC
DES SEUILS
L-1
I '(i, j) (I (i, j) Smin )
Smax Smin
Effet:
rehaussement du contraste des niveaux
Smin<I(i,i) < Smax
saturation
à 0 des niveaux min(I(i,i)) < I(i,i) < Smin
à L-1 des niveaux Smax <I(i,i) < max(I(i,i))
15/73
ALGORITHME DE L’ÉTIREMENT DE L’HISTOGRAMME AVEC
DES SEUILS
Image I
Après étirement de l’histogramme
Après étirement de
l’histogramme avec
des seuils
16/73
ÉTIREMENT DE L’HISTOGRAMME
LIMITE
Dans le cas où l'histogramme de l’image occupe
toute la plage de la dynamique la méthode de
l’étirement de l’histogramme ne donne aucun
changement
Exemple
17/73
ÉTIREMENT DE L’HISTOGRAMME
LIMITE
Image I’ après étirement de
Image I et son
l’histogramme et son histogramme
histogramme
18/73
ÉTIREMENT DE L’HISTOGRAMME
LIMITE
Dans le cas où l'histogramme de l’image occupe
toute la plage de la dynamique la méthode de
l’étirement de l’histogramme ne donne aucun
changement
Solution Egalisation de l’histogramme
19/73
EGALISATION DE L’HISTOGRAMME
Ce n’est pas une transformation linéaire
Objectif
Améliorer le contraste de l’image
20/73
EGALISATION DE L’HISTOGRAMME
Le principe:
À partir d'une image initiale, fabriquer une
nouvelle image dans laquelle tous les niveaux
auront la même fréquence (ou même nombre de
pixels) de manière:
Exacte : dans ce cas, on dira que
l'histogramme de la nouvelle image est "plat"
Approchée: dans ce cas, on dira que
l'histogramme est égalisé.
21/73
EGALISATION DE L’HISTOGRAMME
L'histogramme de l'image L'histogramme plat après égalisation
22/73
ALGORITHME D’ÉGALISATION D’HISTOGRAMME
Soit I(i,j) l’image source codée sur L niveaux (256
pour une image en niveau de gris)
Déterminer son histogramme h
Déterminer son histogramme cumulé hc
Déterminer I’(i,j) par :
avec N le nombre de pixels de l’image
23/73
EGALISATION DE L’HISTOGRAMME
Image I après égalisation de
Image I et son
l’histogramme et son histogramme
histogramme
24/73
25/73
EGALISATION DE L’HISTOGRAMME
3 5 0 0 3 5 0 0
3 0 0 0 3 0 0 0
2 5 0 0 2 5 0 0
2 0 0 0 2 0 0 0
1 5 0 0 1 5 0 0
1 0 0 0 1 0 0 0
50 0 5 0 0
0 0
0 5 0 10 0 150 20 0 25 0 0 5 0 10 0 1 5 0 2 0 0 2 5 0
Image originale Image plus contrastée
(histogramme égalisé)
26/73
EGALISATION DE L’HISTOGRAMME
Image plus contrastée
(histogramme égalisé)
Image originale
27/73
EGALISATION D’HISTOGRAMME POUR UNE
IMAGE COULEUR
Image couleur
28/73
EGALISATION D’HISTOGRAMME POUR UNE
IMAGE COULEUR
Image couleur
Image originale
Image couleur plan Rouge plan vert plan Bleu
29/73
Image après égalisation d’histogramme
EXERCICE 1
Soit l’image à niveaux de gris suivante de taille 8x8 pixels codées sur 4 bits.
Donner la dynamique de l’image
On cherche à faire un étirement de l’histogramme de cette image.
Donner la formule générale de cette transformation
Donner les valeurs des différentes constantes dans cette formule
Représenter cette transformation (LUT)
Donner le code Matlab correspondant (utiliser une LUT).
Qu'est-ce qu’il faut modifier dans la formule et le code de la question
précédente pour faire un recadrage de la dynamique avec seuils? Donner les
valeurs des seuils (Smin et Smax).
o Donner le code Matlab
permettant d’appliquer
à cette image une
égalisation d’histogramme
30/73
CORRIGÉ EXERCICE 1 (1/4)
Dynamique de l’image = [2,13]
Formule de l’étirement de l’histogramme
avec:
max=13
min=2 L=16 (image 4bits)
Remarque:
L=256 si l’image est codée sur 8 bits
Transformation de l’étirement de l’histogramme (LUT)
31/73
CORRIGÉ EXERCICE 1 (2/4)
Code Matlab I=imread(’image1.jpg’);
[h,w]=size(I);
IMin=double(min(I(:)));
IMax=double(max(I(:)));
Alpha=15/(Imax-IMin);
for k=1:16
LUT(k)=uint8(round(Alpha*((k-1)-IMin)));
%%round() arrondi au plus proche entier
end
IR=uint8(zeros(h,w));
for i=1:h
for j=1:w
R(i,j)=uint8(LUT(double(I(i,j))+1));
end
end
32/73
figure;
imshow(R)
CORRIGÉ EXERCICE 1 (3/4)
Remplacer, dans la formule précédente et le code précédent
IMin par Smin
Imax par Smax
Plus appliquer la saturation
R(i,j) < 0 R(i,j) = 0
R(i,j) > 15 R(i,j) = 15
Exemple de valeurs pour Smin et Smax:
Smin = 3
Smax= 12
33/73
CORRIGÉ EXERCICE 1 (4/4)
Code Matlab de l’égalisation de l’histogramme
Alpha=15/HC(16); %% équivalent à 15/(h*w)
for k=1:16
LUT(k)=uint8(round(Alpha*HC(k-1)));
end;
IE=uint8(zeros(h,w));
for i=1:h
for j=1:w
IE(i,j)=uint8(LUT(double(I(i,j))+1));
end;
end;
figure;
imshow(IE);
34/73
Autres transformations d’histogramme
35/73
Autre transformations linéaire : inversion
Transformation identité
aucun changement dans l’image
I = I’
255 identité
gris en sortie
niveau de
0 niveau de
255
gris en entrée
36/73
Autre transformations linéaire : inversion
gris en sortie
niveau de
niveau de
gris en entrée
37/73
TRANSFORMATIONS LINÉAIRES PAR MORCEAUX
Objectif
Changement local du niveau de gris d’une image
binarisation, filtrage
Inversion locale du contraste inverser localement les
niveaux de gris
Expansion locale de la dynamique rehaussement
du contraste localement
Compression locale de la dynamique diminution
du contraste localement
38/73
Autre transformation linéaire par morceaux :
Seuillage
• Conserver dans une image que 2 niveaux de gris (noir
ou blanc)
• soit en convertissant en noir tous les niveaux de
gris inférieurs à un seuil et en blanc tous ceux qui
dépassent le seuil seuillage utilisant un seul seuil
• soit en convertissant en blanc toutes les valeurs
comprises entre deux seuils, et en noir tout le
reste seuillage avec fenêtre d’intensité
• Objectif:
• mise en évidence d’une zone de l’histogramme
• différencier les objets du fond
39/73
Autre transformation linéaire par morceaux
Seuillage avec un seul seuil
Affecter le niveau 255 aux pixels
gris en sortie
dont la valeur est supérieure à un
niveau de
seuil S et 0 le niveau aux autres
niveau de
gris en entrée
40/73
EXERCICE 2
Soit l’image à niveaux de gris suivante de taille 8x10 pixels et dont les
valeurs des niveaux de gris sont codées sur 8 bits.
On veut binariser cette image: donner la valeur du seuil choisi,
l’image résultat et le code Matlab correspondant
41/73
CORRIGE EXERCICE 2 (1/2)
L’histogramme présente quatre pics qui correspondent aux niveaux
de gris suivants 2, 100, 150 et 200.
Le niveau de gris 2 (sombre) étant très éloigné des trois autres
niveaux de gris 100, 150 et 200 (des nuances de gris clair) on peut
donc choisir une valeur du seuil S qui soit >2 et <100, seuil S
compris entre 3 et 99
Histogramme
35
Nombres de pixles
30
25
20
15
10
5
0
2 100 150 200
Niveaux de gris
42/73
CORRIGE EXERCICE 2 (2/2)
Exemple Image transformée après
seuil = 3 binarisation par seuillage
function R =Transform(I, seuil)
[h,w] = size(I) ; 0 0 0 1 1 1 1 0 0 1
R=uint8(zeros(h,w)); 1 1 0 0 1 1 0 0 1 1
for i=1:h
1 1 1 0 0 0 0 1 1 1
for j=1:w
if (I(i,j) > seuil ) 1 1 1 0 0 0 0 1 1 1
R(i,j)=uint8(1); 0 1 1 0 0 0 0 1 1 1
end 0 1 1 0 1 1 0 1 1 1
end
0 1 1 0 1 1 0 1 1 1
I=imread(’image1.jpg’); 0 1 1 0 1 1 0 1 1 1
R = Transform(I,3);
figure(), imagesc(R) ;
43/73
Autre transformation linéaire par morceaux
Seuillage avec fenêtre d’intensité
• Tous les pixels ayant des niveaux de gris situés entre
a et b seront de niveau Nmax, tous les autres seront
de niveau 0.
• Exemple: fonction de
seuillage avec fenêtre
gris en sortie
niveau de
d’intensité entre 30 et 100,
Nmax dans cet exemple est
égaleà255
niveau de
gris en entrée
44/73
AUTRE TRANSFORMATION LINÉAIRE PAR MORCEAUX AVEC
SATURATION
L'image I1 montre des traces grises.
On peut les supprimer à l'aide d'une LUT (les nuances de
gris dans le fond de l’image sont remplacées par du blanc)
Tous les niveaux de gris >127 sont saturés à 255
Objectif: Filtrage de l’image
gris en sortie
niveau de
45/73
niveau de
gris en entrée
TRANSFORMATION LINÉAIRE PAR MORCEAUX
Forme générale de la transformation linéaire
I’(i,j) = α I(i,j) + β
avec α appelé pente locale ou gain
Effet dépend de la valeur de α
α > 1 expansion de la dynamique (rehaussement du
contraste)
0 < α < 1 compression de la dynamique
(diminution du contraste)
Remarque:
α = 0 palier horizontal perte d’information 46/73
α < 0 inversion du contraste
TRANSFORMATION LINÉAIRE PAR MORCEAUX
Ces fonctions de transformation peuvent être plus au
moins complexes
Quelques exemples avec des pentes positives
expansion de la dynamique expansion de la dynamique
des zones claires des zones sombres
gris en sortie
niveau de
gris en sortie
niveau de
niveau de gris en entrée 47/73
niveau de gris en entrée
Exemple 1
Exemple 2
TRANSFORMATION LINÉAIRE PAR MORCEAUX
Calcul des coefficients
pour ces deux exemples
expansion de la dynamique expansion de la dynamique
de la zone claire de la zone sombre
gris en sortie
niveau de
gris en sortie
niveau de
niveau de gris en entrée 48/73
niveau de gris en entrée
Exemple 1
Exemple 2
TRANSFORMATION LINÉAIRE PAR MORCEAUX
EXEMPLE 1
si I(i,i) < 60 α= b/a= 20/60 < 1
si I(i,i) > 60 α= 255-b/255-a = 255-20/255-60 > 1
expansion de la dynamique des zones claire de [60,255] à
[20,255]
Effet principal assombrissement des zones claires
b = 20
49/73
a = 60
TRANSFORMATION LINÉAIRE PAR MORCEAUX
EXEMPLE 1
Exemple
image originale I
image transformée I’
Effet principal:
assombrissement des zones claires
b = 20
50/73
a = 60
Transformation
TRANSFORMATION LINÉAIRE PAR MORCEAUX
EXEMPLE 2
si I(i,i) < 150 α > 1 expansion de la dynamique des
zones sombres ([0,150] [0,220] )
si I(i,i) > 150 0<α < 1 compression de la dynamique de
la zone claire ( [150,255] [220,255])
Effet principal
éclaircissement des zones sombres
b = 220
51/73
a = 150
TRANSFORMATION LINÉAIRE PAR MORCEAUX
EXEMPLE 2
Exemple
image originale I
image transformée I’
b = 220
Effet principal:
éclaircissement des zones sombres
52/73
a = 150
Transformation
image originale I
image transformée I’ image transformée I’
éclaircissement des zones sombres
assombrissement des zones claires
b = 220
b = 20 53/73
a = 150 a = 60
Transformation Transformation
TRANSFORMATION LINÉAIRE PAR MORCEAUX
EXEMPLE 3
a1 = 120
a2=160
b1 =30
b2 = 230
image originale I
• si pente > 1 rehaussement du
contraste
• si 0<pente < 1 diminution du 54/73
contraste
image transformée I’
TRANSFORMATION LINÉAIRE PAR MORCEAUX
EXEMPLE4
%
255
255 0 255
Smin Smax
255
255
min max
Smin Smax 0 255 55/73
S
Autre transformations linéaire par morceaux
Transformation utilisant des paliers de mêmes
largeurs et de hauteurs réparties uniformément
Effet :
Seuls les niveaux des paliers sont conservées
Apparition de discontinuité et d’artefacts
56/73
TRANSFORMATIONS LINÉAIRES PAR MORCEAUX
RÉSUMÉ
Transformations localement de la forme
I’(i,j) = α I(i,j) + β
Pente positive α > 1 expansion de la dynamique
Pente positive 0 <α < 1 compression de la dynamique
Pente négative α < 0 inversion du contraste
exemple I’(i,j) = 255 – I(i,j) α= -1 et β = 255
Paliers horizontaux α = 0 perte d’information
Sauts verticaux discontinuité et artefacts (transition
non continue)
57/73
TRANSFORMATION NON LINÉAIRE
58/73
TRANSFORMATION NON LINÉAIRE
EXEMPLE1
Image originale Image transformée
Effet:
expansion de la
dynamique des zones
claires
assombrissement des
zones claires
59/73
TRANSFORMATION NON LINÉAIRE
EXEMPLE2
Image originale
Image transformée
Effet
expansion de la
dynamique des zones
sombres
éclaircissement des
zones sombres
60/73
TRANSFORMATION NON LINÉAIRE
EXEMPE 3:
TRANSFORMATION LOGARITHMIQUE
Effet
Expansion de la dynamique des zones sombres
Compression de la dynamique des zones claires
éclaircissement de l’image
61/73
TRANSFORMATION NON LINÉAIRE
EXEMPLE 4: CORRECTION GAMMA
L’intensité mesurée par une caméra est une
fonction logarithmique de l’intensité réelle
L’intensité mesurée par un moniteur CRT est
une fonction exponentielle de l’intensité réelle
Correction Gamma de ces défauts
62/73
TRANSFORMATION NON LINÉAIRE
EXEMPLE 4: CORRECTION GAMMA
63/73
TRANSFORMATION NON LINÉAIRE
EXEMPLE 4: CORRECTION GAMMA
64/73
CORRECTION GAMMA: EXEMPLE
65/73
PROFIL
Un profil est une représentation de la variation
du niveau I(x,y) des pixels le long d'une ligne
ou d'une colonne donnée.
66/73
RECHERCHE DE NIVEAUX
• Appelé aussi isolation de niveaux de gris.
• Cette opération consiste à isoler et à afficher tous les
pixels qui ont même niveau qu'un pixel donné.
• Ce procédé permet de mettre en évidence des détails de
même nature sur une image.
• Les instructions en matlab
– Imhist (Calcul d’histogramme)
67/73
– Improfile (Calcul du profil)
– Impixel (Isolation du pixel)
EXERCICE 3
Soit l’image I1 et son histogramme H1.
Différents traitements ont été appliqués à l’image I1. Pour chacune
des images I2 à I9, trouver son histogramme parmi les histogrammes
H2 à H9. Justifier votre choix en spécifiant notamment le plus
précisément possible quel est le traitement qui a été effectué sur
chaque image I2 à I9.
68/73
image I1 histogramme H1
69/73
CORRIGÉ EXERCICE 3
I9-H3 I6-H4 I2-H8
Transformation inverse Transformation identité Egalisation d’histogramme
I7-H9 I4-H7 I8-H6
Etirement de Augmentation de la luminance : Diminution de la luminance:
l’histogramme: zone sombre de l’histogramme zone claire de l’histogramme
utilisation de toute la vide vide
plage des niveaux de I’ = I + a (avec a > 1) I’ = I – a (avec a > 1)
gris translation de l’histogramme translation de
vers la droite. l’histogramme vers la gauche
(image plus claire) (image plus sombre)
I5-H2 II3-H5
seuillage: image flou : cette image a subi un
pixels < seuil 0 filtrage et une élimination des
pixels >= seuil 1 pixels de fluctuation
car dans l’histogramme il y a
deux pics, (noir et blanc ) 70/73
EXERCICE 4
Soit l’image I et son histogramme H.
Cette image a subi plusieurs transformations. Trouver pour chaque
image transformée de I1 à I4, la transformation correspondante de T1
à T4 en nommant, à chaque fois, la transformation appliquée.
71/73
image I histogramme H
I transformée Histogramme Transformation
T1
I1
I2 T2
I3 T3
I4 T4
72/73
CORRIGE EXERCICE 4
I1-T4 I2-T1
Augmentation de la luminance: Etirement de l’histogramme avec des
zone sombre de l’histogramme est seuils (saturation à 0 et à 255)
vide : l’histogramme est translaté Effet : rehaussement du contraste de l’image
vers la droite + saturation à 255
I4-T2 T3
Egalisation de l’histogramme Correction Gamma avec Gamma < 1
Effet : rehaussement du contraste (Gamma=0.2)
de l’image Effet : expansion de la dynamique des zones
sombres éclaircissement de l’image
Correction Gamma avec Gamma = 2.5 > 1 Effet : expansion de la
dynamique des zones claires assombrissement de l’image
73/73