26.07.2013 Views

Cours de traitement des images - lambert veller sylvain

Cours de traitement des images - lambert veller sylvain

Cours de traitement des images - lambert veller sylvain

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Cours</strong> <strong>de</strong> <strong>traitement</strong> <strong>de</strong>s <strong>images</strong><br />

CM 2 – Céline Rou<strong>de</strong>t<br />

Thèmes abordés :<br />

1. Types <strong>de</strong> bruit<br />

2. Amélioration d’<strong>images</strong> par filtrage<br />

3. Détection <strong>de</strong> contours<br />

Différents <strong>traitement</strong>s<br />

SCENE ORIGINALE<br />

CAPTEURS IMAGE<br />

TRAITEMENT<br />

BAS-NIVEAU<br />

SEGMENTATION<br />

- Régions<br />

- Contours<br />

TRAITEMENT<br />

IMAGE<br />

ANALOG.<br />

NUMERISATION<br />

PRE-TRAITEMENTS<br />

-Restauration<br />

-Amélioration (filtrage,<br />

rehaussement)<br />

CODAGE<br />

- Freeman<br />

- Compression<br />

IMAGE NUMERIQUE<br />

MORPHOLOGIE<br />

MATHEMATIQUE<br />

- Erosion<br />

- Dilatation<br />

HAUT-NIVEAU<br />

CALCULS GEOMETRIQUES<br />

RECONNAISSANCE DE FORMES<br />

2<br />

1<br />

1


Pré-<strong>traitement</strong>s d’une image<br />

Objectif : gommer avant <strong>traitement</strong> :<br />

• les artefacts, l’aliasing<br />

• les effets d’une mauvaise condition d’observation<br />

Outils :<br />

(éclairage trop faible ou trop fort),<br />

• les défauts d’un capteur (flou),<br />

• les poussières, rayures, … (bruit)<br />

• Modification d’histogramme<br />

• Rehaussement du contraste<br />

• Filtrage du bruit<br />

Fonction <strong>de</strong> transfert <strong>de</strong> modulation (FTM)<br />

Les défauts <strong>de</strong>s systèmes optiques ren<strong>de</strong>nt floue l’image<br />

Quantitativement : phénomène mesuré par la FTM :<br />

• décrit la perte <strong>de</strong> contraste <strong>de</strong> l’objet en fonction <strong>de</strong><br />

sa fréquence spatiale<br />

• se mesure à l’ai<strong>de</strong> d’une mire <strong>de</strong> test projetée :<br />

I(x,y) = C 0 sin(2πf xx)<br />

• le contraste résultant C est mesuré pour différentes<br />

fréquences f.<br />

• le rapport C(f) / C 0 représente la FTM<br />

3<br />

4<br />

2


Entrée capteur<br />

Sortie capteur<br />

Entrée capteur<br />

Sortie capteur<br />

Mire Profil d’une ligne<br />

Mire F = 0.1 Profil d’une ligne<br />

C 0 = 128<br />

C (0.1) = 75<br />

FTM(0.1) =<br />

75 / 128 = 0.58<br />

5<br />

6<br />

3


Temps d’intégration<br />

Augmenter le temps d’intégration ou le temps d’exposition<br />

augmente la quantité <strong>de</strong> photons enregistré pour chaque pixel<br />

-> diminue le bruit aléatoire (+ <strong>de</strong> signal)<br />

-> augmente la dynamique<br />

Attention à la saturation<br />

Dynamique<br />

TI = 30ms TI = 60ms<br />

Faible éclairage ou temps d’intégration trop faible<br />

-> image sombre, dynamique faible<br />

7<br />

8<br />

4


Le bruit<br />

1. Types <strong>de</strong> bruit<br />

Sources <strong>de</strong> bruit :<br />

Bruits aléatoires : détecteurs qui chauffent,<br />

amplificateurs, quantification,<br />

faible signal (faible éclairage)<br />

Bruits constants : différence <strong>de</strong> sensibilité <strong>de</strong>s détecteurs<br />

Caractéristiques du bruit :<br />

- Hautes fréquences<br />

scène : poussières, rayures<br />

- Aléatoire, centré, additif, multiplicatif ou convolutif<br />

9<br />

10<br />

5


Comment séparer le bruit aléatoire du bruit constant ?<br />

Phénomène parasite aléatoire (suivant une distribution<br />

<strong>de</strong> probabilité connue ou non)<br />

Bruit constant (systémique) :<br />

Acquérir plusieurs <strong>images</strong> (M 0, M 1, M 2, … M n)<br />

d’une zone homogène et les moyenner :<br />

Bc = 1/n Σ Mi i=1…n<br />

Bruit aléatoire :<br />

Ba = M 0 - Bc<br />

Modèles <strong>de</strong> bruit d’image<br />

Densité <strong>de</strong> probabilité<br />

Bruit uniforme, α = 0<br />

Bruit exponentiel, α = 1<br />

ou impulsionnel<br />

Bruit gaussien, α = 2<br />

