Vous êtes sur la page 1sur 69

TRAITEMENT D’IMAGES

CHAPITRE 3

CONVOLUTION ET FILTRAGE
D’IMAGES

ISTIC LGLSI2
PLAN DU CHAPITRE
 Transformations de voisinage
 Produit de convolution
 Filtrage d’images
 Filtrage dans le domaine spatial
 Réduction des dégradations: filtre moyenneur, médian,
Gaussien, passe haut, passe bas
 Accentuation des détails: Gradient et Laplacien

 Filtrage dans le domaine spectral


Transformation spectrale: transformée de Fourier
 Principe du filtrage avec la transformée de Fourier 2/69
TRANSFORMATIONS DE VOISINAGE
La nouvelle valeur d’un pixel tient compte des pixels
appartenant au voisinage du pixel considéré.

Pixel d’origine Pixel résultat

i i

Voisinage
j
j
3/69
TRANSFORMATIONS DE VOISINAGE
• Exemple d’une transformation de voisinage
• La moyenne des 5 pixels voisins.
• Taille du voisinage : 5 pixels voisins, 9 pixels
voisins, 25 pixels voisins.
• Forme du voisinage : carré, rectangle, hexagone,
octogone, ou bien une forme quelconque.

4/69
PRODUIT DE CONVOLUTION

5/69
PRODUIT DE CONVOLUTION
• Le produit de convolution continu d’une fonction f par une
fonction g est défini par :
 Cas 1D: f * g ( x)   g ( ). f ( x   )d

 Cas 2D: f * g ( x, y )   g ( ,  ). f ( x   , y   ) dd

• La fonction f est la fonction originale


• La fonction g est appelée: noyau de la convolution ou
masque de convolution ou filtre ou fenêtre ou Kernel….
• La fonction résultat est la fonction convoluée (résultat de
la convolution) 6/69
PRODUIT DE CONVOLUTION
Dans le cas discret, la double intégrale est remplacée par une
double somme et on obtient :

f *g(i, j)  g(k,l).f (i k, j l)


k l

Propriétés de la convolution:
 Commutativité: f *g  g* f

 Associativité: ( f *g)*h  f *(g *h)  f *g *h


7/69
 Distributivité: f *(g  h)  ( f * g)  ( f *h)
PRODUIT DE CONVOLUTION
• Dans le cas discret, (le cas d’une image numérique), le
noyau de convolution est généralement (mais pas
toujours) une matrice (image) de taille impaire, exemple
3x3 5x5 7x7

• Exemples de noyaux de convolution (3x3) et (5x5):

-1 0 1

-2 0 2

-1 0 1
8/69
ALGORITHME DE LA CONVOLUTION DISCRÈTE
Si le noyau de convolution g est de de taille 3x3  alors F = f*g
(la convolution de f par g) peut être calculée par l’algorithme
suivant:
F = zeros(N,N)
for i = 2:N-1
for j = 2:N-1
for k = 1:3
for l = 1:3
F(i,j)= F(i,j) +g(k,l)*f(i+k-2, j+l-2)
end
end
end
end 9/69

• Remarque: pas de valeurs calculées pour les bords de l’image


ALGORITHME DE LA CONVOLUTION DISCRÈTE
Exemple sur une image avec un noyau de convolution K de
taille 3x3

10/69
ALGORITHME DE LA CONVOLUTION DISCRÈTE
PROBLÈME DES BORDS DE L’IMAGE
Pas de valeurs calculées pour les bords de l’image

15/69
PROBLÈME DES BORDS DE L’IMAGE

Pour calculer les valeurs pour les bords de l’image, nous


avons besoin de points situés à l’extérieur de l’image

16/69
SOLUTIONS POUR LES BORDS DE L’IMAGE
 création d’une image de plus grande taille (par
emeple L+2, C+2 pour un noyau 3x3)
 Considérer une valeur par défaut (exemple mettre 0).
 Miroirisation : imaginer un miroir sur le bord, ceci

