Vous êtes sur la page 1sur 15

Chapitre 2 : Le prétraitement des images numériques Page 10

LE PRETRAITEMENT
DES IMAGES NUMERIQUES

2.1 Introduction
2.2 Les traitements ponctuels sur images
2.3 Les opérations géométriques sur images
2.4 Les opérations arithmétiques et logiques sur images
2.5 Le débruitage d’images par filtrage spatial 2D

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 11

2.1 INTRODUCTION
Comme déjà mentionné lors de la présentation de la composition fonctionnelle d’un
système de V. A., la première phase consiste à préparer l’image brute avant de la présenter à la
phase de segmentation.
L’image acquise par un capteur est généralement bruitée, male cadrée, et mal éclairée. Son
prétraitement consiste alors à :
- Régler sa luminance et son contraste, recadrer sa dynamique des niveaux des gris ou de
couleur, …
- Pivoter, Zoomer, Rogner, soustraire le fond de l’image, …
- Filtrer le bruit, accentuer les contours, …

Dans ce qui suit, nous allons développer chacune des opérations de prétraitement que l’image
doit subir :

2.2 LES TRAITEMENTS PONCTUELS SUR IMAGES


Un traitement ponctuel sur une image est une fonction mathématique qui modifie la
valeur du niveau de gris (ou couleur) d’un pixel sans se préoccuper de son voisinage.
Ce traitement sert à améliorer l’apparence de l’image sans réduire le bruit présent dans celle-ci.

Etant donnée une image initiale I(i,j). L’image finale traitée T(i,j) est la transformée de
I(i,j) par application de la fonction f( ) :
T(i,j) = f [I(i,j)]

Ce type de transformation est surtout utilisé pour:


o L’amélioration du contraste ;
o L’amélioration de la luminance ;
o Correction de la courbe tonale de l’écran d’affichage;
o L’inversion d’échelle (négatif) ;
o Seuillage d’histogramme ;
o Etc …

2.2.1 LES TRANSFORMATIONS LINEAIRES D’INTENSITE

Pour ce type de transformation, la fonction appliquée au pixel est de type linéaire:


T(i,j) = a  I(i,j) + b

N.B.: Lors de la programmation, il faut veiller à ce que la dynamique « d » maximale ne soit pas
dépassée. C'est-à-dire, si l’on a une image avec une dynamique de 256 niveaux de gris (8 bits),
alors prévoir les tests suivants:
- Si ( T(i,j) > 255 ) alors forcer T(i,j) = 255 ;
- Si ( T(i,j) < 0 ) alors forcer T(i,j) = 0 ;

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 12

Comme transformations linéaires, nous pouvons distinguer :

a. Création du négatif d’une image (inversion d’échelle) :

L’inversion d’échelle est obtenue pour: a = -1 et b = 255


T(i,j) = 255 - 1  I(i,j)

2500

2000

1500

1000

500

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

2500

2000

1500

1000

500

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Script Matlab pour une image en 256 niveaux de gris :

[l c]=size(I);
for i = 1 : l
for j = 1 : c
T(i,j)= 255 – I(i,j);
end
end

Script Matlab pour une image en couleurs RVB :

[l c r]=size(I); % r = 3 pour une image RVB


for k=1:3
for i = 1 : l
for j = 1 : c
T(i,j)= 255 – I(i,j,k);
end
end
end

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 13

Négatif d’une image en couleurs RVB

b. Amélioration de contraste

La procédure de changement de contraste se fait par :


b = 0 et a > 1  augmentation du contraste
b = 0 et a < 1  diminution du contraste

T(i,j) = a  I(i,j)

Script Matlab pour une image en 256 niveaux de gris :

[l c]=size(I);
for i = 1 : l
for j = 1 : c
T(i,j)= 1.5 * I(i,j); % a = 1.5 (augmentation de contraste)
if (T(i,j) > 255)
T(i,j) = 255;
end
end
end

255

255

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 14

c. Amélioration de luminance

La procédure d’amélioration de luminance se fait par :


a = 1 et b > 0  augmentation de la luminance ;
a = 1 et b < 0  diminution de la luminance ;
T(i,j) = I(i,j) + b

Script Matlab pour une image en 256 niveaux de gris :

