03 convolution
TRANSCRIPT
Traitement d'imagesConvolution spatialeAlain Boucher - IFI
Modification des valeurs dune image
Pour linstant, nous avons vu surtout des transformations ponctuelles des pixels dune image
Lire la valeur dun 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 limage calculer une nouvelle valeur pour un seul pixel2
Transformations des pixelsf(x0,y0)
T(x0,y0)
g 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: TFSource : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montral.3
Convolution numrique
La convolution discrte est un outil permettant lutilisation de filtres linaires ou de filtres de dplacements invariants L quation gnrale de la convolution, note g(x), de la fonction dorigine f(x) avec une fonction h(x) est :
g x = f x h x = h xk f k k
f(x) est la fonction dorigine et g(x) la fonction convolue (rsultat de la convolution)
Dans notre cas, une image est vue comme une fonction mathmatique
h(x) est appel masque de convolution, noyau de convolution, filtre, fentre, kernel, 4
Exemple de convolution 2D
*
=
Image dorigine
Filtre de convolution (masque)
Image convolue (rsultat)
Note : par convention pratique, la taille de limage rsultat est la mme que celle de limage dorigine5
Convolution numrique discrte
En pratique, la convolution numrique d'une image se fera par une sommation de multiplications Un filtre de convolution est une matrice (image) gnralement (mais pas toujours) de taille impaire et symtrique
3x3, 5x5, 7x7,
Convolution dune image par un filtre 2D :
I ' i , j = I i , j filtre i , j I ' i , j = I iu , jvfiltre u ,vu v6
Convolution numrique
I
*
K
Noyau de convolution
Image7
Convolution numrique R = I*KK R I
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 numrique R = I*KK
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 numrique 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 numrique R = I*K
I K
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 numrique
Problme : Que faire avec les bords de l'image ?
Mettre zro (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 reprsente un filtre linaire permettant de modifier l'image On divisera le rsultat 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
Attnue le bruit et les dtails (basses frquences) lissage
Filtres passe-haut
Accentue les dtails et les contours (hautes frquences) accentuation15
CVIPTools : Utilities>Filter>Specify a filter
Le filtre moyenneur
Le filtre moyenneur
Permet de lisser l'image (smoothing) Remplace chaque pixel par la valeur moyenne de ses voisins Rduit le bruit Rduit les dtails non-important Brouille ou rend floue l'image (blur edges)
Filtre dont tous les coefficients sont gaux Exemple de filtres moyenneurs : 11/9 1/9 1/9 1/9 1/9 ou 1/9 1 1 1 1 1 1 11 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 116
1/9 1/9 1/9
1/9 11
CVIPTools : Utilities>Filter>Mean
3x3
5x5
Le filtre moyenneur
1
1 1 1
1 1 1
1/9 x
1 1
Lissage (flou apparent) apparent
3x3
5x5
7x7
15x15
Plus le filtre grossit , plus le lissage devient important et plus le flou saccentue !Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montral.17
Exemples de filtres moyenneurs
Original
Moyenne 5x5
Moyenne 11x1118
Source : monkey.geog.ucsb.edu/mh/115b/filter.pdf
Le filtre Gaussien
Fonction gaussienne en 3D
Image d'une gaussienne
Le filtre gaussien donnera un meilleure lissage et une meilleure rduction du bruit que le filtre moyenneCVIPTools : Utilities>Filter>Specify a blur>Gaussian
1 2 1 3 98 2 1
[ ]2 3 2 1 6 8 6 2 8 10 8 3 6 8 6 2 2 3 2 119
Exemples de filtres gaussiens
Original
Gauss 5x5
Gauss 11x1120
Source : monkey.geog.ucsb.edu/mh/115b/filter.pdf
Filtres non-linaires(autre que convolution)
21
Filtre mdian (non-linaire)
Pour nettoyer le bruit dans une image, il existe mieux que le filtre moyenneur ou le filtre gaussien Il s'agit du filtre mdian C'est un filtre non-linaire, qui ne peut pas s'implmenter comme un produit de convolution On remplace la valeur d'un pixel par la valeur mdiane dans son voisinage NxNMoyenne = 4530 10 25 10 250 10 20 20 30
bruit
10, 10, 10, 20, 20, 25, 30, 30, 250
mdianeCVIPTools : Utilities>Filter>Median22
Exemple de filtre mdianOriginal Moyenne 3x3 Mdian 3x3
Source : Gonzalez and Woods. Digital Image Processing. Prentice-Hall, 2002.
23
Nettoyage du bruit dans une image
Bruit "poivre et sel" 3 X 3 Moyenne 5 X 5 Moyenne
7 X 7 MoyenneCVIPTools : Utilities>Creeate>Add noise
Filtre mdian24
Image initiale
Bruit Poivre & Sel
Moyenne V8
Min V8
Max V8
Mdian V825
Source : Caroline Rougier. Traitement d'images (IFT2730). Univ. de Montral.
Rfrences
(voir aussi la page web du cours)
Caroline Rougier. Cours de Traitement d'images (IFT2730). Universit de Montral (Canada)
http://www-etud.iro.umontreal.ca/~rougierc/ift2730/ Chap10 : Filtrage : lissage, rhaussement d'images, dtection de contours http://www-etud.iro.umontreal.ca/~rougierc/ift2730/cours/Cours10_IFT2730_2008_2.pdf
26