Modification des valeurs d’une image
Pour l’instant, nous avons vu surtout des
transformations ponctuelles des pixels d’une image
Lire la valeur d’un pixel → la remplacer par une autre
Il existe aussi des transformations locales
Lire la valeur de quelques pixels voisins → calculer une nouvelle
valeur pour un pixel
…et des transformations globales
Lire la valeur de tous les pixels de l’image → calculer une
nouvelle valeur pour un seul pixel
2
Transformations des pixels
f g
T
(x0,y0) (x0,y0) Ponctuelle: g(x0,y0)=T[f(x0,y0)]
Locale: g(x0,y0)=T[f(V)]
V:voisinage de (x0,y0)
Globale: g(x0,y0)=T[f(x,y)]
par ex: TF
Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal. 3
Convolution numérique
La convolution discrète est un outil permettant l’utilisation de
filtres linéaires ou de filtres de déplacements invariants
L ’équation générale de la convolution, notée g(x), de la fonction
d’origine f(x) avec une fonction h(x) est :
g x = f x ∗h x =∑ h x−k f k
∀k
f(x) est la fonction d’origine et g(x) la fonction convoluée (résultat
de la convolution)
Dans notre cas, une image est vue comme une fonction mathématique
h(x) est appelé masque de convolution, noyau de convolution, filtre,
fenêtre, kernel, …
4
Exemple de convolution 2D
* =
Image d’origine Filtre de convolution Image convoluée
(masque) (résultat)
Note : par convention pratique, la taille de l’image
résultat est la même que celle de l’image d’origine
5
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 (mais pas toujours) de taille impaire et
symétrique
3x3, 5x5, 7x7, …
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 6
Convolution numérique
I * K
Noyau de convolution
Image
7
Convolution numérique R = I*K
K
R(1,1) = I(0,0) K(0,0) + I(1,0) K(1,0) + I(2,0) K(2,0)
+ I(0,1) K(0,1) + I(1,1) K(1,1) + I(2,1) K(2,1)
+ I(0,2) K(0,2) + I(1,2) K(1,2) + I(2,2) K(2,2)
8
Convolution numérique R = I*K
K
I R
R(2,1) = I(1,0) K(0,0) + I(2,0) K(1,0) + I(3,0) K(2,0)
+ I(1,1) K(0,1) + I(2,1) K(1,1) + I(3,1) K(2,1)
+ I(1,2) K(0,2) + I(2,2) K(1,2) + I(3,2) K(2,2)
9
Convolution numérique R = I*K
K
I R
R(x,y) = I(x-1,y-1) K(0,0) + I(x, y-1) K(1,0) + I(x+1, y-1) K(2,0)
+ I(x-1,y) K(0,1) + I(x,y) K(1,1) + I(x+1,y) K(2,1)
+ I(x-1,y+1) K(0,2) + I(x,y+1) K(1,2) + I(x+1,y+1) K(2,2)
10
Convolution numérique R = I*K
I R
R(N-2,M-2) = I(N-3,M-3) K(0,0) + I(N-2,M-3) K(0,1) + I(N-1,M-3) K(0,3)
+ I(N-3,M-2) K(1,0) + I(N-2,M-2) K(1,1) + I(N-1,M-2) K(1,2)
+ I(N-3,M-1) K(2,0) + I(N-2,M-1 )K(2,1) + I(N-1,M-1) K(2,2)
11
Convolution numérique
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 ? ?
f(-x,y) = f(x,y)
? ?
… (pas de solution miracle) ? ?
? ?
? ?
? ?
? ? ? ? ? ? ? ? ? ?
12
13
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
14
Deux types pour le filtrage spatial
Filtres passe-bas
Atténue le bruit et les détails
(basses fréquences)
lissage
Filtres passe-haut
Accentue les détails et les contours
(hautes fréquences)
accentuation
CVIPTools : Utilities>Filter>Specify a filter
15
Le filtre moyenneur
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
Exemple de filtres moyenneurs : 1 1 1 1 1
1/9 1/9 1/9 1 1 1 1 1 1 1 1
1/9 1/9 1/9 ou 1/9 1 1 1 1 1 1 1 1
1 1 1 1 1
1/9 1/9 1/9 1 1 1
1 1 1 1 1
3x3 5x5 16
CVIPTools : Utilities>Filter>Mean
Le filtre moyenneur
1 1 1
1/9 x 1 1 1 Lissage (flou apparent)
apparent
1 1 1
3x3 5x5 7x7 15x15
Plus le filtre grossit , plus le lissage devient
important et plus le flou s’accentue !
Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal. 17
Exemples de filtres moyenneurs
Original Moyenne 5x5 Moyenne 11x11
Source : monkey.geog.ucsb.edu/mh/115b/filter.pdf 18
Le filtre Gaussien
Fonction gaussienne en 3D Image d'une gaussienne
[ ]
1 2 3 2 1
Le filtre gaussien donnera un meilleure 2 6 8 6 2
lissage et une meilleure réduction du 1
×3 8 10 8 3
bruit que le filtre moyenne 98
2 6 8 6 2
1 2 3 2 1
CVIPTools : Utilities>Filter>Specify a blur>Gaussian 19
Exemples de filtres gaussiens
Original Gauss 5x5 Gauss 11x11
Source : monkey.geog.ucsb.edu/mh/115b/filter.pdf 20
Filtre médian (non-linéaire)
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
Moyenne = 45 bruit
30 10 20
10 250 20 10, 10, 10, 20, 20, 25, 30, 30, 250
25 10 30
médiane
CVIPTools : Utilities>Filter>Median 21
Exemple de filtre médian
Original Moyenne 3x3 Médian 3x3
Source : Gonzalez and Woods. Digital Image Processing. Prentice-Hall, 2002. 22
Nettoyage du bruit dans une image
Bruit "poivre et sel"
3 X 3 Moyenne 5 X 5 Moyenne
7 X 7 Moyenne Filtre médian
CVIPTools : Utilities>Creeate>Add noise 23
Image initiale Bruit Poivre & Sel Moyenne V8
Min V8 Max V8 Médian V8
Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montréal. 24
Références
(voir aussi la page web du cours)
Caroline Rougier. Cours de Traitement d'images (IFT2730). Université de
Montréal (Canada)
http://www-etud.iro.umontreal.ca/~rougierc/ift2730/
Chap10 : Filtrage : lissage, réhaussement d'images, détection de contours
http://www-etud.iro.umontreal.ca/~rougierc/ift2730/cours/Cours10_IFT2730_2008_2.pdf
25