provoque l’effet de symétrie.


 Périodisation : considérer que l’image est périodique.

 Recopiage des valeurs du bord à l’extérieur de l’image.

 Ne pas calculer le produit de convolution sur le bord de

l’image.
 Pas de solution miracle…
17/69
EXEMPLE D’APPLICATION DU PRODUIT DE
CONVOLUTION

18/69
FILTRAGE D’IMAGES

19/69
FILTRAGE D’IMAGES
• Les techniques de filtrage essayent de réduire les
dégradations qu’a subi l’image.
• Il existe différentes catégories de filtres :
 Filtres opérant dans le domaine spatial:
 Opèrent généralement par convolution dans
l’espace (x,y) de l’image
 Filtres opérant dans le domaine fréquentiel:
 Transporter l’image vers un espace fréquentiel en
appliquant soit la transformée de Fourier soit
d’autres transformations
 Effectuer une sélection des fréquences

 Appliquer la transformée inverse 20/69


FILTRAGE SPATIAL

• L’utilisation principale de la convolution est le filtrage


d’images
• Filtrage d'images
• Filtre moyenneur
• Filtre passe haut

• Filtre passe bas

• Filtre Gaussien

• Rehaussement d’images par accentuation des détails


• Gradient
• Laplcien
21/69
FILTRE MOYENNEUR

• Principe
L’image résultat sera une image filtrée tel que chaque pixel
sera remplacé par la moyenne de son voisinage

• Effets
(+) Réduit le bruit,
(+) Lisse l’image
(-) Rend l’image floue

22/69
FILTRE MOYENNEUR

• Exemples de filtres moyenneurs dont tous les coefficients sont


égaux
• Pour éviter de modifier la luminance de l’image:
• le résultat du produit de convolution sera diviser par le
nombre de coefficients du filtre
• ou on utilise des coefficients non entières (on divise les
coefficients par le nombre de coefficients)

23/69

noyau g (3x3) noyau g (3x3) noyau g (5x5)


FILTRE MOYENNEUR

• Un exemple de filtre moyenneur dont les coefficients ne sont pas


égaux
1 2 1

1/17 2 5 2
1 2 1
noyau g (3x3)

• Le résultat sera une image filtrée telle que chaque pixel sera remplacé
par la moyenne pondérée de son voisinage 3x3
 Moyenne = le résultat du produit de convolution sera divisé par
la somme des coefficients du filtre (17)  pour éviter de modifier
la luminance de l’image
24/69
 Pondérée: attribuer plus de poids aux pixels les plus proches
FILTRE MOYENNEUR

Image originale Filtre moyenneur 5*5 Filtre moyenneur 11*11


25/69
FILTRES D’ORDRE

• Filtres non linéaires ne peuvent pas être


implémenté avec un produit de convolution
fournissent aussi de bons résultats.

• Principe:
 considérer les valeurs des pixels appartenant à
un voisinage V
 ordonner ces valeurs par ordre croissant
 sélectionner la valeur minimale (filtre
minimum)
 ou maximale (filtre maximum)
26/69
 ou bien médiane (filtre médian)
 Ou la kième valeur (filtre d’ordre k)
FILTRE MEDIAN

Exemple: filtre médian

Principe: remplacer la valeur du pixel par la valeur


médiane de son voisinage

27/69
FILTRE MOYENNEUR ET FILTRE MEDIAN

Remarque:
Le filtre médian ne peut pas être implémenté avec un produit de 28/69
convolution
EXERCICE 1
12 5 6 6
Soit une image I,  
un bruit impulsionnel est ajouté à cette image : 11 156 9 8
5 6 7 9
I(2,2) = 156  
6 9 11 4

1. Appliquer le filtre médian de taille 3*3 sur l’image I et