f ( a)<br />

= C.<br />

e<br />

f ( a)<br />

= C.<br />

e<br />

−k<br />

f ( a)<br />

= C.<br />

e<br />

f ( a)<br />

= C.<br />

e<br />

C et K : constantes <strong>de</strong> normalisation liées à la variance<br />

−k<br />

α<br />

a<br />

−k<br />

a<br />

−k<br />

a<br />

2<br />

f(a)<br />

f(a)<br />

0<br />

f(a)<br />

C<br />

0<br />

0<br />

a<br />

a<br />

a<br />

11<br />

12<br />

6


Bruit gaussien<br />

Ajoute un "grain" à l'image, et détériore certains contours (la joue se détache<br />

moins du fond). Les détails fins sont encore visibles (ex : les <strong>de</strong>nts)<br />

Bruit impulsionnel<br />

13<br />

14<br />

7


Types <strong>de</strong> bruit<br />

Bruit additif : A = g+B (plupart <strong>de</strong>s cas)<br />

aléatoire, HF et centré<br />

A : image à traiter,<br />

g : information utile,<br />

B : champ aléatoire = bruit<br />

Bruit multiplicatif : A = g.B (speckle image radar,<br />

« grain » grains sur les films)<br />

Bruit convolutif (flou) : A = g*B (mauvaise mise au point,<br />

fréquence plus basse effet <strong>de</strong> bougé,<br />

turbulence atmosphér.)<br />

Types <strong>de</strong> bruit<br />

Bruit additif<br />

15<br />

16<br />

8


Types <strong>de</strong> bruit<br />

Le flou<br />

Bruit multiplicatif<br />

17<br />

18<br />

9


Types <strong>de</strong> flou<br />

Types <strong>de</strong> flou<br />

Flou <strong>de</strong> mise au point<br />

Flou <strong>de</strong> bougé (objets et/ou caméras mobiles<br />

filé ou temps d’intégration trop long)<br />

19<br />

20<br />

10


2. Filtrage spatial<br />

Pourquoi filtrer une image ?<br />

• Pour réduire le bruit dans l’image<br />

• Pour détecter les contours d’une image<br />

Principe : convolution entre une image A et un filtre h, appelé<br />

aussi masque <strong>de</strong> convolution<br />

Opération <strong>de</strong> voisinage : combinaison linéaire (ou non) <strong>de</strong><br />

pixels <strong>de</strong> l’image A, produisant une nouvelle image C<br />

• h : opérateur défini en chaque pixel et son voisinage<br />

• types <strong>de</strong> filtrage :<br />

- linéaire<br />

- non linéaire<br />

- adaptatif<br />

21<br />

22<br />

11


Filtres linéaires stationnaires (spatiaux)<br />

A(m,n)<br />

A = g+B<br />

on considère que<br />

le bruit est additif<br />

Propriétés :<br />

h<br />

C(m,n) Convolution C = h*A<br />

C[<br />

m,<br />

n]<br />

h[<br />

i,<br />

j].<br />

A[<br />

m − i,<br />

n − j]<br />

= ∑ ∑<br />

i j<br />

C = h*A = A*h (commutativité)<br />

C*(A+B) = C*A + C*B (distributivité)<br />

(C*A)*B = C*(A*B) (associativité)<br />

h : noyau <strong>de</strong> convolution ou filtre<br />

h est normalisé<br />

Filtres vs masques<br />

∑ ∑<br />

i j<br />

h[<br />

i,<br />

j ] = 1<br />

C [ m , n ] h[<br />

i,<br />

j].<br />

A[<br />

m − i,<br />

n − j ]<br />

= ∑ ∑<br />

i j<br />

On définit la notion <strong>de</strong> masque <strong>de</strong> convolution h à partir<br />

d'une symétrie centrale appliquée à h : ~<br />

h(m,n) = h(-m,-n)<br />

~<br />

23<br />

Le plus souvent, les opérateurs<br />

discrets sont donnés sous forme<br />

<strong>de</strong> masque<br />

24<br />

12


Filtres linéaires stationnaires : exemples<br />

Filtres linéaires stationnaires : exemples<br />

*<br />

Comment faire quand le masque recouvre <strong>de</strong>s zones en <strong>de</strong>hors <strong>de</strong> l’image ?<br />

• Convolution linéaire : on considère que l’image est entourée <strong>de</strong> noir (0)<br />

• Convolution circulante : on considère que l’image est entourée d’elle<br />

même (i.e. support infini <strong>de</strong> l’image)<br />

*<br />

25<br />

26<br />

13


Filtres linéaires stationnaires : passe-bas<br />

Filtres passe-bas : coefficients tous positifs<br />

« Adoucit » l’image : remplacement <strong>de</strong>s pixels par une<br />

moyenne arithmétique pondérée <strong>de</strong>s niveaux <strong>de</strong>s pixels voisins<br />

Le coef. central est plus important que les coef. périphériques<br />

Fréq. : multiplication<br />

