10/12/2018
Filtres
Transformations ponctuelles: On a vu jusque
maintenant des transformations qui opèrent sur
chaque pixel indépendamment de l’intensité de ses
voisins.
Transformations locales: De nombreuses
transformations sur les image reviennent à calculer
l’intensité d’une pixel de la nouvelle image comme
une combinaison linéaire des pixels voisins dans
l’image originale.
Filtres
𝒇 𝒈
T
Ponctuelle : 𝑔 𝑥, 𝑦 = 𝑇 𝑓 𝑥, 𝑦
(𝑥, 𝑦) (𝑥, 𝑦)
Locale : 𝑔 𝑥, 𝑦 = 𝑇 𝑓 𝑉(𝑥, 𝑦)
𝑉 𝑥, 𝑦 : voisinage de 𝑥, 𝑦
Globale: 𝑔 𝑥, 𝑦 = 𝑇 𝑓 𝑥, 𝑦 ,
∀ (𝑥, 𝑦)
1
10/12/2018
Convolution
En formalisant les coefficients de la combinaison
linéaire comme les intensités d’une image w, cela se
formalise comme une convolution discrète avec le
symbole *:
∞ ∞
g 𝑥, 𝑦 = 𝐼 ∗ 𝑊 𝑥, 𝑦 = 𝑖=−∞ 𝑗=−∞ 𝑊 𝑖, 𝑗 𝐼 𝑥 − 𝑖, 𝑦 − 𝑗
𝑊 𝑥, 𝑦 est appelé masque de convolution, noyau de
convolution, filtre, fenêtre, kernel, …
Convolution numérique discrète
En pratique, la convolution numérique d'une image se fera par
une sommation de multiplications
Un filtre de convolution est une matrice (image) généralement
de taille impaire et symétrique: 3x3, 5x5, 7x7, …
2
10/12/2018
Convolution numérique discrète
Image 𝐼
Filtre (noyau de convolution)
𝑊
Convolution numérique discrète
𝑔
𝑔 1,1 =
𝐼 0,0 𝐾 0,0 + 𝐼 0,1 𝐾 0,1 + 𝐼 0,2 𝐾 0,2 +
𝐼 1,0 𝐾 1,0 + 𝐼 1,1 𝐾 1,1 + 𝐼 1,2 𝐾 1,2 +
𝐼 2,0 𝐾 2,0 + 𝐼 2,1 𝐾 2,1 + 𝐼 2,2 𝐾 2,2
3
10/12/2018
Convolution numérique discrète
𝑔
𝑔 1,2 =
𝐼 0,1 𝐾 0,0 + 𝐼 0,2 𝐾 0,1 + 𝐼 0,3 𝐾 0,2 +
𝐼 1,1 𝐾 1,0 + 𝐼 1,2 𝐾 1,1 + 𝐼 1,3 𝐾 1,2 +
𝐼 2,1 𝐾 2,0 + 𝐼 2,2 𝐾 2,1 + 𝐼 2,3 𝐾 2,2
Convolution numérique discrète
𝑔
𝒈 𝒙, 𝒚 =
𝑰 𝒙 − 𝟏, 𝒚 − 𝟏 𝑲 𝟎, 𝟎 + 𝑰 𝒙 − 𝟏, 𝒚 𝑲 𝟎, 𝟏 + 𝑰 𝒙 − 𝟏, 𝒚 + 𝟏 𝑲 𝟎, 𝟐 +
𝑰 𝒙, 𝒚 − 𝟏 𝑲 𝟏, 𝟎 + 𝑰 𝒙, 𝒚 𝑲 𝟏, 𝟏 + 𝑰 𝒙, 𝒚 + 𝟏 𝑲 𝟏, 𝟐 +
𝑰 𝒙 + 𝟏, 𝒚 − 𝟏 𝑲 𝟐, 𝟎 + 𝑰 𝒙 + 𝟏, 𝒚 𝑲 𝒙 + 𝟏, 𝒚 + 𝟏 + 𝑰 𝟐, 𝟑 𝑲 𝟐, 𝟐
4
10/12/2018
Convolution numérique discrète
Problème : Que faire avec les ? ? ? ? ?
bords de l'image ? ?
? ?
?
Mettre à zéro (0) ?
Convolution partielle
Sur une portion du noyau
? ?
Miroir de l'image
𝑓(−𝑥, 𝑦) = 𝑓(𝑥, 𝑦)
… (pas de solution miracle)
Convolution numérique discrète
Problème : Que faire avec les bords de l'image ?
5
10/12/2018
Masque de convolution
Le masque de convolution représente un filtre
linéaire permettant de modifier l'image
On divisera le résultat de la convolution par la
somme des coefficients du masque
Pour éviter de modifier la luminance globale de l'image,
la somme des coefficients doit être égale à 1
Filtrage et convolution
Un filtre est défini comme une transformation linéaire
de l’image invariante par translation.
Théorème : tout filtre peut s’écrire comme une
convolution.
6
10/12/2018
Le filtre moyenneur
(Moyenne glissante)
Le filtre moyenneur
Permet de lisser l'image (smoothing)
Remplace chaque pixel par la valeur moyenne de ses voisins
Réduit le bruit
Réduit les détails non-important
Brouille ou rend floue l'image (blur edges)
Filtre dont tous les coefficients sont égaux
1/9 1/9 1/9 1 1 1
1/9 1/9 1/9 ou 1/9 1 1 1
1/9 1/9 1/9 1 1 1
Moyenne glissante
On remplace l’intensité de chaque pixel par la
moyenne des intensités dans un voisinage de taille
(2𝑁 + 1) × (2𝑁 + 1):
𝑁=0 𝑁=5 𝑁 = 20
7
10/12/2018
Moyenne glissante: Séparabilité
On peut réécrire ce calcul en deux étapes: lissage vertical puis
lissage horizontal (ou l’inverse)
𝟏 𝑵 𝟏 𝑵
𝑰𝒉 𝒙, 𝒚 = (𝟐𝑵+𝟏) 𝒊=−𝑵 𝑰(𝒙 − 𝒊, 𝒚), et 𝑰𝒗 𝒙, 𝒚 = (𝟐𝑵+𝟏) 𝒊=−𝑵 𝑰𝒉 (𝒙, 𝒚 − 𝒋)
On passe de 𝑛 × 𝑚 × 2𝑁 + 1 2 opérations à 2 × 𝑛 × 𝑚 × 2𝑁 + 1
𝑰 𝑰𝒉 𝑰𝒗
Le filtre moyenneur (Passe bas)
Filtre de taille: 3,5,9,15,35
8
10/12/2018
Le filtre Gaussien
Fonction gaussienne 3D Image d'une gaussienne
Le filtre gaussien donnera un meilleur 1 2 3 2 1
lissage et une meilleure réduction du 2 6 8 6 2
3 8 10 8 3
bruit que le filtre moyenne 1/98 ×
2 6 8 6 2
1 2 3 2 1
Filtre Gaussien
On remplace l’intensité de chaque pixel par la moyenne des intensités dans un
voisinage de taille (𝟐𝑵 + 𝟏) × (𝟐𝑵 + 𝟏) en pondérant par un poids décroissant avec la
distance suivant une loi Gaussienne de déviation standard 𝝈:
𝑁 𝑁
1
𝐼′ 𝑥, 𝑦 = 𝑊 𝑖, 𝑗 𝐼(𝑥 − 𝑖, 𝑦 − 𝑗)
𝑧
𝑖=−𝑁 𝑗=−𝑁
𝑖 2 +𝑗 2 𝑁 𝑁
avec 𝑊 𝑖, 𝑗 = exp − 2𝜎2
, et 𝑍 = 𝑖=−𝑁 𝑗=−𝑁 𝑊 𝑖, 𝑗
𝜎=5 𝜎=5 𝜎=20
9
10/12/2018
Convolution
Propriétés de la convolution:
Transformation linéaire:
𝑾 ∗ 𝑰𝟏 + 𝑰𝟐 = 𝑾 ∗ 𝑰𝟏 + 𝑾 ∗ 𝑰𝟐
𝑾 ∗ (𝜶𝑰) = 𝜶(𝑾 ∗ 𝑰)
Invariante par translation. Si on définit la translation par 𝒕 ∈ 𝒁𝟐comme:𝑰′ =
𝑻 𝒕, 𝑰 ↔ 𝑰′ 𝒙, 𝒚 = 𝑰(𝒙 − 𝒕𝒙 , 𝒚 − 𝒕𝒚 ),
alors 𝒘 ∗ 𝑻 𝒕, 𝑰 = 𝑻(𝒕, 𝑾 ∗ 𝑰)
Commutative 𝒇 ∗ 𝒈 = 𝒈 ∗ 𝒇
Associative 𝒇 ∗ 𝒈 ∗ 𝒉 = 𝒇 ∗ 𝒈 ∗ 𝒉
l’image 𝜹 𝒙, 𝒚 = 𝟏 𝒔𝒊 𝒙 = 𝒚 = 𝟎, 𝟎 𝒔𝒊𝒏𝒐𝒏,est l’identité pour la convolution,
i,e,: 𝒇 ∗ 𝜹 = 𝒇
Filtre de dérivée
Dérivée partielle d’une fonction 2D suivant la
direction x:
𝜕𝐼 𝐼 𝑥+ℎ,𝑦 −𝐼(𝑥,𝑦)
𝐼𝑥 = 𝜕𝑥 𝑥, 𝑦 = lim ℎ
ℎ→0
approximation pour image échantillonnée:
𝜕𝐼
𝑥, 𝑦 ≈ 𝐼 𝑥 + 1, 𝑦 − 𝐼 𝑥, 𝑦
𝜕𝑥
𝜕𝐼 1
𝑥, 𝑦 ≈ 𝑖=−1 𝑊 𝑖 𝐼 𝑥 − 𝑖, 𝑦 = 𝐼 ∗ 𝑊 𝑥, 𝑦
𝜕𝑥
avec 𝑊 = [0, −1,1]
10
10/12/2018
Filtre de dérivée centré
Formulation centrée:
Dérivée partielle d’une fonction 2D suivant la direction 𝑥:
𝜕𝐼 𝐼 𝑥+ℎ,𝑦 −𝐼(𝑥−ℎ,𝑦)
𝑥, 𝑦 = lim
𝜕𝑥 ℎ→0 2ℎ
approximation pour image échantillonnée:
𝜕𝐼 1
𝑥, 𝑦 ≈ 𝐼 𝑥 + 1, 𝑦 − 𝐼 𝑥 − 1, 𝑦
𝜕𝑥 2
𝜕𝐼 1
𝜕𝑥
𝑥, 𝑦 ≈ 𝑖=−1 𝑊 𝑖 𝐼(𝑥 − 𝑖, 𝑦),
1 1
avec 𝑊 −1 = −2,𝑊 0 = 0, 𝑊 1 = 2 , i.e. 𝑊 = −1,0,1 /2
Filtre de dérivée centré
|𝐼𝑥 | grand forte variation pour un déplacement horizontal
|𝐼𝑦 | grand forte variation pour un déplacement vertical
𝐼 𝐼𝑥 𝐼𝑦
11
10/12/2018
Filtres non-linéaires - Filtre Médian
Pour nettoyer le bruit dans une image, il existe mieux que
le filtre moyenneur ou le filtre gaussien.
Il s'agit du filtre médian
C'est un filtre non-linéaire, qui ne peut pas s'implémenter
comme un produit de convolution
On remplace la valeur d'un pixel par la valeur médiane
dans son voisinage NxN
Filtres non-linéaires - Filtre Médian
Exemple :
30 10 20
10 250 20
25 10 30
Moyenne = 45
10, 10, 10, 20, 20, 25, 30, 30, 250
Médiane = 20
Les extrémités représentes le bruit
12
10/12/2018
Filtres non-linéaires - Filtre Médian
Original Moyenne 3x3 Médiane3x3
Filtrage comparaison
Image originale Bruit Poivre et Sel Moyenne V8
Min V8 Max V8 Médian V8
13