slides (pdf) - iusti
slides (pdf) - iusti
slides (pdf) - iusti
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Cours vision 3<br />
• Traitement à base d’histogrammes<br />
• Filtrage de lissage<br />
• Filtrage dérivateur<br />
1
Amélioration<br />
I<br />
J<br />
f<br />
ponctuelles : J(x0,y0) = f [I(x0,y0)]<br />
Opération sur les histogrammes<br />
locales : J(x0,y0) = f [I(V)]<br />
V: voisinage de (x0,y0)<br />
Filtres,..<br />
globales : J(x,y) = f [I(x,y]<br />
Transformée de fourrier,..<br />
2
Histogramme des niveaux de gris<br />
L'histogramme d'une image représente le<br />
nombre des pixels en fonction du niveau de<br />
gris.<br />
L'histogramme normalisé représente la<br />
proportion de pixel en fonction du niveau de<br />
gris<br />
Le nombre pi est la proportion de pixel ayant<br />
pour niveau de gris I=i.<br />
3
Moyenne (brillance, luminance)<br />
B<br />
=<br />
1 N − x=<br />
0<br />
NM<br />
1 M −1<br />
∑∑<br />
y=<br />
0<br />
f<br />
( x,<br />
y)<br />
4
Contraste<br />
• Mesure relative des différences dans l'image<br />
autres définitions :<br />
C<br />
C<br />
=<br />
NM<br />
max<br />
max<br />
N M<br />
1 − 1 −1<br />
x=<br />
0 y=<br />
0<br />
= ∑∑<br />
( f ( x,<br />
y)<br />
− B)<br />
[ f ( x,<br />
y)<br />
] − min[ f ( x,<br />
y)<br />
]<br />
[ f ( x,<br />
y)<br />
] + min[ f ( x,<br />
y)<br />
]<br />
2<br />
5
Traitements à base d’histogramme<br />
(1) Normalisation<br />
exploiter toute la dynamique de codage<br />
(2) Égalisation<br />
equilibrer la dynamique de codage et augmenter le contraste<br />
(3) Segmentation<br />
simplifier l’image en regroupant les pixels selon leurs valeurs<br />
• Masquage de zone / fonctions de rehaussement<br />
• Variantes : Techniques appliquées localement<br />
6
Manipulation d’histogrammes<br />
Image originale<br />
décalage : Brillance<br />
Étirement : Contraste<br />
7
Histogramme : Normalisation<br />
8
Histogramme : Étirement de contraste<br />
Étirement de l'histogramme<br />
= amélioration du<br />
contraste<br />
min<br />
Niveau de gris avant<br />
transformation<br />
Niveau de gris après<br />
transformation<br />
max<br />
f<br />
255<br />
′ y<br />
max−<br />
min<br />
( x, y) = ( f ( x,<br />
) − min)<br />
Variantes<br />
• saturation (Smin max)<br />
• linéaires par morceaux…<br />
9
Exemple : Normalisation d’histogramme<br />
100<br />
100<br />
200<br />
200<br />
300<br />
300<br />
400<br />
400<br />
500<br />
500<br />
600<br />
100 200 300 400 500 600 700 800<br />
600<br />
100 200 300 400 500 600 700 800<br />
x 10 4 0 50 100 150 200 250<br />
x 10 4<br />
4.5<br />
4<br />
3.5<br />
3<br />
2.5<br />
2<br />
1.5<br />
1<br />
0.5<br />
0<br />
4.5<br />
4<br />
3.5<br />
3<br />
2.5<br />
2<br />
1.5<br />
1<br />
0.5<br />
0<br />
0 50 100 150 200 250<br />
10
Histogramme : Egalisation<br />
11
égalisation d'histogramme<br />
Consiste à calculer à partir de l'histogramme H I<br />
de l'image I une fonction de<br />
réhaussement des niveaux de gris f telle que l'image rehaussée J, définie par :<br />
J(p)=f( I(p) ) ait son histogramme H j<br />
se rapprochant le plus possible d'une<br />
fonction plate<br />
t<br />
[] = p[ j]<br />
C i<br />
∑<br />
j=<br />
0<br />
[ ], i ∈[ 0,255]<br />
h i<br />
Histogramme cumulé CI<br />
Densité de probabilité cumulative<br />
f<br />
F(g) = 255 x Ci(g)<br />
[ ]255 .<br />
( x, y) ≈ C f ( x,<br />
y)<br />
12
Egalisation : Cas discret<br />
n = 51<br />
NdeG = 7<br />
Arrondir C[f(x,y)] x 7 = ?<br />
10/51 * 7 = 1.37<br />
18/51 * 7 = 2.47<br />
27/51 * 7 = 3.7<br />
29/51 * 7 = 3.98<br />
43/51 * 7 = 5.90<br />
44/51 * 7 = 6.04<br />
49/51 * 7 = 6.73<br />
51/51 * 7 = 7<br />
Valeur moyenne idéale: 51<br />
pixels/8 Niveaux de gris<br />
13
Histogramme : Exemple Egalisation<br />
100<br />
100<br />
200<br />
200<br />
300<br />
300<br />
400<br />
400<br />
500<br />
500<br />
600<br />
100 200 300 400 500 600 700 800<br />
600<br />
100 200 300 400 500 600 700 800<br />
x 10 4<br />
x 10 4<br />
4.5<br />
4<br />
3.5<br />
3<br />
2.5<br />
2<br />
1.5<br />
1<br />
0.5<br />
0<br />
4.5<br />
4<br />
3.5<br />
3<br />
2.5<br />
2<br />
1.5<br />
1<br />
0.5<br />
0<br />
0 50 100 150 200 250<br />
0 50 100 150 200 250<br />
14
Exemple d'égalisation<br />
• L'effet de l'égalisation est de mettre à gauche de chaque niveau de gris un<br />
écart dont la taille est proportionnelle au nombre de points ayant ce niveau<br />
de gris dans l'image I<br />
• tout niveau de gris fortement représenté dans l'image se verra écarté des<br />
niveaux de gris plus sombres.<br />
• En pratique l'image aura un aspect où les zones claires, moyennes et<br />
sombres s'équilibreront<br />
15
Attention si l'image est déjà bien contrasté une<br />
égalisation peu dégrader l'image !!<br />
16
Égalisation appliquée localement<br />
Il est souvent nécessaire de rehausser localement les images<br />
17
Masquage de zones<br />
Remplace un intervalle de niveau de gris par du blanc (255) ou du noir (0)<br />
18
Fonctions de rehaussement<br />
Pour chaque pixel (x0,y0) de NdeG I(x0,y0) ∈ [0,M]<br />
J(x0,y0) = f [I(x0,y0)]<br />
(b) rehausse les bas niveaux de gris<br />
(h) rehausse les hauts niveaux de gris<br />
(m) rehausse les niveaux de gris moyens<br />
(e) rehausse les niveaux de gris extrêmes<br />
19
Utilisation de pseudo-couleurs<br />
100<br />
100<br />
200<br />
200<br />
300<br />
300<br />
400<br />
400<br />
500<br />
500<br />
600<br />
100 200 300 400 500 600 700 800<br />
600<br />
100 200 300 400 500 600 700 800<br />
255<br />
255<br />
255<br />
255<br />
Niveaux de gris<br />
20
Filtrage de lissage<br />
Les filtres de lissage sont des opérateurs qui éliminent des éléments pertubateurs / non significatifs<br />
dans les images numériques, soit pour améliorer leur visualisation, soit pour les simplifier en but<br />
d'un traitement postérieur<br />
bruit d'acquisition, de numérisation, de transmission<br />
bruit spatial fixe<br />
bruit de compression<br />
(1) Implantation des filtres linéaires<br />
(2) Filtres non linéaires<br />
(3) Filtrage dans le domaine de Fourier<br />
21
Convolution :<br />
Implantation des filtres linéaires<br />
transformées basées sur<br />
le voisinage d'un point<br />
Les nouvelles valeurs du pixel sont calculées par<br />
produit scalaire entre le noyau de convolution et<br />
le voisinage correspondant du pixel.<br />
effet de bord ?<br />
périodicité, miroir,extérieur=0, on ne filtre pas les bords, on enlève les bords<br />
22
Filtrage de lissage (linéaires)<br />
Principe: INTEGRATION (sommation)<br />
• Filtre de moyenne<br />
• Filtre gaussien<br />
• Filtre pyramidal, filtre conique<br />
23
Filtrage de lissage : moyenne<br />
j<br />
j<br />
NdG<br />
i 0<br />
i 0<br />
j<br />
i<br />
i<br />
lissage (flou apparent)<br />
1/16 x<br />
1 1 1 1<br />
1 1 1 1<br />
1 1 1 1<br />
1 1 1 1<br />
Plus le filtre grossit plus le lissage<br />
devient important, et plus le flou<br />
s'accentue<br />
Normalisé<br />
(résultat divisé par la somme des poids w i )<br />
24
Filtrage de lissage : Gaussien<br />
gauss<br />
( i j)<br />
=<br />
1<br />
2Πσ<br />
× e<br />
2 2<br />
( i + j )<br />
2σ<br />
,<br />
2<br />
Fonction gaussienne (normalisée) 2D<br />
−<br />
2<br />
Taille du filtre idéal :<br />
5σ x 5σ<br />
1 2 1<br />
1/16 x Cas discret : (σ=0.6)<br />
2 4 2<br />
1 2 1<br />
1 9 18 9 1<br />
9 81 162 81 9<br />
1/1444 x<br />
18 162 324 162 18<br />
Cas discret : (σ=1)<br />
9 81 162 81 9<br />
1<br />
9 18 9 1<br />
25
Filtrage de lissage : pyramidal, conique<br />
• Pyramidal 2D<br />
Filtre pyramidal 1D rapide sur les<br />
lignes et sur les colonnes<br />
séparément<br />
1/81 x<br />
0 0 1 0 0<br />
1 2 3 2 1<br />
2 4 6 4 2<br />
3 6 9 6 3<br />
2 4 6 4 2<br />
1 2 3 2 1<br />
• Conique<br />
1/25 x<br />
0 2 2 2 0<br />
1 2 5 2 1<br />
0 2 2 2 0<br />
0<br />
0 1 0 0<br />
• Exemple de combinaision de filtres (passe bas)<br />
1/35 x<br />
1 1 1 1 1<br />
1 2 2 2 1<br />
1 2 3 2 1<br />
1 2 2 2 1<br />
1 1 1 1 1<br />
1 1 1 1 1<br />
1 1 1 1 1<br />
= 1/35 x 1 1 1 1 1 +<br />
1 1 1 1 1<br />
1 1 1 1 1<br />
1 1 1<br />
1 1 1<br />
1 1 1<br />
+<br />
1<br />
26
Filtres non linéaires<br />
27
Filtres non linéaires : Filtre Médian<br />
bloc 3x3 de l'image<br />
30 10 20<br />
10 250 25<br />
20 25 30<br />
Rangement des valeurs de<br />
NdG dans l'ordre croissant<br />
0, 1, 2, 3, 4, 5, 6, 7, 8<br />
10, 10, 20, 20, 25, 25, 30, 30, 250<br />
médiane = 25<br />
Moyenne = 47 à<br />
cause du 250<br />
Filtre utile pour un bruit du type Poivre et Sel (0 et 255)<br />
Image bruitée Moyenne 3x3 Moyenne 5x5 Moyenne 7x7 Médiane 3x3<br />
28
Filtres non linéaires : Filtre adaptatif<br />
si |filtre PB [I(x,y)] - I(x,y)| < T<br />
J(x,y) = filtre PB [I(x,y)]<br />
Sinon<br />
J(x,y) = I(x,y)<br />
29
Filtres non linéaires : Filtre de Nagano<br />
30
Filtres Dérivatifs :<br />
Filtres passe-haut (PH)<br />
Mise en évidence des contours<br />
Principe: DERIVATION (différence)<br />
• Filtre passe-haut et filtre passe-bas<br />
• Opération mathématique sur les filtres<br />
• Filtres différentiels et applications<br />
31
Opération sur les filtres de voisinage<br />
(a) passe-bas<br />
1/35 x<br />
1 1 1 1 1<br />
1 2 2 2 1<br />
1 2 3 2 1<br />
1 2 2 2 1<br />
1 1 1 1 1<br />
1 1 1 1 1<br />
1 1 1 1 1<br />
= 1/35 x 1 1 1 1 1 +<br />
1 1 1 1 1<br />
1 1 1 1 1<br />
1 1 1<br />
1 1 1<br />
1 1 1<br />
+<br />
1<br />
(b) passe-haut<br />
1/25 x<br />
-1 -1 -1 -1 -1<br />
-1 -1 -1 -1 -1<br />
-1 -1 24 -1 -1<br />
-1 -1 -1 -1 -1<br />
-1 -1 -1 -1 -1<br />
1 1 1 1 1<br />
1 1 1 1 1<br />
= 1/25 x - 1 1 1 1 1 + 25<br />
1 1 1 1 1<br />
1 1 1 1 1<br />
32
Filtres passe-haut<br />
à partir d'un passe-bas<br />
- =<br />
passe-bas<br />
passe-haut<br />
1/49 x<br />
1 1 1 1 1 1 1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1/49 x<br />
-1 -1 -1 -1 -1 -1 -1<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
48<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
-1<br />
1 1 1 1 1 1 1<br />
-1 -1 -1 -1 -1 -1 -1<br />
1 1 1 1 1 1 1<br />
1 1 1 1 1 1 1<br />
-1 -1 -1 -1 -1 -1 -1<br />
-1 -1 -1 -1 -1 -1 -1<br />
33
Le gradient<br />
∂f<br />
∂x<br />
∂f<br />
∂y<br />
=<br />
=<br />
lim<br />
lim<br />
h→0<br />
h→0<br />
f<br />
f<br />
( x + h,<br />
y) − f ( x − h,<br />
y) f ( x + 1, y) − f ( x −1,<br />
y)<br />
2h<br />
( x,<br />
y + h) − f ( x,<br />
y − h) f ( x,<br />
y + 1) − f ( x,<br />
y −1)<br />
2h<br />
≈<br />
≈<br />
2<br />
2<br />
∂f<br />
∂x<br />
∂f<br />
∂y<br />
=<br />
=<br />
lim<br />
lim<br />
h→0<br />
h→0<br />
f<br />
f<br />
( x + h,<br />
y) − f ( x,<br />
y)<br />
h<br />
( x,<br />
y + h) − f ( x,<br />
y)<br />
h<br />
≈<br />
≈<br />
f<br />
f<br />
( x + 1, y) − f ( x,<br />
y)<br />
( x,<br />
y + 1) − f ( x,<br />
y)<br />
34
Filtre de Roberts, Prewitt et Sobel<br />
Roberts (Gradient croisé)<br />
0 0 0<br />
0<br />
0<br />
1 0<br />
0 -1<br />
Image<br />
0 0 0<br />
∂ f<br />
= ( − )<br />
= ( z )<br />
0 0 1<br />
6<br />
− z 8<br />
∂y<br />
z1 z2 z3<br />
z4 z5 z6<br />
z7 z8 z9<br />
z 5<br />
z 9<br />
z x valeur du<br />
niveau de gris<br />
0<br />
-1 0<br />
∂f<br />
∂x<br />
∇f<br />
≈<br />
∂f<br />
∂x<br />
+<br />
∂f<br />
∂y<br />
Approximation du<br />
module du gradient<br />
Prewitt<br />
-1 -1 -1<br />
0 0 0<br />
1 1 1<br />
∂<br />
∂<br />
⎡ ( z7<br />
+ z8<br />
+ z )<br />
-1 0 1<br />
f 9<br />
( ) ⎥ ⎤<br />
=<br />
∂f<br />
⎡ ( z3<br />
+ z6<br />
+ z9<br />
)<br />
⎢<br />
y ⎣−<br />
z1<br />
+ z2<br />
+ z3<br />
⎦<br />
( ) ⎥ ⎤<br />
-1 0 1 = ⎢<br />
∂x<br />
− z1<br />
+ z4<br />
+ z7<br />
⎦<br />
-1 0 1<br />
⎣<br />
Sobel<br />
-1 -2 -1<br />
0 0 0<br />
1 2 1<br />
∂<br />
∂<br />
-1 0 1<br />
f ⎡ ( z7<br />
+ 2z8<br />
+ z9<br />
)<br />
( ) ⎥ ⎤<br />
∂f<br />
⎡ ( z3<br />
+ 2z6<br />
+ z9<br />
)<br />
= ⎢<br />
y ⎣−<br />
z1<br />
+ 2z2<br />
+ z3<br />
⎦<br />
( ) ⎥ ⎤<br />
-2 0 2 = ⎢<br />
∂x<br />
− z1<br />
+ 2z4<br />
+ z7<br />
⎦<br />
-1 0 1<br />
⎣<br />
35
(a) Image originale<br />
(b) |gradient| masque de Prewitt<br />
(c) Image originale dont<br />
les pixels ayant un<br />
|gradient|>10%I max<br />
=25<br />
sont mis à 255<br />
(d) Idem à (c) sauf<br />
|gradient|
∂f<br />
=<br />
=<br />
2<br />
∂<br />
( x,<br />
y)<br />
2<br />
x<br />
= f ′′<br />
Laplacien<br />
( x,<br />
y) = f ′( x + 1, y) − f ′( x,<br />
y)<br />
[ f ( x + 1, y) − f ( x,<br />
y)<br />
] − [ f ( x,<br />
y) − f ( x −1,<br />
y)<br />
]<br />
f ( x + 1, y) − 2 f ( x,<br />
y) + f ( x −1,<br />
y)<br />
∇<br />
2<br />
2<br />
⎛ ∂<br />
=<br />
⎜<br />
2<br />
⎝ ∂ x<br />
+<br />
∂<br />
∂<br />
2<br />
⎞<br />
⎟<br />
y ⎠<br />
2<br />
1<br />
Convolution avec (1,-2,1) + -2 =<br />
1<br />
0 1 0<br />
1 -4 1<br />
0 1 0<br />
Autres formes<br />
0 -1 0<br />
-1 4 -1<br />
0 -1 0<br />
-1 -1 -1<br />
-1 8 -1<br />
-1 -1 -1<br />
37
Rehaussement des contours avec le Laplacien<br />
Edge image<br />
f<br />
( x)<br />
1st derivative<br />
∂f<br />
∂x<br />
2ndt derivative<br />
(laplacian)<br />
2<br />
∂f<br />
2<br />
∂ x<br />
−<br />
2<br />
∂f<br />
2<br />
∂ x<br />
( x)<br />
2<br />
∂f<br />
∂ x<br />
f −<br />
2<br />
38
Filtre de Mahr-Hildreth<br />
(filtre passe-bande)<br />
∇<br />
2<br />
( G * f ) = ∇<br />
2 G * f<br />
• On filtre d'abord l'image avec un filtre Gaussien G<br />
• Le but est de réduire le bruit associé aux filtres différentiels et de<br />
faciliter la détection du passage par zero (contour)<br />
39
Exemple : Filtre de Mahr-Hildreth<br />
40
Différence de 2 gaussiennes<br />
≈ Laplacien d'une gaussienne<br />
41
Laplacien de la Gaussienne<br />
exemple<br />
Image originale<br />
(320x320 pixels)<br />
Convolution de l'image avec<br />
le Laplacien de G<br />
(montre seulement les<br />
passage par 0 en noir)<br />
42