AMÉLIORATION D’IMAGE
AMÉLIORATION
Adaptation à la vision humaine (de l’observateur)
- modéliser la vision humaine (ses critères de qualité)
ADAPTATION à la vision humaine => l’image doit avoir
- un bon contraste
- des contours d’objets bien marqués
- transformer l’image
AMÉLIORATION D’IMAGE TRAITEMENT PONCTUEL HOMOGÈNE
t1 t2 …
fu fp f t0 g Redistribution des valeurs des pixels (niveaux de gris) :
gp
[0,N] —> [0,N] => généralement non inversible.
visu Représentée par une fonction tabulée :
scène Acquisition T
T
0 j = T(i) Nj
SELECTION RESTAURATION ADAPTATION
ELIMINATION FILTRAGE - à la vision humaine • • j j
- aux traitements suivants i i j
fu g
fp f g gp
0
Ni 0 i
3 2 1 (255) Ni
f : fonction image (fu : information utile, fp : information parasite)
g : image discrète
gp : image perçue par l’observateur
TRAITEMENT PONCTUEL HOMOGÈNE MODIFICATION de la RÉPARTITION des niveaux de gris
Etude de la répartition des valeurs des pixels
Histogramme cumulé histogramme
Histogramme Hc Recadrage de dynamique imin imax
H jmax
Augmentation du contraste
T
0 i 255
jmin
H(i) = nombre d'occurences imin imax N
du niveau i
H(0) = Hc(0) Hc(0) = H(0)
H(i) = Hc(i)-Hc(i-1) , i=1—N Hc(i) = Hc(i-1) + H(i) , i=1—N
Recadrage de la dynamique MODIFICATION de la RÉPARTITION des niveaux de gris
Augmentation du contraste dans une plage de niveaux particulière
AMELIORATION TD : RECADRAGE de la DYNAMIQUE
• Recadrage de la dynamique Image :
I : Tableau de pixels dont la valeur est comprise entre 0 et N
NL : Nombre de Lignes ; NC : Nombre de Colonnes
1- Calcul de l'histogramme : Histo (I, NL, NC, H, N)
2- Calcul de f, fonction de transformation : Frecadr (H, N,T)
2.1 - Détermination des niveaux min et max présents dans l'image
2.2 - Calcul de T (tabulée)
3- Génération de l'image transformée : GenereIm (IE, IS, NL, NC, T)
TD : RECADRAGE de la DYNAMIQUE TD : RECADRAGE de la DYNAMIQUE
jmax
1- Calcul de l'histogramme : Histo (I, NL, NC, H, N)
T void histo(image_t I, int NL, int NC, histo_t H, int N)
{ int k,l,c; //l,c : indices de lignes et de colonnes
for(k=0;k<=N; k++) H[k]=0;
jmin for (l=0; l<NL; l++)
imin imax N for (c=0; c<NC; c++)
H[ I[l][c] ]++; //ou {v:=I[l][c]; H[v]:=H[v]+1}
0 " i < imin : j =0 }
j # j min j i # j max imin void histo(image_t I, int NL, int NC, histo_t H, int N)
imin " i " imax : j = max $ i + min max
imax # imin imax # imin { int k;
long cp; // compteur de pixels
imax < i " N : j = N pixel_t *p = I; // image_t ~ pixel_t *
for(k=0;k<=N; k++) H[k]=0;
N for (cp=0; cp<NL*NC; cp++,p++)
le plus souvent : j= " (i ! imin )
imax ! imin H[*p]++;
! }
TD : RECADRAGE de la DYNAMIQUE TD : RECADRAGE de la DYNAMIQUE
A- détermination du min et du max 2- Calcul de f, fonction de transformation : Frecadr (H, N,T)
H N
on tabule : j= " (i ! imin )
imax ! imin
0 0 … 0 x x … x 0 … 0 void Frecadr(histo_t H, int N, ftab_t T)
{ int i, imin, imax;
0 imin imax N float f; // facteur constant
// détermination du min et du max
i=0; while(H[i]==0)i++; imin = i;
i=N; while(H[i]==0)i--; imax = i;
// calcul de T
if (imin==imax) for (i=0;i<=N;i++) T[i]=i;
else {
for (i=0; i<imin; i++) T[i]=0;
f= (float)N/(imax-imin);
for (i=imin; i<=imax; i++)
T[i]= round(f*(i-imin));//entier le plus proche
for (i=imax+1; i<=N; i++) T[i]=N;
}}
TD : RECADRAGE de la DYNAMIQUE variante GÉNÉRATION DE L'IMAGE TRANSFORMÉE
2- Calcul de f, fonction de transformation : Frecadr (H, N,T)
N La fonction de transformation est représentée par un tableau T
on tabule : j= " (i ! imin )
imax ! imin
e
imin imax
void Frecadr(histo_t H, int N, ftab_t T, int e) IE IS
T T
{ int i, imin, imax; N
c 0 j = T(i)
float f; // facteur constant
// détermination du min et du max
l • • j j
i=0; while(H[i]<e)i++; imin = i;
i i j
i=N; while(H[i]<e)i--; imax = i;
0
// calcul de T N 0 i
for (i=0; i<imin; i++) T[i]=0; (255) N
f= (float)N/(imax-imin);
for (i=imin; i<=imax; i++)
T[i]= round(f*(i-imin)); // entier le plus proche
for (i=imax+1; i<=N; i++) T[i]=N;
}
TD : RECADRAGE de la DYNAMIQUE AMÉLIORATION D’IMAGE
3- Génération de l'image transformée : GenereIm (IE, IS, NL, NC, T) Objectifs :
- augmentation du contraste
- renforcement des contours
void GenereIm(image_t IE, image_t IS, int NL, int NC, TRANSFORMATION d’HISTOGRAMME
ftab_t T)
{ long cp; PRINCIPE
pixel_t *pe = IE; // image_t ~ pixel_t * Appliquer une transformation monotone* T , j=T(i), telle que
pixel_t *ps = IS; la distribution des niveaux de l'image transformée ait une
for (cp=0; cp<NL*NC; cp++)
*ps++ = T[*pe++];
forme donnée : j i
}
T monotone => " g( j ! ) dj ! = " h(i !) di !
j min i min
j
" g( j ! ) dj ! = h ( i )
j min
c
* pour préserver l’ordre des niveaux de gris et donc éviter la création d’artefacts.
“ÉGALISATION” d’HISTOGRAMME “ÉGALISATION” d’HISTOGRAMME
I T J
Histo Histo
H G
0 i 255 jmin j jmax
1
g( j ) =
jmax ! jmin
“ÉGALISATION” d’HISTOGRAMME “ÉGALISATION” d’HISTOGRAMME
1
g( j ) = => j = ( jmax ! jmin ) "hc (i ) + jmin
jmax ! jmin
Continu Discret
h(i) : densité de probabilité Hn(i) : histogramme normalisé
hc(i) : fonction de répartition Hcn(i) : histogramme cumulé
(distribution cumulée) normalisé
On normalise en divisant H par Np
j = ( jmax ! jmin ) " Hcn (i ) + jmin Np : nombre de pixels de l'image.
H(i) représente alors la fréquence
d’apparition du niveau i
( jmax ! jmin )
j= " Hc (i ) + jmin
Np
AMELIORATION AMELIORATION (sic !)
• Égalisation d’histogramme • Égalisation d’histogramme
AMELIORATION ADAPTATION À L’OEIL :
TRANSFORMATION d’HISTOGRAMME
• Égalisation d’histogramme : effet sur l’image
kmax
(j ! j ) j=[Link](i) + b
j=T(i) : j = max min . Hc (i) + jmin kmin
Np
T a la même allure que Hc
j min j
max
H Hc G
hyperbolisation j modèle de réponse k
h(i)
de l'histogramme de l'œil
!j2
2 g(j) s(k)
!j1 1
!i1 !i2
j min j max kmin kmax
1: pente <1 : !j1< !i1 => regroupement dans les faibles populations
2 :pente >1 : !j2> !i2 => écartement dans les fortes populations
ADAPTATION À L’OEIL : SPÉCIFICATION d’HISTOGRAMME
TRANSFORMATION d’HISTOGRAMME
j J = Gc"1 ( H c ( I ))
I T J
" g( j ! ) dj ! = h (i )
j min
c
Histo !
Histo
Transformation 1 1
hyperbolique g( j) = " H G
ln( jmax ) ! ln ( jmin ) j
"j % h ( i)
c
Hc Gc
j = j min $ max ' k
k
$# j min '&
i j
AMELIORATION: augmentation du contraste AMELIORATION: mise en évidence d’information
MODIFICATION des STATISTIQUES de l ' IMAGE H
— ( A. ! + —
d
J xy = (I xy - I xy )* - + (" .m d + (1 ! " ). I xy ) i1 i2
) A.! xy + ! d , T N
j2
( — +2
2
! xy = . . * I kl ! I xy - variance calculée sur un
k,l/Vxy ) , voisinage de (x,y)
j2 - j1 > i2 - i1
0d et md = variance et moyenne désirées
A : facteur de gain pour contrôler les débordements
j1
1 = coefficient contrôlant le rapport contour-fond
Ixy = moyenne de I sur un voisinage de (x,y) i1 i2 N
0
TYPES DE TRAITEMENTS TRAITEMENT LOCAL
I x T J x I x T J x
y • y • j
Ponctuel i traitement
y • } y • j = T(Vxy )
j
ponctuel homogène
i= I(x,y) j = T(i,x,y) si j = T(i) En faisant intervenir les pixels voisins de (x,y), permet de :
I x T J x - restaurer une image dégradée
- corriger du bruit ou des parasites
Local y • } y • - renforcer ou supprimer des petits détails
j - détecter des structures locales (contours,…)
j = T(Vxy ) Paramètres : Implantation
- forme et taille du voisinage - séparable ou non
I T J x - poids des pixels voisins - problème des bords de l'image
Global
} y • j
Exemple : convolution par un filtre de taille [2w+1 x 2w+1]
+w +w
J(x,y) = ! ! h(k, l). I(x " k, y " l)
j = T( x,y ,I ) k= "w l=-w
AMELIORATION: accentuation des contours AMELIORATION: accentuation des contours
+w +w
Convolution J(x,y) = ! ! h(k, l). I(x " k, y " l)
k= "w l=-w
0 -1 0 -1 -1 -1 1 -2 1
par un masque passe-haut h = -1 5 -1 ou -1 9 -1 ou -2 5 -2
(w =1) 0 -1 0 -1 -1 -1 1 -2 1
2
1 •"•"• 4
•"•"•
•"•"• •"•"• •"•"•
•"•"• •"•"• •"•"•
•"•"• •"•"• •"•"•
•"•"•
3
V2
V1
coupe
1 23 4
AMELIORATION: accentuation des contours AMELIORATION: accentuation des contours
+w +w
+w +w
J(x,y) = ! ! h(k, l). I(x " k, y " l) J(x,y) =
Convolution
k= "w l=-w
Convolution ! ! h(k, l). I(x " k, y " l)
k= "w l=-w
(w =1) -1 0 1 par un masque passe-haut -1 0 1
-1 0 -1 0
(w =1) -1 0 -1 0
h 0 -1 5 -1 h 0 -1 5 -1
2 1 0 -1 0 2 1 0 -1 0
1 •"•"• 4 1 •"•"• 4
•"•"• I x-1,y-1 x,y-1 x+1,y-1 •"•"• I x-1,y-1 x,y-1 x+1,y-1
•"•"• •"•"• •"•"• x-1,y x,y x+1,y •"•"• •"•"• •"•"• x-1,y x,y x+1,y
•"•"• •"•"• •"•"• x-1,y+1 x,y+1 x+1,y+1 •"•"• •"•"• •"•"• x-1,y+1 x,y+1 x+1,y+1
•"•"• •"•"• •"•"• •"•"• •"•"• •"•"•
•"•"• •"•"•
3 3
V2 +(V2 - V1)
V2 V2
V1 V1
coupe coupe V1 -(V2 - V1)
1 23 4 1 23 4
AMELIORATION: accentuation des contours AMELIORATION: accentuation des contours
Détection des contours par le filtre
-1 -1 -1 Laplacien de Gaussienne : LG(0 )
h= -1 12 -1 Image :
-1 -1 -1 Contour séparant I
2 régions uniformes
LG :
Convolution par LG
!.I*LG(")
#!.I*LG(")
I - !.I*LG( ")
Filtre h appliqué 1 fois Filtre h appliqué 2 fois
AMÉLIORATION : Évaluation
Mesure du gain de contraste
Contraste C : (Imax-Imin) / (Imax + Imin)
ou Max(Vxy) - Min (Vxy)
Dilatation - Erosion (gradient morphologique)
Gain en contraste : Moyenne ( C(J) - C(I) ) I : originale
sur points contours
J : améliorée
Mesure de l'augmentation de la pente de transition
P = Moyenne ( C(J) / C(I) )
sur points contours
ou Moyenne (Grad (J) / Grad (I)
sur points contours