donner l’image résultat. Pour les bords de l’image, on
va utiliser une valeur par défaut = zéro.
2. Quelle remarque pouvez-vous faire sur l’image
résultat ? (c’est-à-dire dire à quoi a servi le filtre
médian dans cette question?)
3. Proposez le code Matlab pour implémenter ce filtrage. 29/69
EXERCICE 1 : CORRECTION
• Image résultat R:
Pour les bords : mettre à zéro les pixels sur les bords
ajoutés  création d’une matrice de taille L+2, C+2
R = 0 6 6 0
5 7 7 6
6 9 9 7
0 6 6 0
• Eliminer le bruit impulsionnel (la valeur 156 correspond à un
bruit impulsionnel  remplacé par la valeur 7)

30/69
EXERCICE 1 : CORRECTION
Code Matlab
[n,p]=size(I);
C=zeros(n+2,p+2);
C(2:n+1,2:p+1) = I(1:n,1:p);
R=zeros(n,p);
for i=2:n+1
for j=2:p+1
X=[C(i,j) C(i,j+1) C(i,j-1) C(i+1,j) C(i+1,j+1) C(i+1,j-1) C(i-1,j)
C(i-1,j+1) C(i-1,j-1)];
X=sort(X);
R(i-1,j-1)=X(5);
end
end
figure(); imshow(uint8(C))

• Tester le code ci-dessous sur l’image J


