Filtrage spatial
Lissage et réduction du bruit
Détection des contours
Filtres plus complexes (Canny et Harris)
g
Ponctuelle:
f
T
g(x0,y0)=T[f(x0,y0)]
(x0,y0)
(x0,y0)
Locale:
g(x0,y0)=T[f(V)]
V:voisinage de (x0,y0)
Globale:
g(x0,y0)=T[f(x,y)]
Transformation basée sur le voisinage d’un point
transformation
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
Image originale
Image traitée
Ø ? Gestion des bords :
è propagation ? mise à zéro ? On ne filtre pas les
bords ? On supprime les bords ? On augmente la taille de
l’image ? Et si le masque grand ?
3
Filtrage spatial
Filtres passe-bas
Atténue le bruit et les
détails (hautes fréquences) Domaine
è lissage
fréquentie
l
Filtres passe-haut
Domaine
Inversement, accentue les spatial
détails (hautes fréquences)
è accentuation
« Techniques for Image Processing and
Classification in Remote Sensing » Schowengerdt
Convolution d’une image par un filtre 2D :
I ' (i, j ) = I (i, j ) ⊗ filtre(i, j )
I ' (i, j ) = ∑∑ I (i − u, j − v). filtre(u, v)
u v
Convolution
I'(i, j) = I(i, j) ⊗ filtre(i, j)
j
w1
w2
w3
Centre du
filtre
i
w4
w5
w6
w7
w8
w9
I’(i,j) =
w1*I(i-1,j-1) + w2*I(i-1,j) + w3*I(i-1,j+1)
+ w4*I(I,j-1) + w5*I(i,j) + w6*I(i,j+1)
+ w7*I(i+1,j-1) + w8*I(i+1,j) + w9*I(i+1,j+1)
Note:
Généralement, masque de dimension impaire et symétrique
Exemple
1 1 1
1
9
1 1 1
Ä! 10 15 1 25 1 10 1 1 1 1
1 1 1
14 3 1 2 1 20 1 1 1 1
Masque de convolution
30 28 1 16 1 8 1 1 1 1
(moyenne)
(10*1+15*1+25*1+14*1+3*1+2*1+
30*1+28*1+16*1)/9
=143/9
(15*1+25*1+10*1+3*1+2*1+20*1+
28*1+16*1+8*1)/9
=127/9
image
Filtres passe-bas
Filtre passe-bas:
u Lissage d’images et élimination du bruit
u Principe:
Ø INTÉGRATION (Sommation)
Filtre de moyenne (passe-bas)
Filtre gaussien (passe-bas)
Filtre médian (passe-bas non-linéaire)
Filtre adaptatif
Filtre directionnel
Filtre moyenneur
1 1 1
1/9 x 1 1 1 Lissage
(flou apparent)
1 1 1
3x3 5x5 7x7 15x15
Plus le filtre grossit , plus le lissage devient important et plus le flou
s’accentue !
Autres filtres passe-bas
⎡1 2 3 2 1⎤ ⎡0 0 1 0 0⎤
⎢2 4 6 4 2⎥
⎢0 2 2 2 0⎥
Pyramidal:
1 ⎢ ⎥ 1 ⎢ ⎥
× ⎢3
81 ⎢
6 9 6 3⎥ Conique:
× ⎢1 2 5 2 1⎥
⎥ 25 ⎢ ⎥
⎢2 4 6 4 2⎥
⎢0 2 2 2 0⎥
⎢⎣1 2 3 2 1⎥⎦ ⎢⎣0 0 1 0 0⎥⎦
⎡1 2 32 1⎤
⎢2 6 8 6 2⎥⎥
−( x 2 + y 2 ) 1 ⎢
1 × ⎢3 8 10 8 3⎥
Gaussien:
⋅e 2σ 2 98 ⎢ ⎥
2πσ 2 ⎢2 6 8 6 2⎥
⎢⎣1 2 3 2 1⎥⎦
Coefficients entiers è calculs plus rapides
10
Applications
u (¯ bruit et ¯ faux contours)
11
Filtre médian
médiane = 25
30 10 20
10, 10, 20, 20, 25, 25, 30, 30, 250
10 250 25
20 25 30 moyenne autour de
la médiane = 24
Moyenne: 47 à cause du 250
è Particulièrement utile pour un bruit de type Poivre & Sel (0 et 255)
12
Image initiale
Bruit Poivre & Sel
Moyenne V8
Min V8
Max V8
Médian V8
13
Bruit additif
I bruit (i, j ) = (1 + Δ).I (i, j )
avec Δ ∈ [- ε ;+ε ]
14
Hagit Hel-Or, 1999
Filtre adaptatif
⎧1
⎪ M ∑ I (n , m )
⎪ (n ,m )∈S
⎪ 1
⎪
I '(i , j ) = ⎨
Si ∑ I (n , m ) − I (i , j ) <T
M (n ,m )∈S
⎪
⎪
⎪I (i , j ) Sinon
⎪
⎩
Avec :
S = voisinage du pixel (i,j)
M = nombre de pixels dans le voisinage S
T = valeur de seuil prédéfinie
15
Hagit Hel-Or, 1999
Filtre directionnel
Masque orienté
Image
bruitée
originale
Trouver le voisinage orienté tel que:
2 x 7
Calculer la moyenne (ou autre) suivant Vq:
7 x 2
16
Hagit Hel-Or, 1999
Filtres passe-haut
Filtre passe-haut
u Détection des contours
u Principe:
Ø DÉRIVATION: Différence
À partir d’un passe-bas
Gradient et variantes
Laplacien
Filtre plus complexe
Canny (détecteur de contour)
Harris (détecteur de coin)
18
Filtre passe-haut (détection des contours)
IPH = I − IPB (+ 128)
- =
Image
Passe-bas
Passe-haut
0
0
0
1
1
1
1
1 -1
-1
-1
0
1
0
9
1
1
1
9 -1
8
-1
0
0
0
1
1
1
-1
-1
-1
19
Filtres différentiels
1
0.8
10
f ( x, y) = e− x /2 0.6
0
0.4
-1
0.2
-2 -1 1 2 -2
-2 -1 0 1 2
2
3
1
2
∂f 1 Dérivée
première
∂x
-2 -1 1 2
-1
-1
-2
-3 -2
-2 -1 0 1 2
20
1
10
∂2 f 0 Dérivée
∂x 2
-2 -1 1 2
-1
seconde
-10
-2
20
-2 -1 0 1 2
Le gradient
⎡ ∂I ⎤ ⎛ ∂I ⎞
⎢ ∂x ⎥ 2 ⎜⎜ ⎟⎟
⎢ ⎥
2
⎛ ∂I ⎞ ⎛⎜ ∂I ⎞⎟ ∂I ∂I −1 ⎝
∂y ⎠
∇I = ⎢ ⎥ ∇I = ⎜ ⎟ +⎜ ⎟ ≈ + θ = tan
⎢ ∂I ⎥ ⎝ ∂x ⎠ ⎝ ∂y ⎠ ∂x ∂y ⎛ ∂I ⎞
⎜ ⎟
⎢ ∂y ⎥ ⎝ ∂x ⎠
⎣ ⎦
∇I ∂f
∂y
∂f
∂x
∂f = lim f (x + h , y ) − f (x − h , y ) ⇒ ∂I ≈ I (x + 1, y ) − I (x − 1, y )
∂x h →0 2h ∂x 2
ou ∂f = lim f (x , y ) − f (x − h , y ) ⇒ ∂I ≈ I (x , y ) − I (x − 1, y )
∂x h →0 h ∂x 21
Le gradient (version élémentaire 3 x 3)
Image Filtre Calcul
I1
I2
I3
0
-1
0
0
0
0
∂f = [I − I ]
I4
I5
I6
∂y 8 2
I7
I8
I9
0
1
0
où Ix : valeur du
0
0
0
n iveau de gris
∂f = [I − I ]
-1
0
1
∂x 6 4
0
0
0
∇I ≈ I x + I y ≈ ∂I + ∂I
∂x ∂y
22
Filtres classiques
Roberts:
1
0
0
1
0
-1
-1
0
-1
-1
-1
-1
0
1
Prewitt:
0
0
0
-1
0
1
1
1
1
-1
0
1
-1
-2
-1
-1
0
1
Sobel:
0
0
0
-2
0
2
1
2
1
-1
0
1
23
Exemple (Sobel)
∂f ∂f
∂x ∂y
-1
0
1
-1
-2
-1
-2
0
2
0
0
0
-1
0
1
1
2
1
∂f ∂f
∇f = +
∂x ∂y
+128 pour affichage
+128 pour affichage
24
Combinaison de filtres
è Filtres de Sobel :
⎛ −1 0 1⎞ ⎛1⎞
⎜ ⎟ ⎜ ⎟
Gx = ⎜ − 2 0 2 ⎟ = ⎜ 2 ⎟ ∗ (− 1 0 1) è Lissage en y et dérivée en x
⎜ −1 0 1 ⎟⎠ ⎜⎝ 1 ⎟⎠
⎝
⎛− 1 − 2 − 1⎞ ⎛ − 1⎞
⎜ ⎟ ⎜ ⎟
Gy = ⎜ 0 0 0 ⎟ = ⎜ 0 ⎟ ∗ (1 2 1) è Lissage en x et dérivée en y
⎜ 1 2 1 ⎟⎠ ⎜⎝ 1 ⎟⎠
⎝
è moins sensible au bruit
25
Extraction des contours
Détection de
contours par
Sobel
Seuillage avec Seuillage avec
S=10%.Imax
S=25%.Imax
26
Autres (filtres compas)
Note: Le choix de k donne l’orientation du gradient
27
Laplacien (Ñ2f)
∂2I ∂2I
∇2I = + ≈ I x (x + 1, y) − I x (x, y) + I y (x, y + 1) − I y (x, y)
∂x2 ∂y2
∇2I ≈ ⎡I(x + 1, y) − I(x, y) ⎤ − ⎡I(x, y) − I(x − 1, y) ⎤
⎣ ⎦ ⎣ ⎦
+ I(x, y + 1) − I(x, y) − ⎡I(x, y) − I(x, y − 1) ⎤
⎡ ⎤
⎣ ⎦ ⎣ ⎦
∇ I ≈ I(x + 1, y) − 2I(x, y) + I(x − 1, y) + I(x, y + 1) − 2I(x, y) + I(x, y − 1) ⎤
2 ⎡ ⎤ ⎡
⎣ ⎦ ⎣ ⎦
⎛ 1 ⎞ ⎛ 0 1 0 ⎞
2
∇ I ≈ Filtre avec (1 )
− 2 1 puis ⎜ −2 ⎟ = ⎜⎜ 1 −4 1 ⎟⎟
⎜ ⎟
⎜⎝ 1 ⎟⎠ ⎜⎝ 0 1 0 ⎟⎠
⎛ 1 1 1 ⎞
Autres formes : ⎜ 1 −8 1 ⎟
⎜ ⎟
⎜⎝ 1 1 1 ⎟⎠
Points de contours è passages à zéro de la dérivée seconde
28
Laplacien (Ñ2f)
Sobel
Laplacien |Ñ2f|
⎛ 1 1 1 ⎞
⎜ 1 −8 1 ⎟
⎜ ⎟
⎜⎝ 1 1 1 ⎟⎠
29
Filtre de Marr-Hildreth
u Laplacien de Gaussienne :
Ø On filtre d’abord l’image avec un filtre Gaussien G
Ø Puis on prend le Laplacien de l’image filtrée
Ñ Ä Ñ Ä !
u Le but est de réduire le bruit associé aux filtres
différentiels et de faciliter la détection du passage par
Ñ2G
2
zéro (contour)
1.5
1
x2 +y2
-
1 2!2
Filtre gaussien : G σ (x, y) = exp 0.5
2πσ2
∂2f(x, y) ∂2f(x, y)
-3 -2 -1 1 2 3
2
Dérivée seconde : ∇ f(x, y) =
2
+ 0
∂x2 ∂y2
-2
2
1.5
x2 + y2 − 2.σ2 1
LoG : ∇2G σ (x, y) = .G σ (x, y) 0.5
σ4 0
-2
0 30
2
u Application du filtre
Détection des passages à zéro
s#!
31
Rehaussement de contours - Laplacien
0 0 0
0 1 0
0 0 0
0 0 0
Ex : -1 0 1
0 0 0
0 1 0
Ex : 1 -4 1
0 1 0
0 -1 0
Ex : -1 4 -1
0 -1 0
0 -1 0
Ex : -1 5 -1
0 -1 0
32
Hagit Hel-Or, 1999 Utilisé dans la plupart des caméras numériques, vidéos photocopieurs…
Filtre DOG (Difference of Gaussian)
u è Filtre DOG très proche du LOG
« Le traitement des images », Henri Maître, 2003
33
Filtres plus complexes
Filtre de Canny
u Critères de l’approche de Canny :
Ø Détection : Bonne détection des points de contours
(notamment pour les contours faibles)
Ø Localisation : Localisation fiable des points de contours
Ø Unicité de la détection : pour un contour, on a un seul point
de contour
u Détection de contour: algorithme de Canny
Ø Première étape
Appliquer un filtre gaussien
Filtre passe bas pour supprimer le bruit
Ø 2ème étape: calculer
35
Filtre de Canny
Ø 3ème étape: approximation de l’angle du gradient à un
multiple de 45° près
Ø 4ème étape: si la norme du gradient en un pixel (x,y) est
inférieure à la norme du gradient en un de ses deux voisins le
long du gradient, mettre la norme du gradient en (x,y) à 0
è On supprime les gradients qui
ne sont pas des maximums locaux
36
Filtre de Canny
Ø 5ème étape: (hystérisis) Soient τh>τl deux seuils. Si la norme du
gradient en un pixel(x,y) est supérieure à τh ajouter (x,y) au
contour ainsi que tous les points reliés à (x,y) le long de la
normale au gradient pour lesquels la norme du gradient est
supérieure à tl
37
Filtre de Canny
38
Détecteur de coin de Harris
Ø Algorithme :
Calculer le gradient (Ix, Iy) dans toute l’image
Pour chaque pixel :
Calculer sur un voisinage du pixel la matrice suivante:
⎡∑ I x I x ∑ I x I y ⎤
⎢ ⎥
⎣⎢∑ I x I y ∑ I y I y ⎦⎥
Calculer les valeurs propres l l l l )
Si la valeur propre minimale l > seuil, conserver les
coordonnées du pixel dans une liste L ( coins)
Trier L en ordre décroissant de l2
Balayer la liste L de haut en bas, pour chaque pixel pi de la
liste, éliminer les autres pixels qui appartiennent au voisinage de
pi
39
Détecteur de coin de Harris
La liste finale contient les points saillants pour lesquels !2 >
seuil et dont les voisinages ne se chevauchent pas. Ce sont les
pixels les plus faciles à suivre! Utile pour sélectionner des points
d’ancrage (de repère).
Exemple d’utilisation :
panorama
DaryaFrolova, Denis Simakov, The WeizmannInstitute of Science, 2004
[Link] 40
Exemple d’utilisation : panorama
DaryaFrolova, Denis Simakov, The WeizmannInstitute of Science, 2004 41
[Link]