[l c]=size(I);
for i = 1 : l
for j = 1 : c
T(i,j)= I(i,j) + 50; % b = 50 (augmentation de contraste)
if ((T(i,j) > 255)
T(i,j) = 255;
end
end
end

255

255

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 15

2.2.2 TRANSFORMATIONS D’INTENSITE PAR MANIPULATION D’HISTOGRAMMES


a. Normalisation d’histogramme :

Appelée aussi expansion de dynamique. Le but de ce traitement est d’exploiter toute la


dynamique de codage de l’image. Elle sert à rehausser le contraste de l’image.

La transformation T(i,j) de l’image initiale I(i,j) est donnée par :

( ) ( ) (( ) )

Où :
- I(i,j): niveau de gris initial ;
- T(i,j): niveau de gris final ;
- Nmin: Niveau de gris minimal (voir histogramme) ;
- Nmax: Niveau de gris maximal (voir histogramme) ;
- d: dynamique de l’image en bits ;

Normalisation d’histogramme d’une image en niveaux de gris

b. Egalisation d’histogramme :

L'égalisation d'histogramme est une transformation des niveaux de gris dont le principe
est d'équilibrer le mieux possible la distribution des pixels dans la dynamique (Idéalement, on
cherche à obtenir un histogramme plat).

( ) ( ) [ ( )]

Où :
- I(i,j): niveau de gris initial ;
- T(i,j): niveau de gris final ;
- Hc( ) : histogramme cumulé ;
- M x N: définition ou dimension de l’image en pixels ;
- d: dynamique de l’image en bits

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 16

Egalisation d’histogramme d’une image en niveaux de gris

Egalisation d’histogramme d’une image en couleurs RVB

c. Seuillage d’histogramme (binarisation d’une image) :

Un seuillage d’histogramme consiste à transformer une image de niveaux de gris ou


couleurs en une image binaire (0 et 1).
En prenant une valeur de seuil = S, la valeur du pixel sera calculée comme suit:

Si I(i,j) < S alors T(i,j) = 0


sinon T(i,j) = 1

N.B. : La fonction Matlab qui permet de seuiller une image est : im2bw( ).
Pour cela, l’image doit être au format double, et le seuil S une valeur réelle comprise entre 0 et 1.

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 17

2.3 LES OPERATIONS GEOMETRIQUES SUR IMAGES


Chaque pixel de l’image est défini par sa position (i,j) et son intensité I(i,j). Une
transformation géométrique modifie la position du pixel mais pas son intensité.
Des transformations géométriques sont souvent nécessaires pour adapter l’image aux
traitements ultérieurs ou pour corriger certaines distorsions introduites lors de l’acquisition.
Il peut être utile de modifier la taille de l’image ou son orientation ou même de déformer la
disposition géométrique de son contenu (position des pixels).

2.3.1 ROGNAGE D’UNE IMAGE


Dans le cas où l’on veut retenir de l’image initiale que des zones d’intérêts sans
modification de la géométrie du contenu, on procèdera par troncature (suppression de lignes
et/ou de colonnes) :

Exemple : l’instruction prédéfinie de Matlab « imcrop( ) »


I = imread('circuit.tif');
I2 = imcrop(I,[60 40 100 90]);
figure, imshow(I) ;figure, imshow(I2)

2.3.2 TRANSFORMATION PAR HOMOTHETIE D’UNE IMAGE


Si la transformation géométrique est destinée à compenser des déformations introduites
par le capteur (lord de la prise de vue), il faut bien entendu trouver le modèle de cette
déformation.
Les transformation géométriques les plus simples sont linéaires et sont définies par une matrice
carrée T(2 x 2) grâce à laquelle les coordonnées (i,j) de chaque pixel de l’image initiale sont
déplacés aux coordonnées (i’,j’) telles que :

i a a2 i
( ) = (a a22 ) (j)
j 2

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 18

a) Pour un changement de taille de l’image :


Prenons le cas pour un ‘Zoom’ de facteur 4, la valeur des coefficients de la matrice T sont :
a11=a22=2 et a12=a21=0.

Exemple : l’instruction prédéfinie de Matlab « imresize( ) »


I = imread('rice.png');
J = imresize(I, 2);
figure, imshow(I), figure, imshow(J)

b) Pour une rotation d’un angle  de l’image :


Pour cela, la matrice T aura la forme suivante :
( ) ( ) ()

Exemple : l’instruction prédéfinie de Matlab « imrotate( ) »


I1 = imread('pout.tif');
J1 = imrotate(I, 90);
figure, imshow(I1), figure, imshow(J1)

I2 = imread('circuit.tif');
J2 = imrotate(I,-10);
figure, imshow(I2), figure, imshow(J2)

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 19

2.4 OPERATIONS ARITHMETIQUES ET LOGIQUES SUR LES IMAGES


