2 Convolution – filtrage passe-bas, passe-haut
Filtrage
Benjamin Mathon
Image initiale Plan de Fourier
Plan de Fourier filtréImage filtréeFFT-1
Multiplication
Dans le domaine spatial, le filtrage se fait par convolution.Dans le domaine spectral, il se fait par multiplication (ou masquage de l'image).
Convolution
FFT
3 Convolution – filtrage passe-bas, passe-haut
Transformation locale
Benjamin Mathon
• Pour calculer la valeur du pixel de coordonnées (x,y) dans l'image résultat I', on utilise, dans l'image source, non seulement la valeur du pixel I(x,y) mais aussi celles des pixels situés dans un voisinage de ce dernier I(V (x,y)).
• I' a même taille que I, mais des propriétés plus intéressantes.
• En chaque pixel (x,y) considéré, le voisinage V est défini de manière identique (« forme » identique) mais relativement à lui (V (x,y)).
I (x , y) →t
I ' (x , y )=t (I (V (x , y) ) )x
y
x
y
t
V x , y
I I'
4 Convolution – filtrage passe-bas, passe-haut
Voisinage V d'un pixel P
Benjamin Mathon
• Hypothèses :
– V est centré en P
– les pixels sont disposés selon une maille carrée
• Définition : V (P) est l'ensemble des pixels Q situés à moins d'une certaine distance de P
• La forme du voisinage (et le nombre de voisins) de P dépendent de la distance considérée.
• Voisinages les plus usités en traitement d'images :
4-voisinage 8-voisinage (voisinage 3x3) voisinage 5x5
5 Convolution – filtrage passe-bas, passe-haut
Convolution discrète 2D
Benjamin Mathon
Principe :● L'image I est une fonction de 2 variables discrètes (x et y) à
support fini.● Le filtre de convolution H appliqué sur I est lui aussi à 2D. Il est
donné par une matrice de poids (ou coefficients) de taille (2w+1)x(2w+1).
● H est appelé filtre, masque, noyau ou fenêtre de convolution.
Formule et mise en œuvre :
Le filtrage de I consiste à déplacer H sur chaque pixel et à remplacer la valeur de ce pixel d'analyse par la combinaison des valeurs de ses voisins donnée par la formule de convolution
I ' (x , y)=(I∗H )(x , y)=∑i=−w
w
∑j=−w
w
I (x−i , y− j) .H (i , j)
6
Convolution discrète 2D : calcul
Image source I Filtrage de I par HFiltre H Image résultat I'
En chaque pixel (x,y) :● Tourner la matrice de poids [H(i,j)] de 180° autour de son centre (0,0)● Superposer le masque obtenu à l'image I de sorte qu'il soit centré en
(x,y)● Multiplier chaque coefficient du masque par le niveau du pixel sous-
jacent● Additionner chacun de ces produits pour obtenir I'(x,y).
H
H=180°
H=180°
et I
7 Convolution – filtrage passe-bas, passe-haut
Convolution discrète 2D : calcul
Benjamin Mathon
I ' x , y= I x−1, y−1 .h+1,+1+ I x−1, y .h+1,0+ I x−1, y+1 . h+1,−1
+ I x , y−1 . h0,+1+ I x , y .h0,0+ I x , y+1 . h0,−1
+ I x+1, y−1 . h−1,+1+ I x+1, y . h−1,0+ I x+1, y+1 .h−1,−1
8 Convolution – filtrage passe-bas, passe-haut
Propriétés de la convolution
Benjamin Mathon
• Additivité / distributivité :
• Commutativité :
• Associativité :
• Un filtre de convolution est dit séparable si :
• Élément neutre :
I∗h=h∗I
(I∗h1)+(I∗h2)=I∗(h1+h2)
(I∗h1)∗h2=I∗(h1∗h2)
h( x , y )=hx( x) ∗ hy ( y )
[a b c ] ∗ [a 'b 'c ' ] = [
aa ' ba ' ca 'ab ' bb ' cb 'ac ' bc ' cc ' ]
δ = [0 0 00 1 00 0 0 ] → (δ ∗ I )(x , y ) = I (x , y)
9 Convolution – filtrage passe-bas, passe-haut
Effets de bords
Benjamin Mathon
?
● Problème : comment traiter les pixels situés aux bords de l'image ?
● Stratégies possibles :
● laissés inchangés● pixels extérieurs = 0● miroir (virtuel) de l'image :
I(-i-1,y)=I(i,y) sur le bord gaucheI(N
x+i,y)=I(N
x-i-1,y) sur le bord droit
I(x,-j-1)=I(x,j) sur le bord hautI(x,N
y+j)=I(x,N
y-j-1) sur le bord bas
● image enroulée
● etc
11 Convolution – filtrage passe-bas, passe-haut
Masque de convolution
Benjamin Mathon
• Caractéristiques– Ses caractéristiques (coefficients, taille) déterminent l'effet du filtre
– Souvent carré et de taille impaire (3x3, 5x5, etc) pour être centré sans ambiguïté sur le pixel d'analyse
– Souvent à valeurs symétriques centrées : h(-1,-1)=h(+1,+1),
h(0,-1)=h(0,+1), ...
• NormalisationSoit S la somme des coefficients du masque.
Diviseur : normalisation à 1.
– Si l'on veut conserver la luminance de l'image (moyenne des niveaux de gris), on doit avoir S=1.
– Si les coefficients sont tous positifs, on doit donc les diviser par S
12 Convolution – filtrage passe-bas, passe-haut
Types de filtres
Benjamin Mathon
• Filtres passe-bas, ou de lissage– Principe : moyenne pondérée des valeurs du voisinage
– Effet : lissage de l'image (variations atténuées)
– Avantage : atténuation du bruit
– Inconvénient : atténuation des
détails, flou
– Caractérisation : coefficients tous
positifs
• Filtres passe-haut, ou de contours– Principe : dérivation de la fonction image
– Effet : accentuation des détails de l'image
– Avantage : mise en évidence des contours/détails
– Inconvénient : accentuation du bruit
– Caractérisation : coefficients de somme nulle
lissage
dérivation
13 Convolution – filtrage passe-bas, passe-haut
Types de filtres
Benjamin Mathon
• Filtres passe-bas, ou de lissage– Principe : moyenne pondérée des valeurs du voisinage
– Effet : lissage de l'image (variations atténuées)
– Avantage : atténuation du bruit
– Inconvénient : atténuation des
détails, flou
– Caractérisation : coefficients tous
positifs
• Filtres passe-haut, ou de contours– Principe : dérivation de la fonction image
– Effet : accentuation des détails de l'image
– Avantage : mise en évidence des contours/détails
– Inconvénient : accentuation du bruit
– Caractérisation : coefficients de somme nulle
lissage
14
À propos du bruit
Benjamin Mathon
• La restauration de l'image I vise à en réduire le bruit et à trouver l'image idéale I qui aurait été obtenue avec un système d'acquisition parfait.
• Le bruit b(x,y) est souvent considéré comme aléatoire.
– Bruit additif : I(x,y) = I(x,y) + b(x,y)
– Bruit multiplicatif : I(x,y) = I(x,y) . b(x,y)
• Types :
– Bruit d'amplification
– Bruit « Poivre et sel » (impulsionnel)
– Bruit de quantification
•Origine : dérive thermique des composants•Modélisation : bruit additif à distribution normale
•Origine : pixels défectueux, erreurs de CAN, ...•Modélisation : remplacement de n % pixels par 0ou 255
•Origine : quantification des valeurs en niveauxdiscrets
•Modélisation : variable aléatoire à distributionuniforme
Convolution – filtrage passe-bas, passe-haut
15
Bruits dans une image : exemples
Benjamin Mathon
Bruit additifGaussien (σ = 25)
Bruit multiplicatifGaussien (σ = 25)
Bruit poivre et sel(20 % de pixels
affectés)
Convolution – filtrage passe-bas, passe-haut
16
Filtres de lissage
Benjamin Mathon
• Principe– Utilité : restauration de l'image (élimination du bruit) par lissage.
– Inconvénient : suppression des hautes fréquences (filtres passe-bas), d'où dégradation des contours et effet de flou.
• Variétés– Plusieurs types de filtres possédant chacun des avantages propres.
– Plusieurs tailles possibles, selon l'étendue du voisinage à considérer : 3x3, 5x5, ... l'effet de flou est d'autant plus marqué que la taille est grande.
• Principaux filtres de lissage– Linéaires
• Caractérisés par un masque (réalisables par convolution).
• Exemples : filtres moyenneurs, gaussiens
– Non-linéaires
• Caractérisés par un opérateur non-linéaire (non réalisables par convolution).
• Exemple : filtre médian
Convolution – filtrage passe-bas, passe-haut
17
Filtres de lissage linéaires : filtres moyenneurs
Benjamin Mathon
• Configuration : dépend de l'importance à donner au pixel d'analyse et à ses voisins :
• Remarque : |S|=1, donc préservation de la luminance
• Inconvénients :– forte atténuation des contours (limite la performance des
traitements ultérieurs)
– forte influence des pixels aberrants isolés
19 [
1 1 11 1 11 1 1 ] ou
110 [
1 1 11 2 11 1 1 ] ou
15 [
0 1 01 1 10 1 0 ]
Convolution – filtrage passe-bas, passe-haut
18
Filtres de lissage linéaires : filtres gaussiens
Benjamin Mathon
• Paramètres : moyenne µ, écart-type .
En 1D : G (x )= 1√ 2π
exp (−(x−μ)2
22 ) En 2 D : G (x , y )=1
2π2exp (− ((x−μ)
2+( y−μ)
2 )22 )
Convolution – filtrage passe-bas, passe-haut
19
Filtres de lissage linéaires : filtres gaussiens
Benjamin Mathon
• Avantage : limite l'effet de flou (contours mieux conservés)
• Configurations : approximations discrètes de la distribution gaussienne de moyenne μ=0 et d’écart-type σ dans un filtre fini. Exemple pour σ=0.8 :
• Écart-type :– Détermine le degré de lissage– Impose la taille du masque (idéalement )
HG=1
2025 [1 10 22 10 1
10 106 231 106 1022 231 504 231 2210 106 231 106 101 10 22 10 1
]Convolution – filtrage passe-bas, passe-haut
⌈6 ⌉×⌈6 ⌉
20
Filtres de lissage : exemples
Benjamin MathonConvolution – filtrage passe-bas, passe-haut
Image originale Bruit gaussien σ=20 Moy3x3
Moy5x5 Filtre gaussien σ=2
21
Filtres de lissage non-linéaires : filtre médian
Benjamin Mathon
• Principe– Le niveau de gris résultat est le niveau de gris médian des pixels
voisins.
– Filtre non-linéaire, donc non réalisable par masque de convolution.
• Calcul– Trier les niveaux par ordre croissant.
– Donner au pixel d'analyse le niveau situé au milieu des niveaux triés.
• Exemple
Convolution – filtrage passe-bas, passe-haut
18 20 25
14 255 32
22 27 25
2514 18 20 22 25 25 27 32 255
| 4 valeurs |médiane| 4 valeurs |
22
Filtres de lissage non-linéaires : filtre médian
Benjamin Mathon
• Avantages par rapport aux filtres moyenneur et Gaussien– Filtre mieux le bruit impulsionnel (type « poivre et sel »).
– Ne crée pas de nouveau niveau ; préserve mieux les contours sans altérer le fond.
• Limites et inconvénients– Supprime les détails fins qui ne sont pas du bruit.
– Détruit les coins.
– Coûteux en temps de calcul (tri).
Convolution – filtrage passe-bas, passe-haut
I moy 3x3 gauss 5x5 méd 3x3
23
Filtres de lissage non-linéaires : filtre min-max
Benjamin Mathon
• Principe– Garantit que la valeur de tout pixel appartient à l'intervalle des
valeurs de ses voisins débruitage efficace.
– Préserve encore mieux les contours que le filtre médian.
• Calcul
• Exemple
Convolution – filtrage passe-bas, passe-haut
I ' (x , y)={I (x , y) si imin⩽I (x , y)⩽imax
imin si I (x , y)<imin
imax si I (x , y)>imax}
124 126 127
120 255 125
115 119 123
imin=115, imax= 127moyenne = 137médiane = 124(min-)max = 127
24
Mesure de distorsion
Benjamin Mathon
• PSNR (Peak Signal to Noise Ratio)– Le PSNR (unité décibel dB) permet de mesurer la similarité entre
deux images I1 et I2 codées sur 8 bits et de définition M x N pixels.
– Il peut être utilisé pour quantifier la puissance du bruit ajouté à l’image ou pour mesurer la qualité du débruitage.
• Calcul
Convolution – filtrage passe-bas, passe-haut
PSNR( I 1 , I 2)=10 log10 ( 2552
EQM ( I 1 , I 2) )où EQM désigne l’erreur quadratique moyenne entre les 2 images :
EQM ( I 1 , I 2)=1
M×N∑x=0
M−1
∑y=0
N −1
( I 1( x , y)−I 2(x , y))2
● NB : Si I1 = I2 alors PSNR ( I 1 , I 2)=+∞
25 Convolution – filtrage passe-bas, passe-haut
Types de filtres
Benjamin Mathon
• Filtres passe-bas, ou de lissage– Principe : moyenne pondérée des valeurs du voisinage
– Effet : lissage de l'image (variations atténuées)
– Avantage : atténuation du bruit
– Inconvénient : atténuation des
détails, flou
– Caractérisation : coefficients tous
positifs
• Filtres passe-haut, ou de contours– Principe : dérivation de la fonction image
– Effet : accentuation des détails de l'image
– Avantage : mise en évidence des contours/détails
– Inconvénient : accentuation du bruit
– Caractérisation : coefficients de somme nulle
dérivation
26
Qu'est-ce qu'un contour ?
Benjamin Mathon
• Un contour est une
variation brusque
d'intensité (discontinuité)
• Frontière qui sépare 2
objets (ou un objet du
fond)
Convolution – filtrage passe-bas, passe-haut
27
Contours dans une image
Benjamin Mathon
• Exemples de détection des discontinuités
Source : Jacques-André Landry. Vision robotique. ETS.
Convolution – filtrage passe-bas, passe-haut
28
Différents types de contours
Benjamin Mathon
Source : Gonzalez and Woods. Digital Image Processing 3ed. Prentice-Hall, 2008
Convolution – filtrage passe-bas, passe-haut
29
Dérivées de l'image
Benjamin Mathon
Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal.
Convolution – filtrage passe-bas, passe-haut
30
Dérivées de l'image
Benjamin Mathon
• Les contours correspondent :– Aux maximums/minimums
de la première dérivée– Aux passages par zéros de
la deuxième dérivée
Convolution – filtrage passe-bas, passe-haut
31
Dérivation du signal image
Benjamin Mathon
• Soit f(u) fonction de la variable u
• f(u) est dérivable par rapport à u en u0 si pour tout accroissement
h, il existe un nombre A tel que :
• La dérivée de f par rapport à u est :
f (u 0 + h ) = f (u0) + A h + h ε (h ) avec limh→ 0
ε (h) = 0
A =dfdu
|u0
= limh → 0
f (u0+h) − f ( u0)
h
Convolution – filtrage passe-bas, passe-haut
33
Dérivée première d'une fonction 2D continue
Benjamin Mathon
∂ f (x , y )∂ x
= limhx→0
f ( x + hx, y ) − f ( x , y )
hx
f ( x0 +hx , y 0+ h y) = f ( x0 , y 0 ) + h x
∂ f∂ x
|x 0, y0 + h y
∂ f∂ y
|x0, y0 + o (√ h x
2+h y
2 )
∂ f ( x , y )∂ y
= limhy→0
f ( x , y + hy) − f ( x , y )
h y
Convolution – filtrage passe-bas, passe-haut
x
h
hhx
hyα
y0
y
x0
34
Dérivée directionnelle
Benjamin Mathon
• Développement en série limitée dans la direction α
• Dérivée directionnelle dans la direction α
f (x0+h cosα , y0+h sinα ) = f (x0 , y0) + h cosα∂ f (x , y )
∂ x|x 0, y 0 + h sin α
∂ f (x , y)∂ y
|x 0, y 0
dfdα
|x 0, y 0= cos α∂ f∂ x
|x 0, y 0 + sinα∂ f∂ y
|x0, y0
x
h
hhx
hyα
y0
y
Convolution – filtrage passe-bas, passe-haut
Crédits : https://commons.wikimedia.org/wiki/User:Pethrus
x
y
z=f(x,y)
x0
x0
y0
35
Vecteur gradient
Benjamin Mathon
∇ f {∂ f ( x , y )
∂ x∂ f ( x , y )
∂ y
Convolution – filtrage passe-bas, passe-haut
• caractérisé par son module et sa direction :
|∇ f| = [ ( ∂ f∂ x )
2
+ ( ∂ f∂ y )
2
]1/2
θ = Arg ( ∇ f ) = tan−1 (
∂ f∂ y∂ f∂ x
)
36
Vecteur gradient
Benjamin Mathon
• Dérivée directionnelle dans la direction α :
• Cette dérivée est maximale lorsque sont colinéaires
• Le vecteur gradient est donc dans la direction de plus grande pente de f.
dfdα
= cosα∂ f∂ x
+ sinα∂ f∂ y
= α . ∇ f avec α vecteur unitaire dans la direction α
α et ∇ f
Convolution – filtrage passe-bas, passe-haut
θ = Arg ( ∇ f ) = tan−1 (
∂ f∂ y∂ f∂ x
) =arg maxαdfdα
37
Gradient de l'image
Benjamin Mathon
– Dérivée en X et dérivée en Y– Vecteur avec une norme et une direction
Les lignes bleues représentent le gradient orienté dans le sens de la montée (niveaux de gris croissants)Source : http://commons.wikimedia.org/wiki/File:Gradient2.svg
Convolution – filtrage passe-bas, passe-haut
38
Approximation des dérivées partielles sur une image discrète
Benjamin Mathon
• Hypothèse : pente discontinue en x0.
– Considérons la fonction image f échantillonnée aux points
• Tx = Ty = 1 => Masque de Roberts2
∂ f∂ x
|x=x0=
12 [ ∂ f
∂ x|x=x0
+ +∂ f∂ x
|x=x0
−]
+1
0
-1∂ f∂ x
:12
∂ f∂ y
:12
∂ f∂ x
|m ,n
≈12T
x[ (f (m+1, n ) − f (m ,n)) + ( f (m, n ) − f (m−1,n)) ]
≈12T
x[ f (m+1, n) − f (m−1,n )]
+1 0 -1
Convolution – filtrage passe-bas, passe-haut
(mT x , nT y )
39
Exemple
Benjamin Mathon
• Calcul du gradient en un pixel (exemple).– Dérivées premières :
– Module du gradient :
– Direction du gradient
|∇ f| = [ ( ∂ f∂ x )
2
+ ( ∂ f∂ y )
2
]1/ 2
=112
θ = Arg ( ∇ f ) = tan−1( ∂ f∂ y
/∂ f∂ x ) =63°
∂ f∂ x
=50,∂ f∂ y
=100
+1
0
-1
∂ f∂ x
:12
∂ f∂ y
:12+1 0 -1
∇ f
→
→ →
Convolution – filtrage passe-bas, passe-haut
40
Pourquoi la dérivation accentue-t-elle le bruit ?
Benjamin Mathon
• Soit une image I bruitée par un bruit sinusoïdal d'amplitude ε
• Après dérivation :
• Amplification du bruit par un facteur
• Nécessité de lisser l'image
I= I+ϵsin (2π f 0 x)
I '= I '+2π f 0 ϵ cos(2 π f 0 x )
2π f 0
Convolution – filtrage passe-bas, passe-haut
41
Filtre de SobelSobel : filtrage gaussien/dérivation
Benjamin Mathon
• Composante horizontale du gradient :
• Composante verticale du gradient :
gaussien en y dérivateur en x gaussien/dérivateurpour
+1
+2
+1
14
+1 0 -112
18
+1 0 -1
+2 0 -2
+1 0 -1
∂ f∂ x
∂ f∂ y
∂ f /∂ x
14
+1 +2 +1
+1
0
-1
12
18
+1 +2 +1
0 0 0
-1 -2 -1
gaussien en x gaussien en y gaussien/dérivateurpour ∂ f /∂ y
=
=
*
*
Convolution – filtrage passe-bas, passe-haut
42
Exemple :Sobel
Benjamin Mathon
|∇ f|→
∂ f∂ x
∂ f∂ y
imageoriginale
→
Convolution – filtrage passe-bas, passe-haut