03 Convolution

Embed Size (px)

Citation preview

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