Cours de traitement des images - lambert veller sylvain
Cours de traitement des images - lambert veller sylvain
Cours de traitement des images - lambert veller sylvain
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