avec une fonction porte<br />

Filtres linéaires stationnaires : passe-haut<br />

Filtres passe-haut : coef. positifs et négatifs<br />

Spatial : convolution<br />

avec un sinus cardinal<br />

« Durcit » l’image : mise en valeur <strong>de</strong>s détails (hautes fréq.)<br />

Rehausseur <strong>de</strong> contours<br />

27<br />

28<br />

14


Filtre moyenneur : passe-bas<br />

h(x,y) = 1 / T²<br />

(avec T taille du filtre)<br />

A<br />

Si T = 3 :<br />

⎡1<br />

1<br />

h =<br />

⎢<br />

⎢<br />

1<br />

9<br />

⎢⎣<br />

1<br />

• si l’image contient un bruit<br />

• et la valeur d’un pixel est relativement similaire à celle <strong>de</strong> ses<br />

voisins<br />

Un moyennage local peut atténuer ce bruit = lissage<br />

1<br />

1<br />

1<br />

C<br />

1⎤<br />

1<br />

⎥<br />

⎥<br />

1⎥⎦<br />

+ T est grand,<br />

+ le lissage<br />

est important,<br />

29<br />

+ l’image filtrée<br />

perd les détails<br />

<strong>de</strong> l’image orig.<br />

30<br />

15


Filtre gaussien : passe-bas<br />

1<br />

h(<br />

x,<br />

y)<br />

= e<br />

2πσ<br />

²<br />

( x²<br />

+ y²)<br />

−<br />

2σ<br />

²<br />

⎡ e<br />

1 ⎢<br />

h =<br />

2πσ<br />

²<br />

⎢e<br />

⎢<br />

⎣<br />

e<br />

−2/<br />

σ ²<br />

−1/<br />

2σ<br />

²<br />

−2<br />

/ σ ²<br />

e<br />

e<br />

−1/<br />

2σ<br />

²<br />

1<br />

−1/<br />

2σ<br />

²<br />

e<br />

e<br />

−2/<br />

σ ²<br />

−1/<br />

2σ<br />

²<br />

e<br />

−2<br />

/ σ ²<br />

Approximation discrète d’un noyau<br />

gaussien <strong>de</strong> taille T = 3<br />

noyau gaussien centré et<br />

d’écart-type σ ensemble <strong>de</strong> coef. qui sont <strong>de</strong>s<br />

échantillons <strong>de</strong> la gaussienne 2D<br />

Approximation discrète du noyau gaussien<br />

• Lissage par moyennage pondéré <strong>de</strong> l’image en fonction <strong>de</strong> la<br />

distance du pixel voisin<br />

• La largeur du filtre est donnée par son écart-type σ<br />

o si σ < un pixel : le lissage n’a presque pas d’effet<br />

o plus σ est grand, plus on réduit le bruit, mais plus l’image filtrée est<br />

floue<br />

o si σ est trop grand, tous les détails <strong>de</strong> l’image sont perdus<br />

Trouver un compromis entre :<br />

• quantité <strong>de</strong> bruit à enlever<br />

• qualité <strong>de</strong> l’image en sortie<br />

⎤<br />

⎥<br />

⎥<br />

⎥<br />

⎦<br />

31<br />

32<br />

16


Filtre gaussien : exemple<br />

Filtre gaussien : exemple<br />

33<br />

34<br />

17


Filtre gaussien : exemple<br />

Filtre gaussien : exemple<br />

1<br />

2πσ<br />

x<br />

σ σ<br />

x<br />

u<br />

1<br />

35<br />

36<br />

18


19<br />

37<br />

)<br />

(<br />

2<br />

4<br />

)<br />

,<br />