• Code Matlab permettant d’appliquer à l’image 'coins.png' le
bruit impulsionnel (Sel et Poivre). Image bruitée  image J
I=imread('coins.png');
J=imnoise(I,'salt & pepper’);
FILTRE PASSE HAUT

• Les filtres passe haut favorisent les hautes


fréquences spatiales qui correspondent aux détails
dans l’image
• Effet: amélioration du contraste
• Noyau du filtre passe haut comporte des valeurs
négatives autour du pixel central

32/69
FILTRE PASSE HAUT

• Objectif:
 Accentuer les zones de transitions (hautes
fréquences).

• Avantage:
 Éliminer le flou

• Inconvénient:
 Amplification du bruit dans les régions homogènes
33/69
FILTRE PASSE BAS

• Les filtres passe bas agissent en sens inverse du


filtre passe haut.
• Effet: adoucissement des détails et réduction du
bruit granuleux.

34/69
FILTRE BASSE BAS
FILTRE GAUSSIEN
• Le filtre Gaussien:
1 x2  y2
h ( x, y )  exp( )
 2 2 2

 C’est une moyenne pondérée de l'image en


fonction de la distance du pixel voisin
(coefficients de pondération déterminés sur une
fonction Gaussienne) 35/69

  est l’écart type de la Gaussienne


FILTRE BASSE BAS
FILTRE GAUSSIEN

• L'effet de ce filtre sur l'image est assez similaire au filtre


moyenneur (moyenne pondérée)
• Les pixels près du centre ont un effet ou un "poids" plus
important que ceux qui sont situés plus loin
• En pratique on effectue une convolution par un masque

• Exemple de masque
4 8 10 8 4
8 17 22 17 8
1
10 22 28 22 10
304
8 17 22 17 8 36/69

4 8 10 8 4
FILTRE BASSE BAS
FILTRE GAUSSIEN

• La largeur du filtre Gaussien est donnée par son


écart-type σ

• Pour un filtre Gaussien si:


 σ < 1 : réduction du bruit
 σ > 1 : fabrication d’une image qui sera utilisée
pour faire un « masque flou»

37/69
FILTRE BASSE BAS
FILTRE GAUSSIEN

• Si σ est plus petit qu’un pixel le lissage n’a


presque pas d’effet.
• Plus σ est grand, plus la cloche Gaussienne est
large, plus on réduit le bruit, mais plus l’image
filtrée est floue.
• Si σ est choisi trop grand, tous les détails de
l’image sont perdus.

 On doit donc trouver un compromis entre la


quantité de bruit à enlever et la qualité de l’image 38/69

en sortie
REHAUSSEMENT D’IMAGES PAR ACCENTUATION
DES DÉTAILS

• Calcul du Gradient
• Quelques opérateurs Gradient
 Gradient de Sobel
 Gradient de Prewitt

• Calcul du Laplacien

39/69
GRADIENT ET LAPLACIEN
• Les détails correspondent généralement à des changements de
niveau de gris = les contours de l'image
• Ils peuvent être mis en relief par la dérivée première ou bien
par la dérivée seconde
– Pas de changement  dérivée première est nulle
– Transition  dérivée première passe par un maximum et
dérivée seconde passe par zéro

Image avec 2 régions


Profil

40/69
Dérivée première
Dérivée seconde
GRADIENT ET LAPLACIEN
• En 2D on parle de Gradient et de Laplacien
2 f 2 f
G ( f ( x , y ))    f /  x   f  x 2  y 2
2

 f /y 

• Gradient est un vecteur dont le module donne la pente


maximale et la direction donne la direction de la plus forte
pente.

• Une des approximation du module du gradient :


G(f(x, y)) f(x, y) f(x1, y)  f(x, y) f(x, y 1) 41/69
GRADIENT
• L'approximation la plus sommaire du gradient dans la
direction x consiste à prendre la différence entre deux pixels
voisins en utilisant le masque de convolution 1 -1
1
dans la direction y
-1
1

• On utilise plus souvent 1 0 -1 , respectivement 0 qui


-1

produisent des frontières plus épaisses mais bien centrées

• Ces opérations étant très sensibles au bruit, on les combine en


général avec un filtre lisseur dans la direction orthogonale42/69
à
celle de dérivation, par exemple par le noyau 1 2 1
GRADIENT
• Le calcul des dérivées directionnelles en x et en y
revient finalement à la convolution avec les noyaux
suivants, respectivement :

Masques de Sobel
• fx(i,j) = (f*hx)(i,j)
• fy(i,j) = (f*hy)(i,j) -1 0 1 -1 -2 -1

-2 0 2 0 0 0

-1 0 1 1 2 1

Noyau hx Noyau hy

43/69
GÉNÉRATION DE L’IMAGE REHAUSSÉE
• Une fois la méthode d’approximation du gradient choisie,
l’image rehaussée par le gradient peut être générée de
différentes manières selon l’application.

 Méthode 1 Méthode 4
g ( x, y )  G ( f ( x, y )) G ( f ( x, y ))
g ( x, y )  
si G ( f ( x, y ))  Seuil
 L sin on

 Méthode 2 Méthode 5
G ( f ( x, y )) si G ( f ( x, y ))  Seuil
g ( x, y )   g ( x, y )  L si G ( f ( x, y ))  Seuil
 f ( x, y ) sin on

 Méthode 3 Méthode 6: Utilisation du module


et
L si G ( f ( x , y ))  Seuil de la direction du Gradient pour la 44/69
g ( x, y )  
 f ( x, y ) sin on détection des contours
DÉTECTION DES CONTOURS AVEC LE
GRADIENT
Méthode 6: détection des contours

45/69
DÉTECTION DES CONTOURS AVEC LE
GRADIENT

Le principe de la détection de contours par


l'utilisation du gradient consiste à:
• calculer d'abord le gradient de l'image dans deux
directions orthogonales puis le module du
gradient.
• effectuer une sélection des contours les plus
marqués, c'est-à-dire les points de plus fort
contraste par un seuillage adéquat, les directions
des contours étant orthogonales à la direction
α0 déterminée en tout pixel de l'image 46/69
DÉTECTION DES CONTOURS AVEC LE
GRADIENT
En considérant l'image dans un repère orthogonal (Oxy) tel
que (Ox) désigne l'axe horizontal et (Oy) l'axe vertical,

le gradient de l'image (ou plutôt de la luminance f ) en


tout point ou pixel de coordonnées (x,y) est désigné par :
 Le module du gradient permet de quantifier
l'importance du contour mis en évidence, c'est-à-dire
l'amplitude du saut d'intensité relevé dans l'image
 La direction du gradient permet de déterminer l'arête
présente dans l'image. En effet, la direction du gradient
est orthogonale à celle du contour
47/69
48/69
GRADIENT DE SOBEL
Gradient de Sobel
• Gradient horizontal et vertical

-1 0 1 -1 -2 -1

-2 0 2 0 0 0

-1 0 1 1 2 1

Noyau Gx Noyau Gy
 Résultat de la convolution: rehaussement du contour

49/69

Original Horizontal (Gx) Vertical (Gy) Vert+horiz


Noyau [-1 0 1]
Image originale

50/69
GRADIENT DE PREWITT

Gradient de Prewitt
• Gradient horizontal et vertical

-1 0 1 1 1 1

-1 0 1 0 0 0

-1 0 1 -1 -1 -1

Noyau Gx Noyau Gy

 Résultat de la convolution: rehaussement du contour

51/69
LAPLACIEN
• L'approximation par différences finies la plus
simple de la dérivée seconde est la convolution par
le noyau 1  2 1 pour l'approximation de  2 f
 1  2x
2 f
• et   2  pour l'approximation de 2
 y
 
 1 

52/69
LAPLACIEN

53/69
EXERCICE 2
• Soit l’image im1 suivante
• Appliquer le filtre linéaire défini par le masque 1x3 suivant
 1 0 1
puis représenter le résultat sur une matrice img1.
 1
• Appliquer le filtre linéaire défini par le masque 3x1 suivant 0
puis représenter le résultat sur une matrice img2.  
 1 
• Pour les bords de l’image, adopter la méthode de
miroirisation.
• Calculez l’image module selon la formule

• Donnez le code Matlab qui correspond à ce filtrage


54/69
EXERCICE 2 : CORRECTION
• Solution adoptée pour les bords :
Miroirisation (imaginer un miroir sur le bord)
 Création d’une matrice de taille L+2, C+2 : augmenter la
taille de l’image (ajouter 2 lignes, 2 colonnes)
 La ligne 1 copie de la ligne 1 originale de l’image
 La ligne n+2 copie de la ligne n originale de l’image
 La colonne 1 copie de la colonne 1 originale de l’image
 La colonne « c+2 » copie de la colonne « c » originale de
l’image
 Les pixels des coins copie des pixels des coins de
l’images originale.
55/69
EXERCICE 2 : CORRECTION
img1 img2
-1 -2 -2 -1
-1 -1 -1 13
-1 -2 12 13
-2 -2 12 11
-1 12 11 -2
-2 12 11 -6
13 11 -6 -4
-1 13 -2 -4

IMM

2 3 3 14
3 4 24 24
3 24 22 8 56/69

14 24 8 8
EXERCICE 2 : CORRECTION
[n,c]=size(im1);
for i=2:n+1
img1=zeros(n,c);
for j=2:c+1
img2=zeros(n,c);
img1(i-1,j-1) = imbord(i-1,j)-
imbord(i+1,j);
imbord=zeros(n+2,c+2);
end;
end;
for i=1:n
for j=1:c
for i=2:n+1
imbord(1,j+1)=im1(1,j);
for j=2:c+1
imbord(n+2,j+1)=im1(n,j);
img2(i-1,j-1) = imbord(i,j-1)-
imbord(i+1,1)=im1(i,1);
imbord(i,j+1);
imbord(i+1,c+2)=im1(i,c);
end;
end;
imbord(i+1,j+1)=im1(i,j);
for i=1:n
end;
for j=1:c
end;
MM(i,j) = abs(img1(i,j)) +
abs(img2(i,j)); 57/69
%%On n’a pas besoin des 4 pixels
end
%%(1,1) (1,c+2) (n+2,1) (n+2,c+2)
end
%%dans les calculs
FILTRAGE OPÉRANT DANS LE DOMAINE
FRÉQUENTIEL

• Transporte l’image vers un espace fréquentiel en


appliquant soit la transformée de Fourier soit
d’autres transformations, appelés transformations
spectrales
• Principe
 Appliquer la transformation spectrale
 Effectuer une sélection des fréquences
 Applique la transformée inverse (transporter l’image
dans le domaine spatial)

58/69
TRANSFORMATIONS SPECTRALES:

• Il y a plusieurs transformations spectrales:


• Transformée de fourrier
• Walsh
• Hadamard
• Cosinus
• Transformée en ondelettes

• On s’intéresse dans ce cours à la Transformée de


Fourrier
59/69
TRANSFORMÉE DE FOURIER
• La transformée de Fourier fait partie de toute une
famille de transformations qui porte l’image de
son espace d’origine dit « spatial » vers un
deuxième espace dit « fréquentiel ».

• Elle est réversible puisqu’il est possible de


retrouver la fonction de départ à partir de sa
transformée.

60/69
TRANSFORMÉE DE FOURIER
Transformée de Fourier 2D continue : (x,y) coordonnées
spatiales et (u, v) coordonnées fréquentielles

 TF directe : F (u , v )    f ( x, y )e ( 2 j ( ux  vy ))
dxdy

f(x, y) F(u,v)e


 TF inverse : (2j(ux  vy))
dudv

61/69
TRANSFORMÉE DE FOURIER DISCRÈTE
Soit f(x,y) définie par une matrice d’échantillons
régulièrement espacés :
 N : Le nombre de lignes
 M : Le nombre de colonnes
 x : Le pas d’échantillonnage selon x
 y : Le pas d’échantillonnage selon y
 posons :

f ( x, y )  f ( x 0  x.x, y 0  y.y )

62/69
TRANSFORMÉE DE FOURIER DISCRÈTE
Alors la TF-2D discrète est donnée par :

N 1M 1
F (u ,v) 1   f(x, y)exp(  2 j(ux / N vy / M ))
MN x 0 y 0

et sa transformée inverse est donnée par :

N 1M 1
f(x, y)F(u,v)exp(2j(ux/ N vy/ M))
u 0 v 0
63/69
TRANSFORMÉE DE FOURIER : INTÉRÊT
• Composantes fréquentielles en 2d
 basses fréquences spatiales: u2+v2 faible
 hautes fréquences spatiales: u2+v2 élevé
v

64/69
TRANSFORMÉE DE FOURIER : INTÉRÊT
• Dans le domaine spectral
 les basses fréquences représentent les grandes surfaces
homogènes et les parties floues
 les hautes fréquences représentent les contours, plus
généralement les changements brusques d'intensité et enfin
le bruit.

65/69
TRANSFORMÉE DE FOURIER : INTÉRÊT
• Objectif: isoler le signal du bruit
• Hypothèse: le bruit et le signal utile vont être portés par des
composantes fréquentielles différentes
 Signal BF (basses fréquences),
bruit HF (hautes fréquences)
• Débruitage: mettre les composantes fréquentielles
correspondant aux hautes fréquences à zéro

66/69
TRANSFORMÉE DE FOURIER: PROPRIÉTÉS
Produit de convolution:
 La transformée de Fourier d'un produit de
convolution est le produit des transformées de
Fourier

TF[f(x)*g(x)] F(u).G(u)
 Dans le domaine spectral (ou fréquentiel), le produit
de convolution se fait par multiplication

67/69
FILTRAGE DANS LE DOMAINE SPECTRAL

• Dans le domaine spatial, le filtrage se fait par le produit


de convolution
• Dans le domaine spectral (ou fréquentiel), il se fait par
multiplication

68/69
FILTRAGE DANS LE DOMAINE SPECTRAL

Principe du filtrage dans le domaine spectral

f(x,y) TF
F(u,v)
Image
d’entrée F(u,v) ×H(u,v)

h(x,y) TF TF-1
H(u,v)
Masque
f(u,v) *h(u,v)
Image filtrée
69/69

Vous aimerez peut-être aussi