Master : Systèmes d’Information Décisionnels et
Imagerie
Module : Traitement Numérique d’images
Chapitre 2: Transformation d’image et Filtrage
Professeur : Ahmad EL ALLAOUI
Département d’Informatique, FST Errachidia
[Link]@[Link]
Année universitaire :2024/2025
Chapitre 2 : Transformation
d’image et Filtrage
Transformation
• Principe : Changer la valeur de chaque pixel d’une
image I pour obtenir une nouvelle image I’. Cette image
résultat a même taille que I, mais des propriétés plus
intéressantes.
• Notation : La transformation est notée 𝒕 : 𝑰𝑵 𝒙×𝑵𝒚 ➔
𝑰′𝑵𝒙×𝑵𝒚
• Types de transformations : En traitement d’image, on
peut considérer 3 types de transformations :
– Ponctuelle (ou pixel à pixel)
– Locales (ou de Voisinage)
– Globales
3
Transformation
Ponctuelle (Pixel à pixel): la nouvelle valeur I’(x,y) est obtenue à partir de I(x,y)
seulement.
Exemple:
• Seuillage
• Ajustement luminosité ou contraste
• Opérations algébriques
• Manipulation d’histogramme
4
Transformation
Locales (ou de Voisinage) : La nouvelle valeur I′ (𝑥, 𝑦) est obtenue à partir de
l’ensemble des valeurs initiales I (𝜗(𝑥, 𝑦)) dans un voisinage autour du pixel
de coordonnées 𝑥, 𝑦 .
Exemple:
• Filtrage
5
Transformation
Globales : La nouvelle valeur 𝑖′ (𝑥, 𝑦) est obtenue à partir de l’ensemble des
valeurs de l’image initiale 𝐼
Exemple:
• Transformation de Fourier
6
Transformation :LUT (Look-Up Table)
• LUT (table de correspondance) est une transformation
ponctuelle T qui permet de la modification de niveau de gris
d’un pixel I(x,y) de l’image en une nouvelle valeur I’(x,y) pour
obtenir une image finale.
• Il définit par cette table la nouvelle valeur des ixels
7
Transformation :LUT (Look-Up Table)
8
Transformation :LUT (Look-Up Table)
9
Transformation :LUT (Look-Up Table)
10
Amélioration du contraste
11
Amélioration du contraste
12
Amélioration du contraste
• Recadrage de la dynamique : Transformation linéaire simple
Expansion de la dynamique (Recadrage) : Cette technique est
utilisée lorsque l’image est trop claire, trop foncée ou peu
contrastée
• Soit 𝒊𝒎𝒊𝒏, 𝒊𝒎𝒂𝒙 la dynamique de l’image initiale avec 𝒊𝒎𝒊𝒏 et
𝒊𝒎𝒂𝒙 sont respectivement les niveaux de gris minimal et maximal
présents dans l’image. La dynamique maximale est [0,255].
• Le but du recadrage dynamique est de redistribuer les niveaux de
gris de l’image pour qu’ils occupent toute la bande de nuances
possible, c-à-d. la dynamique maximale.
13
Transformation linéaire simple
14
RQ: Pas d’effet si Imin=0 et Imax=255
Transformation linéaire simple
15
Transformation linéaire simple
16
Limitation
Si la dynamique est déjà maximale, la transformation
n’apporte aucun changement.
17
Transformation linéaire avec
saturation
18
Autres transformations linéaires
19
Egalisation d’histogramme
20
Egalisation d’histogramme
Etapes de l’égalisation d’histogramme
21
Opérations logiques
22
Avec un facteur supérieur à 1,
on illumine l'image alors qu'avec
un facteur inférieur à 1 on l'assombrit
Remarque : On peut multiplier par
une image binaire pour obtenir un
masquage. On multiplie par 1
les pixels que l'on veut conserver et
par 0 les autres 23
Opérations logiques
24
Opérations logiques
25
Opérations logiques
26
Opérations logiques
27
Interpolation d‘images : changement
d’échelle
Interpolation du plus proche voisin
28
Filtrage d’image
Filtres : Introduction
Le filtrage est une opération fondamentale
en traitement d’images. Il permet :
• D’améliorer la perception de certains détails.
• De réduire le bruit.
• De compenser certains défauts du capteur.
• etc…
30
Filtres : Prétraitement
Le prétraitement des images permet :
– Améliorer sa qualité visuelle
– Compresser l’image afin de réduire l'espace
nécessaire à son stockage et diminuer le temps
de sa transmission
– Restaurer l’image en éliminant les défauts et les
bruits et en renforçant l’information utile qu’elle
contienne.
31
Filtres : Introduction
Bruit
Filtrage par convolution
• Définition
• Convolution numérique 2D
Convolution numérique s
• Filtres Moyenneurs
• Filtres gaussiens
Filtre non linéaire
• Médian
• Min – Max
Filtrage dans le domaine fréquentiel
• Définition de la Transformée de Fourier 2D
• TF 2D d’un produit de convolution 2D
32
Bruit
Lors de l’acquisition, de la transmission ou de la compression d’une image, il
peut apparaitre de nombreuses dégradations. Un des domaines principaux en
traitement d’image consiste à traiter et corriger ces dégradations pour obtenir
une image de meilleure qualité. Les dégradations fréquemment rencontrées
dans les images sont :
• Le bruit additif affecte tous les pixels de l’image. Nous considérerons un
bruit blanc additif Gaussien, de moyenne nulle et de variance σ2. Il s’agit
d’un modèle fréquemment utilisé en première approximation pour modéliser
le bruit d’acquisition et de lecture (si l’on ne dispose pas d’un modèle plus
raffiné).
• Le bruit Gaussien affecte à la fois les basses et les hautes fréquences. Il
est caractérisé par sa variance σ2 : plus σ2 est élevé, plus l’image est
dégradée.
I2 = imnoise(I1,'gaussian', m,v) % Applique un bruit additif gaussien de
%moyenne m et de variance v
Gaussien ==uniforme 33
Bruit
• Le bruit impulsionnel, n’affecte que certains pixels de l’image. Nous
considérerons un bruit sel et poivre, qui est une dégradation de l’image
sous la forme de pixels noirs et blancs répartis au hasard.
• Ce bruit est du soit à des erreurs de transmission de données, soit à la
défaillance d’éléments du capteur CCD, soit à la présence de particules fines
sur le capteur d’images. On le caractérise par le pourcentage p de pixels
modifiés : plus p est élevé, plus l’image est dégradée.
• Pour ajouter du bruit à une image sous MATLAB, on utilise la fonction
imnoise
• I2 = imnoise( I1 ,'salt & pepper',p) % Applique un bruit poivre et sel de
pourcentage p
• I1 : image normalisée (valeurs entre 0 et 1)
• Bruit impulsionnel == aléatoire
34
Bruit
Syntax : imnoise
J = imnoise(I,'gaussian')
J = imnoise(I,'gaussian',m)
J = imnoise(I,'gaussian',m,var_gauss)
J = imnoise(I,'localvar',var_local)
J = imnoise(I,'localvar',intensity_map,var_local)
J = imnoise(I,'poisson')
J = imnoise(I,'salt & pepper')
J = imnoise(I,'salt & pepper',d)
J = imnoise(I,'speckle')
J = imnoise(I,'speckle',var_speckle)
Description
J = imnoise(I,'gaussian') adds zero-mean, Gaussian white noise with variance of 0.01 to grayscale image I.
J = imnoise(I,'gaussian',m) adds Gaussian white noise with mean m and variance of 0.01.
J = imnoise(I,'gaussian',m,var_gauss) adds Gaussian white noise with mean m and variance var_gauss.
J = imnoise(I,'localvar',var_local) adds zero-mean, Gaussian white noise of local variance var_local.
J = imnoise(I,'localvar',intensity_map,var_local) adds zero-mean, Gaussian white noise. The local variance of the
noise, var_local, is a function of the image intensity values in I. The mapping of image intensity value to noise variance is specified by the
vector intensity_map.
J = imnoise(I,'poisson') generates Poisson noise from the data instead of adding artificial noise to the data.
J = imnoise(I,'salt & pepper') adds salt and pepper noise, with default noise density 0.05. This affects approximately 5% of pixels.
J = imnoise(I,'salt & pepper',d) adds salt and pepper noise, where d is the noise density. This affects
approximately d*numel(I) pixels.
J = imnoise(I,'speckle') adds multiplicative noise using the equation J = I+n*I, where n is uniformly distributed random noise with
mean 0 and variance 0.05.
J = imnoise(I,'speckle',var_speckle) adds multiplicative noise with variance var_speckle.
35
Principe du filtrage linéaire
• Considérons une image I et un filtre 2D
bidimensionnel h.
• Le filtrage de l’image I par le filtre h est une image
F dont les luminances sont données par :
F ( x, y) = h(a, b) I ( x + a, y + b)
a ,b
36
Convolution numérique
37
Convolution numérique
• Convolution image 2D
38
Convolution numérique
• Convolution image couleur
39
Convolution numérique
• Convolution en chaque pixel
40
Convolution numérique
• Propriétés de la convolution
41
Filtre
42
Filtre de lissage: passe bas
❖ Principe
✓ Utilité: restauration de l'image (élimination du bruit) par lissage.
✓ Inconvénient : suppression des hautes fréquences (filtres passe-bas), d’où
dégradation des contours et effet de flou.
❖ Variétés
✓ Plusieurs types de filtres possédants chacun des avantages propres.
✓ Plusieurs tailles possibles, selon l’étendue du voisinage à considérer :
3x3, 5x5, ... l'effet de flou est d'autant plus marqué que la taille est grande.
Principaux filtres de lissage
✓ Linéaire
• Caractérisés par un masque(réalisables par convolution).
• Exemples : filtres moyenneurs, gaussiens
✓ Non-linéaire
• Caractérisés par un opérateur non-linéaire(non réalisables par convolution).
• Exemple: filtre médian
43
Filtre passe bas
D’une manière générale :
Un passe-haut accentue les contours et le bruit,
Un passe-bas réduit le bruit et adoucit(lisse) les contours.
Un passe-bas réduit le bruit et adoucit(lisse) les contours.
Il atténue les valeurs des pixels aberrants, il filtre les hautes fréquences
spatiales(variations rapides des NG) comme les contours et le bruit
Utilise la moyenne (pondérée ou non) du voisinage du pixel, on parle de
lissage ou moyennage
44
Convolution par filtre moyenneur
+1 +1 +1
h3 = (1/9) +1 +1 +1
+1 +1 +1
Exemple 1
45
Convolution par filtre moyenneur
• Le filtre moyenneur est une opération de traitement
d’images utilisée pour réduire le bruit dans une image
et/ou flouter une image.
• Par exemple, l’application d’un filtre moyenneur sur
l’image de gauche donne l’image de droite :
En zoomant, on peut voir en détail les effets du filtre; le
bruit clairement visible dans le ciel a bien été réduit mais
46
les détails du visage et de la caméra sont floutés
Convolution par filtre moyenneur
47
Convolution par filtre moyenneur
1 1 1 1 1
1 1 1 1 1
1/25* 1 1 1 1 1
1 1 1 1 1
48
1 1 1 1 1
Convolution par filtre moyenneur
• Le filtre moyenneur fait partie de la catégorie des filtres d’images
locaux car pour calculer la nouvelle valeur d’un pixel, il regarde la
valeur des pixels proches.
• Concrètement, la valeur filtrée d’un pixel p est égale à la moyenne
des valeurs des pixels proches de p. En général, on définit les «
pixels proches de p » comme l’ensemble de pixels contenus dans
un carré de largeur k centré sur p :
principe de la fenêtre glissante
49
Convolution par filtre moyenneur
• La convolution, ou produit de convolution, est une généralisation du
filtre moyenneur où l’on considère cette fois une moyenne
pondérée. La fenêtre glissante est alors elle-même une image qui
contient les coefficients de pondération.
• On l’appelle généralement noyau de convolution ou masque de
convolution (kernel ou mask en anglais)
50
Convolution par filtre moyenneur
• Problème : Que faire avec les bords de l'image ?
– Mettre à zéro (0)
0 0 0 0 0 0
– Convolution partielle sur une portion du noyau
0 1 1 2 1 0
– Miroir de l'image f(-x,y) = f(x,y)
– pas de solution miracle 0 1 2 2 1 0
0 3 2 2 2 0
0 1 1 2 1 0
1 1 2 1 0 0 0 0 0 0
1 2 2 1
1 1 1 2 1 1
3 2 2 2
1 1 1 2 1 1
2 1 2 1
1 1 2 2 1 1
3 3 2 2 2 2
2 2 1 2 1 1
2 2 1 2 1 1
51
Filtre passe Haut
52
Filtre passe haut
53
Filtre passe haut
54
Exemple de convolutions
55
Exemple de convolutions
Augmenter le contraste Flou Amélioration des bords
Détection des bords Repoussage Filtre de Sobel
Exercice : Avec le logiciel GIMP, ouvrir le fichier [Link] de l’activité précédente et testez
les filtres ci-dessus dans le menu Filtre > Générique > Matrice de convolution.
56
Exemple de convolutions
Exercice : Avec le logiciel GIMP, ouvrir le fichier [Link] de l’activité précédente et testez
les filtres ci-dessus dans le menu Filtre > Générique > Matrice de convolution. 57
Filtre Gaussien
58
Filtre Gaussien
Avantage:
• Meilleure lissage
• et une meilleure réduction
du bruit que le filtre moyenne
Moyenneur
Gaussien
59
Filtre Gaussien
Avantage:
• Meilleure lissage
• et une meilleure réduction
du bruit que le filtre moyenne
limite l'effet de flou (contours mieux conservés)
moyenne 𝜇 = 0 et d’écart-type 𝜎 Exemple pour 𝜎 = 0.6 :
Écart-type:
✓ Détermine le degré de lissage
✓ Impose la taille du masque (idéalement 5𝜎 × 5𝜎)
Remarque : En général un filtre gaussien avec 𝛔 < 𝟏 est utilisé pour réduire le
bruit, et si 𝛔 > 𝟏 c’est dans le but de fabriquer une image qu’on va utiliser pour
faire un masque flou personnalisé.
Il faut noter que plus 𝜎 est grand, plus le flou appliqué à l’image sera marqué
60
Filtre sous Matlab
• Matlab nous fournit une fonction qui réalise le
filtrage d’une image.
• Le noyau du filtre est une matrice de taille
quelconque définie par l’utilisateur ou accessibles
par la fonction fspecial
– fspecial('average',[5 5])
• La fonction filter2 ou conv2 prend en paramètres
le filtre et l’image à filtrer.
61
Filtre Médian(non linéaire)
• Filtre non linéaire.
• Capable de réduire certains types de bruits en
dégradant très peu les contours.
• Efficace pour éliminer les bruits qui affectent
seulement un petit nombre de pixels.
• Le filtre médian affecte à un pixel la valeur médiane
des intensités dans son voisinage.
62
Filtre Médian(non linéaire)
Le filtre médian range par ordre croissant les intensités du
voisinage :
.2 .2 .3 .4 .5 .5 .6 .7 .7
Il affecte au pixel central l’intensité qui se trouve au milieu du
rangement ci-dessus.
Exemple : Le filtre médian préserve les contours.
.7 .5 .3
If = medfilt2(I,[3 3]); % Filtrage median de
.4 .2 .7
taille 3 x 3
Figure, imshow(If); .6 .5 .2
63
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
Exemple
64
Filtre Médian(non linéaire)
• Exemple de filtre médian
65
Comparaison des filtres médian et moyenneur pour un bruit isolé
66
Filtre Médiane adaptatif
Le filtre médian adaptatif consiste à remplacer la valeur d’un
pixel bruité par la valeur médiane lorsqu’elle ne correspond
pas à une impulsion.
Dans le cas où la médiane est elle-même bruitée, on
augmente la taille du filtre jusqu’à trouver une médiane non
bruitée ou à atteindre une taille maximale prédéfinie du
filtre.
67
Filtre Min-Max(non linéaire)
• Garantit que la valeur de tout pixel appartient à l'intervalle des valeurs
de ses voisins → dé-bruitage efficace.
• Préserve encore mieux les contours que le filtre médian.
68
Filtre Min-Max(non linéaire)
69
Filtre sous Matlab
• Pour réaliser un filtrage linéaire, il faut d’abord définir le masque h à utiliser.
Pour cela, soit on le définit de façon analytique, soit on utilise la fonction
fspecial de MATLAB
Méthodes analytiques
h = ones(3,3)/9; % Filtre moyenneur de taille 3 x 3
h = [1 0 1 ; 0 2 0 ; 1 0 1]/9 % Filtre
Méthodes en utilisant fspecial
h = fspecial('average',[3 3]); % Filtre moyenneur de taille 3 x 3
h = fspecial('gaussian',[15 15],1); % Filtre gaussien de taille 15 x 15 % et
d'écart type 1
• On réalise ensuite le filtrage de l’image grâce à la commande imfilter :
% X : image renormalisée (valeurs entre 0 et 1)
% h : masque de convolution
Y = imfilter(X,h,'replicate’); ou bien conv2(X,h)
• Le filtrage non-linéaire que nous allons considérer ici est le filtrage médian,
qui peut être réalisé grâce à la commande medfilt2 :
Y = medfilt2(X,[3 3]); % Filtrage médian de taille 3 x 3
70
Notion de fréquence
71
Fréquence et Image
72
Fréquence et Image
73
Analyser fréquentiel d’image
• Pour cela, on crée un nouvel « histogramme » qui va
représenter les fréquences de l’image
• L’outil de base pour cela est la Transformée de Fourier
On parle de domaine fréquentiel, par opposition au
domaine spatial (de l’image)
• La transformée de Fourier discrète est donnée par :
I (u, v) = I ( x, y )e − j 2 (ux / N +uy / M )
x, y
Il est de même pour H et pour F.
Matlab calcule la transformée de Fourier discrète
grâce à la fonction fft2 (ifft2). Une autre fonction
74
utile est fftshift.