(<br />

y<br />

x<br />

e<br />

y<br />

x<br />

h<br />

+<br />

−<br />

=<br />

γ<br />

γ<br />

⎥<br />

⎥<br />

⎥<br />

⎦<br />

⎤<br />

⎢<br />

⎢<br />

⎢<br />

⎣<br />

⎡<br />

=<br />

−<br />

−<br />

−<br />

−<br />

−<br />

−<br />

−<br />

−<br />

γ<br />

γ<br />

γ<br />

γ<br />

γ<br />

γ<br />

γ<br />

γ<br />

γ<br />

2<br />

2<br />

2<br />

2<br />

2<br />

1<br />

4<br />

e<br />

e<br />

e<br />

e<br />

e<br />

e<br />

e<br />

e<br />

h<br />

Filtre exponentiel : passe-bas<br />

38<br />

Comparaison <strong>de</strong>s différents filtres


Filtres linéaires stationnaires : inconvénients<br />

• Etalent les transitions : donc ajoutent du flou et<br />

atténuent les contours<br />

• Eliminent mal les valeurs aberrantes (bruit<br />

impulsionnel)<br />

• Comment éliminer le bruit sans rendre floues les<br />

frontières ?<br />

o compromis niveau <strong>de</strong> bruit / lissage<br />

o ou recours aux filtres non linéaires<br />

o ou au filtrage fréquentiel<br />

Applet (application <strong>de</strong> filtres en 1D) : http://www.falstad.com/dfilter/<br />

Filtres non linéaires stationnaires : filtres d’ordre<br />

L-Filtre :<br />

• dans une fenêtre d’analyse <strong>de</strong> taille M*N (impairs),<br />

centrée sur i,j<br />

• on numérote <strong>de</strong> 1 à L = M*N les pixels a = { a k | k=1…L }<br />

• on trie les éléments <strong>de</strong> a par ordre croissant (perte <strong>de</strong><br />

l’information spatiale)<br />

A [i,j]<br />

Fenêtre<br />

d’analyse<br />

a k<br />

Tri<br />

a’ k<br />

Combinaison<br />

Linéaire<br />

Coef b k<br />

C[i,j]<br />

C<br />

M N<br />

[ ] = ∑<br />

k =<br />

j i<br />

*<br />

,<br />

1<br />

b<br />

k k a<br />

39<br />

'<br />

40<br />

20


Filtre médian<br />

C<br />

M N<br />

[ ] = ∑<br />

k =<br />

j i<br />

*<br />

,<br />

1<br />

b<br />

k k a<br />

Remplacer la valeur d’un pixel par la<br />

médiane <strong>de</strong> ses voisins :<br />

Filtre médian<br />

'<br />

b k = 1 pour k = (L+1) / 2<br />

0 ailleurs<br />

<strong>de</strong> taille impaire<br />

(L = M*N)<br />

Elimine très bien le bruit impulsionnel (ou « poivre et sel ») : dégradation<br />

<strong>de</strong> l'image où certains pixels <strong>de</strong>viennent aléatoirement soit blancs, soit noirs<br />

41<br />

42<br />

21


Filtre médian<br />

Conserve les transitions et rapi<strong>de</strong><br />

mais modifie la forme <strong>de</strong>s régions<br />

Filtre médian vs filtre linéaire (bruit impulsionnel)<br />

43<br />

44<br />

22


Filtre médian vs filtre linéaire (bruit impulsionnel)<br />

le lissage linéaire n'élimine pas le bruit poivre et sel, mais a plutôt<br />

tendance à « l'étaler »<br />

Filtre médian vs filtre linéaire (bruit impulsionnel)<br />

Grâce à la propriété <strong>de</strong> la médiane d'être, contrairement à la moyenne,<br />

quasiment insensible aux valeurs extrêmes<br />

45<br />

46<br />

23


Filtre médian (griffes noires et blanches)<br />

Filtre médian (griffes noires et blanches)<br />

47<br />

48<br />

24


Filtres non linéaires stationnaires : filtres adaptatifs<br />

Objectif : ajuster la structure ou les coefficients :<br />

• dans une région : filtrer fortement (large fenêtre)<br />

• sur un contour : éviter <strong>de</strong> l’élargir (petite fenêtre ou filtre médian)<br />

2 étapes : décision, filtrage<br />

Ex. Moyenne adaptative :<br />

C[<br />

i,<br />

j]<br />

L<br />

∑<br />

k = 1 = L<br />

∑<br />

k = 1<br />

w(x) = 1 si |x| ≤ seuil (conseillé à 2σ B ou 3σ B)<br />

0 sinon<br />

w(<br />

a<br />

k<br />

w(<br />

a<br />

− A[<br />

i,<br />

j])<br />

a<br />

k<br />

− A[<br />

i,<br />

j])<br />

Si région, filtre moyenneur,<br />

Si contour, le filtre ne tient compte que <strong>de</strong>s pixels situés<br />

d’un coté du contour<br />

Filtres non linéaires stationnaires : filtres adaptatifs<br />

Autres filtres adaptatifs :<br />

• Filtre <strong>de</strong> rang adaptatif<br />

• Moyenne tronquée adaptative<br />

• Filtrage par fractionnement <strong>de</strong> fenêtre d’analyse<br />

k<br />

49<br />

50<br />

25


Filtres séparables<br />

Un filtre <strong>de</strong> convolution est dit séparable si : h(x,y) = h x(x).h y(y)<br />

Cette structure simplifie gran<strong>de</strong>ment les calculs.<br />

3. Filtrage fréquentiel<br />

51<br />

52<br />

26


Signaux 1D, 2D et 2D+t<br />

- Signal 1D : amplitu<strong>de</strong> <strong>de</strong>s variations du signal (tension,<br />

courant, pression, …) en fonction du Temps (t)<br />

- Image (2D) : amplitu<strong>de</strong> <strong>de</strong>s variations <strong>de</strong> l’Image (niveaux <strong>de</strong><br />

gris) en fonction <strong>de</strong>s variables Spatiales (X,Y)<br />

- Plusieurs Images(vidéo) : amplitu<strong>de</strong> <strong>de</strong>s variations <strong>de</strong> l’Image<br />

(niveaux <strong>de</strong> gris) en fonction <strong>de</strong>s variables Spatiales et Temps<br />

(X,Y, t)<br />

Trois cas <strong>de</strong> signaux (1D)<br />

S 1(t)<br />

S 2(t)<br />

S 0(t)<br />

T 0 = 1 / f 0<br />

T 1 = 1 / f 1<br />

T 2 = 1 / f 2<br />

t<br />

avec :<br />

S 0 = amplitu<strong>de</strong> du signal<br />

T 0 = pério<strong>de</strong> du signal<br />

f 0 = fréquence du signal<br />

S1 présente <strong>de</strong> nombreuses variations:<br />

T1 > f0 Donc f1 correspond<br />

t<br />

aux hautes fréquences<br />

t<br />

S 2 ne présente aucune variation :<br />

T 2 est infinie et f 2 = 0<br />

Donc f 2 correspond<br />

aux très basses fréquences (ici 0!)<br />

53<br />

54<br />

27


Fréquences et <strong>images</strong><br />

* Faibles variations en niveaux <strong>de</strong> gris (ex : Fond Image)<br />

Basses Fréquences<br />

* Gran<strong>de</strong>s variations en niveaux <strong>de</strong> gris (ex : Contours, Bruit)<br />

Hautes Fréquences<br />

* Représentation fréquentielle obtenue avec la<br />

TRANSFORMEE <strong>de</strong> FOURIER 2D<br />

* Avantage: Représentation dans domaine spatial<br />

Filtrage = Convolution : g(x,y) = h(x,y)*f(x,y)<br />

* Représentation dans domaine fréquentiel<br />

Filtrage = Simple Multiplication : G(u,v) = H(u,v).F(u,v)<br />

TF d’une Image Numérique comportant M.N pixels<br />

1 1 1<br />

( , ) = ∑∑ ( , ). exp( − 2Π(<br />

+ ))<br />

− M N −<br />

ux vy<br />

F u v<br />

f x y j<br />

MN<br />

M N<br />

avec u<br />

Correspond à un Signal Numérique 2D<br />

x=<br />

0 y=<br />

0<br />

= 0,<br />

1,<br />

2,...,<br />

M −1<br />

Correspond<br />

avecFFT2D<br />

:<br />

Exemple :<br />

à<br />

M<br />

2<br />

et<br />

.N<br />

2<br />

2<br />

v = 0,<br />

1,<br />

2,...,<br />

N −1<br />

calculs<br />

MLog ( M).<br />

NLog ( N)<br />

M =<br />

N = 512<br />

Transformée<br />

<strong>de</strong> Fourier Standard :<br />

Transformée<br />

<strong>de</strong> Fourier Rapi<strong>de</strong> (FFT) :<br />

2<br />

≈ 64.<br />

10<br />

9<br />

≈16.<br />

10<br />

calculs<br />

calculs<br />

6<br />

calculs<br />

55<br />

56<br />

28


Filtre Idéal dans le domaine Fréquentiel<br />

G(u,v) = H(u,v).F(u,v) avec : G(u,v) : Image Filtrée<br />

Principe : Gar<strong>de</strong>r / supprimer <strong>de</strong>s<br />

fréq. du signal à l’ai<strong>de</strong> d’un filtre<br />

Filtre Passe-Bas Idéal :<br />

G(u,v) = F(u,v) si (u,v) < (u0,v0)<br />

Filtre Passe-Haut Idéal :<br />

G(u,v) = F(u,v) si (u,v) > (u0,v0)<br />

Exemple <strong>de</strong> filtre passe-bas<br />

Image Bruitée Originale f(x,y)<br />

Image Filtrée g(x,y)<br />

FFT-2D<br />

F(u,v) : Image Originale<br />

H(u,v) : Filtre (domaine fréq.)<br />

1<br />

1<br />

Hautes<br />

Fréquences = 0<br />

FFT-2D Inverse<br />

H(u,v)<br />

(u0,v0)<br />

H(u,v)<br />

(u0,v0)<br />

(u0,v0) : Fréquences<br />

<strong>de</strong> Coupure<br />

(u,v)<br />

(u,v)<br />

Spectre F(u,v)<br />

Spectre après filtrage G(u,v)<br />

58<br />

57<br />

58<br />

29


Exemple <strong>de</strong> filtre passe-bas<br />

Hautes-fréq. éliminées :<br />

changements brusques<br />

d’intensité (bruit, frontières,<br />

atténués voire éliminés<br />

Etalement <strong>de</strong>s frontières<br />

Exemple <strong>de</strong> filtre passe-haut<br />

L’image reconstruite n’a plus ses couleurs,<br />

mais les changements brusques d’intensité (bruit,<br />

frontières, ...) sont mis en évi<strong>de</strong>nce<br />

59<br />

60<br />

30


Filtrage passe-haut : très sensible au bruit<br />

Exemple <strong>de</strong> filtre coupe-ban<strong>de</strong><br />

61<br />

62<br />

31


Généralités<br />

3. La détection <strong>de</strong> contours<br />

Dans une image, les variations d’intensité correspon<strong>de</strong>nt à :<br />

- variations d’illumination, ou <strong>de</strong>s ombres<br />

- changements d’orientation ou <strong>de</strong> distance par rapport au capteur<br />

- changement <strong>de</strong> la réflectance <strong>de</strong> la surface<br />

Ces changements <strong>de</strong> luminance (ou niveau <strong>de</strong> gris) définissent<br />

les contours (<strong>de</strong>s régions)<br />

Métho<strong>de</strong> dérivative pour rechercher un contour : la plus utilisée<br />

Contour extremum zéro<br />

63<br />

64<br />

32


Généralités<br />

Échelon Rampe Toit<br />

Le plus répandu :<br />

4 types <strong>de</strong> contours :<br />

Processus d’extraction <strong>de</strong> contour <strong>de</strong> 1 er ordre :<br />

• Mise en évi<strong>de</strong>nce <strong>de</strong> contour par dérivation<br />

• Tri <strong>de</strong>s pixels les plus caractéristiques par seuillage (max. locaux)<br />

• Réduction <strong>de</strong>s contours<br />

• Binarisation pour stockage<br />

Le gradient : fonction vectorielle<br />

Gradient = dérivée : ∇A(x) = ∂A(x) / ∂x<br />

En <strong>de</strong>ux dimensions : ∇A(x,y) = [ ∂A(x,y) / ∂x, ∂A(x,y) / ∂y ]<br />

En mathématique :<br />

En discret, h = 1 :<br />

∇<br />

A x<br />

A y<br />

∂f<br />

=<br />

∂x<br />

∂f<br />

=<br />

∂x<br />

f<br />

'= limh<br />

−><br />

0<br />

f ( x + h)<br />

− f ( x)<br />

h<br />

f ( xi+<br />

1)<br />

− f ( xi<br />

)<br />

= f ( xi+<br />

1)<br />

− f ( xi<br />

)<br />

1<br />

∂A<br />

= = A(<br />

i + 1,<br />

j)<br />

− A(<br />

i,<br />

j)<br />

∂x<br />

En 2D, dans la direction x<br />

∇<br />

∂A<br />

= = A(<br />

i,<br />

j + 1)<br />

− A(<br />

i,<br />

j)<br />

∂y<br />

dans la direction y<br />

65<br />

66<br />

33


Le gradient : fonction vectorielle (2)<br />

La norme du gradient :<br />

suivant la distance considérée<br />

Limites du gradient :<br />

• privilégie les directions verticales<br />

et horizontales <strong>de</strong>s contours<br />

• sensible au bruit<br />

Filtres séparables<br />

r<br />

∇A = ∇A<br />

+ ∇A<br />

ou ∇A<br />

+ ∇A<br />

Approximations les plus simples <strong>de</strong>s dérivées directionnelles :<br />

• par différences finies calculées par convolution avec <strong>de</strong>s noyaux très<br />

simples<br />

• ex : [-1 1] pour l’approximation <strong>de</strong> ∂f / ∂x<br />

-1 pour l’approximation <strong>de</strong> ∂f / ∂y<br />

1<br />

-1<br />

• on utilise plutôt [-1 0 1] et 0 : frontières plus épaisses mais bien centrées<br />

1<br />

• ces opérations étant très sensibles au bruit, on les combine en général<br />

avec un filtre lisseur dans la direction orthogonale à celle <strong>de</strong> dérivation<br />

1<br />

[1 2 1] et 2 <br />

1<br />

2<br />

x<br />

2<br />

y<br />

x<br />

y<br />

67<br />

68<br />

34


Filtrage par convolution<br />

Filtrage par convolution<br />

69<br />

70<br />

35


Exemple du Gradient <strong>de</strong> Roberts<br />

G ( x,<br />

y)<br />

= A(<br />

x,<br />

y)<br />

− A(<br />

x + 1,<br />

y + 1)<br />

+ A(<br />

x,<br />

y + 1)<br />

− A(<br />

x + 1,<br />

y)<br />

Image d’un carré <strong>de</strong> 8x8 pixels<br />

0 0 0 0 0 0 0 0<br />

0 0 0 0 0 0 0 0<br />

0 0 1 1 1 1 0 0<br />

0 0 1 1 1 1 0 0<br />

0 0 1 1 1 1 0 0<br />

0 0 1 1 1 1 0 0<br />

0 0 0 0 0 0 0 0<br />

0 0 0 0 0 0 0 0<br />

Image « Contours »<br />

0 0 0 0 0 0 0 -<br />

0 1 2 2 2 1 0 -<br />

0 2 0 0 0 2 0 -<br />

0 2 0 0 0 2 0 -<br />

0 2 0 0 0 2 0 -<br />

0 1 2 2 2 1 0 -<br />

0 0 0 0 0 0 0 -<br />

- - - - - - - -<br />

Généralisation <strong>de</strong>s opérateurs <strong>de</strong> contours<br />

- Opérateur <strong>de</strong> Roberts : 2 Masques <strong>de</strong> Convolution<br />

Hr1 =<br />

0 -1<br />

1 0<br />

Hr2 =<br />

-1 0<br />

0 1<br />

g ( x,<br />

y)<br />

= f ( x,<br />

y)<br />

− f ( x + 1,<br />

y + 1)<br />

+ f ( x,<br />

y + 1)<br />

− f ( x + 1,<br />

y)<br />

= Hr1*<br />

f ( x,<br />

y)<br />

+ Hr2*<br />

f ( x,<br />

y)<br />

- Opérateur <strong>de</strong> Sobel et Prewitt : 2 Masques <strong>de</strong> Convolution<br />

1 c 1<br />

Hs1 = 0 0 0<br />

-1 -c -1<br />

Hs2 =<br />

1 0 -1<br />

c 0 -c<br />

1 0 -1<br />

g ( x , y ) = Hs 1 * f ( x , y ) + Hs 2 * f ( x , y )<br />

Limites <strong>de</strong> ces opérateurs : sensibilité au bruit<br />

Prewitt, c = 1<br />

Sobel c = 2<br />

71<br />

72<br />

36


Exemple avec plusieurs noyaux<br />

Exemple : filtre <strong>de</strong> Prewitt<br />

Filtre horizontal : Fph =<br />

Filtre vertical : Fpv =<br />

1 1 1<br />

0 0 0<br />

-1 -1 -1<br />

-1 0 1<br />

-1 0 1<br />

-1 0 1<br />

73<br />

74<br />

37


Exemple : filtre <strong>de</strong> Prewitt (2)<br />

Application<br />

du filtre<br />

horizontal<br />

I =<br />

Ih =<br />

Exemple : filtre <strong>de</strong> Prewitt (3)<br />

Application<br />

du filtre<br />

vertical<br />

I =<br />

180 180 180 60 60 60<br />

180 180 180 60 60 60<br />

180 180 180 60 60 60<br />

180 180 180 60 60 60<br />

180 180 180 60 60 60<br />

0 0 0 0<br />

0 0 0 0<br />

0 0 0 0<br />

180 180 180 60 60 60<br />

180 180 180 60 60 60<br />

180 180 180 60 60 60<br />

180 180 180 60 60 60<br />

180 180 180 60 60 60<br />

Iv = 0 -360 -360 0<br />

0 -360 -360 0<br />

0 -360 -360 0<br />

75<br />

76<br />

38


Exemple : filtre <strong>de</strong> Prewitt (4)<br />

0 0 0 0<br />

0 0 0 0<br />

0 0 0 0<br />

Ih<br />

Calcul <strong>de</strong><br />

IF = Ih²<br />

+<br />

Iv²<br />

Exemple : filtre <strong>de</strong> Prewitt (4)<br />

IF<br />

Seuillage <strong>de</strong> IF<br />

0 -360 -360 0<br />

0 -360 -360 0<br />

0 -360 -360 0<br />

Iv<br />

0 360 360 0<br />

0 360 360 0<br />

0 360 360 0<br />

0 360 360 0<br />

0 360 360 0<br />

0 360 360 0<br />

0 1 1 0<br />

0 1 1 0<br />

0 1 1 0<br />

77<br />

78<br />

39


Comparaisons<br />

Détection <strong>de</strong> contours avec les filtres <strong>de</strong> Roberts et<br />

seuillage à 75<br />

Comparaisons (2)<br />

Détection <strong>de</strong> contours avec les filtres <strong>de</strong> Prewitt et<br />

seuillage à 190<br />

79<br />

80<br />

40


Comparaisons (3)<br />

Détection <strong>de</strong> contours avec les filtres <strong>de</strong> Sobel et<br />

seuillage à 190<br />

(SNR : Signal to Noise Ratio)<br />

ou RSB = Rapport Signal sur Bruit<br />

81<br />

82<br />

41


Laplacien<br />

L’approximation par différences finies la plus simple <strong>de</strong> la dérivée<br />

secon<strong>de</strong> est la convolution par le noyau :<br />

• [1 -2 1] : pour l’approximation <strong>de</strong> ∂²f / ∂x²<br />

1 : pour l’approximation <strong>de</strong> ∂²f / ∂y²<br />

-2<br />

1<br />

Le laplacien ∆f = ∂²f / ∂x² + ∂²f / ∂y² peut donc être approximé par<br />

en 4-connexité en 8-connexité<br />

83<br />

84<br />

42


Laplacien<br />

Rehaussement <strong>de</strong> contraste basé sur le laplacien<br />

Objectif :<br />

• diminuer l’étendue <strong>de</strong> la zone <strong>de</strong> transition sans affecter<br />

l’intensité moyenne <strong>de</strong>s régions situées <strong>de</strong> part et d’autre<br />

• limiter le risque <strong>de</strong> fusion <strong>de</strong> régions distinctes lors <strong>de</strong> la<br />

segmentation<br />

Laplacien :<br />

Exemple :<br />

C = A – λ ΔA<br />

85<br />

86<br />

43


Rehaussement <strong>de</strong> contraste basé sur le laplacien<br />

4. Codage <strong>de</strong>s contours<br />

87<br />

88<br />

44


Codage <strong>de</strong> Freeman<br />

Principe :<br />

Codage <strong>de</strong> l’orientation <strong>de</strong>s pixels <strong>de</strong> contours<br />

•5<br />

•4<br />

•3<br />

•6<br />

•2<br />

•7<br />

•1<br />

•0<br />

Exemple 1 : Codage contours d’un rectangle<br />

•5 •6<br />

•4<br />

•3<br />

•2<br />

•7<br />

•0<br />

•1<br />

•6<br />

•6<br />

•6<br />

Co<strong>de</strong> obtenu: 00002224444666<br />

•0 •0 •0 •0<br />

•4<br />

•4<br />

•4 •4<br />

•2<br />

•2<br />

•2<br />

89<br />

90<br />

45


Exemple 2 : Codage contours d’un triangle<br />

•5 •6<br />

•4<br />

•3<br />

•2<br />

•7<br />

•0<br />

•1<br />

•7<br />

•Co<strong>de</strong> obtenu: 111444444777<br />

Analyse du co<strong>de</strong><br />

•7<br />

•7<br />

•1<br />

•1<br />

•1<br />

•4 •4 •4 •4 •4 •4<br />

- Première étape : Compression du co<strong>de</strong><br />

- Co<strong>de</strong> original transformé en vecteurs (ou segments)<br />

- Chaque vecteur contient <strong>de</strong>ux composantes : Orientation et Longueur<br />

- Secon<strong>de</strong> Etape : Reconnaissance formes et/ou calculs géométriques<br />

- Example 1 : Rectangle Co<strong>de</strong> Obtenu: 00002224444666<br />

Co<strong>de</strong> Comprimé: 0:4 ; 2:3 ; 4:4 ; 6:3<br />

4 vecteurs détectés : Quadrilatère<br />

Périmètre = 4 + 3 + 4 +3 = 14<br />

- Example 2 : Triangle Co<strong>de</strong> Obtenu: 111444444777<br />

Co<strong>de</strong> Comprimé: 1:3 ; 4:6 ; 7:3<br />

3 vecteurs détectés : Triangle<br />

Périmètre = 3x1.4+ 6 + 3x1.4 = 14.4<br />

91<br />

92<br />

46


5. Filtrage <strong>de</strong> flou : restauration<br />

Filtrage <strong>de</strong> Flou : filtre <strong>de</strong> Wiener<br />

Métho<strong>de</strong> inverse : Filtre <strong>de</strong> Wiener (g image floue et bruitée)<br />

g = h*f + n<br />

h<br />

f +<br />

n<br />

g<br />

f : image originale (inconnue)<br />

h : défaut (FTM ou PSF)<br />

n : bruit<br />

Si le bruit est faible, on cherche la PSF pour se rapprocher<br />

au mieux <strong>de</strong> f. C’est la déconvolution d’image.<br />

93<br />

94<br />

47


Exemple <strong>de</strong> <strong>traitement</strong>s<br />

Rendre nette une image floue<br />

Principe du filtrage inverse<br />

On considère <strong>de</strong>s transformations linéaires avec un bruit additif<br />

Pas <strong>de</strong> bruit :<br />

Restauration par<br />

filtrage inverse :<br />

95<br />

96<br />

48


Principe du filtrage pseudo-inverse<br />

Le filtre inverse est instable<br />

Le filtre pseudo-inverse est utilisé à la place :<br />

Le seuil ε doit être déterminé en fonction <strong>de</strong> la précision <strong>de</strong> la<br />

représentation numérique<br />

Exemple<br />

si H(u,v) < ε<br />

sinon<br />

97<br />

98<br />

49


Exemple : pseudo-inverse<br />

Filtre <strong>de</strong> Wiener<br />

On cherche la meilleure estimation linéaire qui minimise l’erreur<br />

quadratique moyenne entre le signal original et cette estimation :<br />

min∑∑<br />

x y<br />

f ( x,<br />

y)<br />

− fˆ<br />

( x,<br />

y)<br />

²<br />

où H* : est le conjugué <strong>de</strong> H<br />

et Q² = σ² b / σ² sign : un terme <strong>de</strong> régularisation (<strong>de</strong>nsités<br />

spectrales <strong>de</strong> puissance du bruit et du signal)<br />

Fort signal, faible bruit ⇒<br />

Faible signal, fort bruit ⇒<br />

H<br />

F ˆ *<br />

= × G<br />

HH * + Q²<br />

F ˆ −1<br />

= H . G<br />

Fˆ<br />

= 0<br />

99<br />

100<br />

50


Filtre <strong>de</strong> Wiener : exemple<br />

101<br />

51

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

Saved successfully!

Ooh no, something went wrong!