Les opérations arithmétiques que peuvent subir des images sont:
 l’addition et la soustraction: Utilisées pour supprimer le fond (backgroud), pour comparer
des images, pour la détection et l’estimation du mouvement, …etc.
 La multiplication: Utilisée pour le masquage (multiplication par matrice à masques)
 La division.

Les opérations logiques que peuvent subir des images sont:


 Le ET logique
 Le OU logique
 Le NON logique

Ces opérations sont appliquées au niveau pixel:

I3(i,j) = I1(i,j) opérateur I2(i,j)

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 20

2.5 LE DEBRUITAGE D’IMAGES PAR FILTRAGE SPATIAL 2D


Filtrer une image c'est lui appliquer une transformation mathématique qui modifie la
valeur du niveau de gris des pixels. Si la fonction prend en compte les valeurs de gris au
voisinage de chaque pixel transformé, on parle alors de fonction de convolution.
Le filtrage est donc réalisé au moyen d’un produit de convolution de l’image source avec une
matrice notée h appelée de filtre ou masque de convolution.
Ce masque est le plus souvent de forme carrée, symétrique et de taille impaire (3×3, 5×5,7×7, …).
On veillera à ce que la somme des coefficients du masque ne soit pas supérieure à 1 pour ne pas
saturer l’image filtrée. On prend généralement cette somme égale à .

2.5.1 OBJECTIFS DU FILTRAGE


- Eliminer ou atténuer le bruit (restauration d’images)
- Sélectionner des parties du signal contenant une information pertinente (détection de
contours, sélection de points d’intérêts, …)
- Séparer plusieurs composantes d’un signal,
- Etc…

2.5.2 PROCEDURE DU FILTRAGE SPATIAL


L’opération de convolution est calculée en tout point de l’image source en 3 étapes :
1. On centre le masque (par exemple un masque carré de taille 3 x 3) sur le pixel courant,
2. On calcule les 9 produits entre la valeur de l’image et la valeur du masque superposé,
3. Puis on somme les 9 produits pour obtenir la valeur du pixel de l’image filtrée.

On résume l’opération de convolution par la formule suivante :


( ) ( )

( ) ∑ ∑ ( ) ( )
( ) ( )
Où :
- S : image filtrée
- E : image source (bruitée)
- h : masque de taille (N x N)

Exemple pratique:

Image source h : masque de convolution de taille 3 x 3

L’ancienne valeur du pixel central (= 25) sera remplacée par la nouvelle valeur =
S=(-1)x4 + (-0.5)x8 + (0)x45 + (-0.5)x7 + (0)x25 + (0.5)x54 + (0)x33 + (0.5)x54 + (0.5)x 65 = 75

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 21

2.5.3 LES FILTRES LINEAIRES


En fonction du filtre utilisé, on pourra obtenir différents effets visuels. Il en existe deux
familles de filtres linéaires :
 Les filtres lisseurs (filtres passe-bas) qui suppriment les contours hautes fréquences, et ont
tendance à rendre l’image floue.
 Les filtres détecteurs de contours (ou filtres passe-haut) accentuent les composantes hautes
fréquences. Ce type de filtre sera traité dans un chapitre séparé.

a) Le filtre moyenneur (filtre lisseur – filtre passe-bas):


Basé sur une simple convolution qui, pour chaque pixel, il calcule la moyenne de tous son
voisinage. Qu’il soit de taille (3x3), (5x5) ou plus, tous ses coefficients sont égaux.

Filtre moyenneur 3x3 Filtre moyenneur 5x5

b) Le filtre Gaussien (filtre lisseur – filtre passe-bas)


La fonction Gaussienne à deux dimensions est donnée par :

𝑥2 +𝑦2
𝐺(𝑥 𝑦) 𝑒 2𝜎2
𝜋𝜎

Pour une image numérisée, x et y sont les coordonnées entières des pixels.La construction du
noyau de convolution (filtre) gaussien consiste à calculer la valeur de cette fonction G(x,y)
autour du point x = 0 et y = 0.

Exemple de calcul :
Le filtre gaussien de dimension (3x3) est obtenu en remplaçant pour chaque cellule, les valeurs
de x et y correspondantes dans l’équation G(x,y) :
y
x = -1 x = -1 x= -1
y = -1 y=0 y = +1
x=0 x=0 x=0
y = -1 y=0 y = +1
x x= +1 x= +1 x= +1
y = -1 y=0 y = +1

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 22

Pour un écart-type  = 0.8, nous obtenons les valeurs :

