22.02.2015 Views

slides (pdf) - iusti

slides (pdf) - iusti

slides (pdf) - iusti

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!