0.0625 0.125 0.0625

0.125 0.25 0.125

0.0625 0.125 0.0625

Pour un écart-type  = 1.0, le filtre 5x5 obtenu est :


1 4 6 4 1
4 18 30 18 4
6 30 48 30 6
4 18 30 18 4
1 4 6 4 1

Remarque :
Les 2 types de filtres linéaires présentés ci-dessus sont des filtres passe-bas, par conséquent ils :
- atténuent les détails de l’image (et donc le bruit additif)
- érodent les contours
- ajoutent du flou à l’image.

Dans la section suivante, nous allons étudier des filtres non linéaires qui permettront d’atténuer
le flou.

2.5.4 LES FILTRES NON LINEAIRES


Afin de préserver les contours présents dans une image, des opérateurs non linéaires ont été
développés.
Les plus célèbres sont :
- Les Filtres d’ordre : Le filtre Médian, le filtre MIN, et le filtre MAX.
- Le filtre SNN (symmetric nearest neighbor).

a) Le filtre Médian
Pour ce type de filtre, on ne réalise pas une convolution. Ce filtre attribue pour un pixel donné, la
valeur médiane (centrale) des niveaux de gris de son voisinage.

Exemple :
Calculons un filtrage médian de voisinage 3x3 sur l’image suivante :

La valeur initiale du pixel centrale (250) sera remplacée par la valeur médiane des 9 valeurs du
voisinage, c.à.d. la valeur : 25

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 23

b) Les filtres MIN ou MAX


Pour ce type de filtre, on attribue pour un pixel donné la valeur MIN ou MAX (selon le filtre) des
niveaux de gris de son voisinage.
Prenons le cas de l’exemple précédent :
- Pour le filtre MIN, la valeur 250 sera remplacée par 10
- Pour le filtre MAX, la valeur 250 sera maintenue (250)

c) Le filtre « Symetric Nearest Neighbor -SNN » (Plus proche voisin symétrique)


Le filtre SNN est plus performant que les filtres d’ordre (médian / min / max). Il utilise à la fois la
valeur des niveaux de gris ainsi que leur répartition spatiale. On fait l’hypothèse que le voisinage
centré sur le point M est parcouru par au plus une frontières :

P1 P2 P3
Q4 M P4
Q3 Q2 Q1

Le filtre procède en 2 temps :


1. Dans un premier temps :
Le voisinage est décomposé en paires de points (Pi,Qi) symétriques par rapport au point M.
Dans un voisinage (3 x 3) (voir figure ci-dessus), on obtient 4 paires de points. Pour chaque
paire, on ne conserve que le point le plus proche de M (du point de vue niveau de gris).
2. Dans un deuxième temps :
On applique un lissage classique sur l’ensemble des points retenus, le plus souvent c’est un
filtre moyenneur.

Exemple :
1. Recherche des paires de points et choix des pixels à retenir :

7 11 12
8 23 17
5 20 15

2. Calcul d’une simple moyenne sur les pixels retenus :


M = 1/5 *(23+20+12+17+15) = 17.4

Le pixel central sera donc remplacé par le niveau : 17

7 11 12
8 17 17
5 20 15

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL
Chapitre 2 : Le prétraitement des images numériques Page 24

Comment régler le problème du filtrage des bords de l’image ?


Plusieurs solutions sont adoptées, selon le cas, pour contourner le problème du filtrage aux
bords de l’image, on peut citer :
1. Carrément ne pas filtrer les bords de l’image.
2. Dilater l’image en ajoutant des lignes et des colonnes de zéros aux bords (droit – gauche –
bas – haut).
3. Créer une symétrie horizontale et verticale de l’image.
4. Convoluer l’image sur une portion du masque.
5. Etc …

Qu’appelle-t-on un filtre séparable ?


Un filtre 2D est dit séparable s’il est possible de décomposer le noyau de convolution h2D en deux
filtres 1D appliqués successivement en horizontal puis en vertical (ou inversement) :

Où le symbole  désigne le produit tensoriel. On peut alors traiter séparément les lignes et les
colonnes de l’image.
C.à.d. :

Exemple de filtres séparables :

⁄ ⁄ ⁄
⁄ ⁄ ⁄ [ ] [ ⁄ ⁄ ⁄ ]
[ ⁄ ⁄ ⁄ ]

[ ] [ ] [ ]

Support de cours - Vision Artificielle (Master ESE – Semestre 3 – 2017/2018) Pr. Abdelhamid LOUKIL

Vous aimerez peut-être aussi