0% ont trouvé ce document utile (0 vote)
79 vues4 pages

TD N3

Ce document explique le principe du filtrage d'images numériques par convolution. Il présente différents filtres passe-bas comme le filtre moyenneur et le filtre gaussien, et montre comment ils peuvent être utilisés pour réduire le bruit dans les images.

Transféré par

rawaa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
79 vues4 pages

TD N3

Ce document explique le principe du filtrage d'images numériques par convolution. Il présente différents filtres passe-bas comme le filtre moyenneur et le filtre gaussien, et montre comment ils peuvent être utilisés pour réduire le bruit dans les images.

Transféré par

rawaa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TD N°3

1. Introduction
Le filtrage d'une image numérique permet de modifier son spectre
spatial. On peut par exemple chercher à atténuer les hautes
fréquences pour la rendre moins nette, à réduire le bruit, ou au
contraire à accentuer les hautes fréquences pour accentuer la
netteté. La dérivation est aussi une opération de filtrage,
employée pour la détection des bords.

Ce document explique le principe du filtrage des images (signal


bidimensionnel) par convolution et montre des exemples de filtres
passe-bas utilisés couramment. Le filtrage par convolution
s'applique aux filtres linéaires à réponse impulsionnelle finie, dont
la réponse impulsionnelle est relativement petite. Il existe
d'autres techniques de filtrage, comme le filtrage par transformée
de Fourier ou le filtrage récursif.

2. Principe
On considère une image numérique en niveaux de gris, dont la
valeur au pixel (i,j) est notée Xi,j. On adopte la convention qui
consiste à placer l'indice de colonne (indice i) en premier, car cet
indice correspond à l'axe x sur l'image. La réponse impulsionnelle
dans le cas d'un signal numérique à deux dimensions est elle-
même un signal à deux dimensions, c'est-à-dire une matrice, dont
les coefficients seront notés hm,n. Pour simplifier, on se limite au
cas des réponses impulsionnelles carrées, avec un nombre de
termes sur chaque dimension impair N=2P+1. Par exemple,
pour P=1 :

H=(h00h10h20h01h11h21h02h12h22)(1)

Cette matrice est aussi appelée le masque de convolution.


L'image filtrée Y s'obtient en effectuant le produit de convolution
entre X et H, ce qui donne pour un pixel (i,j) de l'image finale :

Yi,j=h00Xi-1,j-1+h10Xi,j-1+h20Xi+1,j-1+h01Xi-
1,j+h11Xi,j+h21Xi+1,j+h01Xi-1,j+1+h12Xi,j+1+h22Xi+1,j+1(2)
Le pixel Yi,j est donc obtenu en faisant une combinaison linéaire
(ou moyenne pondérée) du pixel Xi,j de l'image initiale et de ses 8
proches voisins. La relation ci-dessus se généralise aux masques
de convolution 5x5, 7x7, etc.

On voit que la relation ne peut s'appliquer sur les bords de


l'image, plus précisément sur les P rangées horizontales et
verticales des bords. Il faut donc prévoir un traitement spécial
pour ces rangées. La solution la plus simple, consiste à remplir
ces rangées avec un niveau constant (par exemple noir). Une
autre solution est de répliquer sur ces rangées les rangées
voisines. Dans ces deux cas, l'information sur les bords est
perdue. On peut aussi décider de ne pas modifier ces rangées, ce
que nous allons faire. En tout cas, on évite de réduire la taille de
l'image.

La matrice H est la réponse impulsionnelle du filtre. Pour le voir,


considérons une impulsion unité, c'est-à-dire une image
constituée d'un seul pixel (i,j) de valeur 1, tous les autres étant
nuls. L'image de sortie est alors constituée de la
matrice H centrée sur le pixel (i,j). Elle comporte donc 9 pixels
non nuls. Cette image est la réponse impulsionnelle, appelée
aussi fonction d'étalement du point.

On considère ici le cas où la réponse impulsionnelle est invariante


par translation (les coefficients de la matrice sont constants),
mais il est possible d'appliquer un masque de convolution qui
dépend de la position du pixel sur l'image, par exemple de sa
distance au centre. Cette possibilité de filtrer localement en
fonction de la position du point est même la propriété
remarquable du filtrage par convolution, qu'il est impossible
d'obtenir par un filtrage dans l'espace des fréquences spatiales.

3. Implémentation
Ecrire la fonction qui effectue la convolution. La matrice H doit
avoir des dimensions impaires. On peut choisir de filtrer
seulement la moitié gauche de l'image.
On peut aussi utiliser la fonction scipy.signal.convolve2d qui
fera le calcul plus rapidement (car elle est implémentée en C
compilé) et possède d'autres options pour les pixels des bords.

4. Exemples
4.a. Filtre moyenneur

Ce filtre calcule, pour chaque pixel, la moyenne du pixel avec ses


8 proches voisins. Le masque de convolution est donc constitué
de 9 coefficients égaux à 1/9. Ecrire la fonction qui permet d’

Il s'agit d'un filtre passe-bas, qui réduit la netteté de l'image. Cela


peut être vu comme une détérioration de l'image, mais ce type de
filtrage est parfois nécessaire avant d'appliquer d'autres
traitements.

L'image suivante comporte un bruit important, qui a été ajouté


artificiellement. Les photographies peuvent être très bruitées
lorsqu'elles ont été prises dans des conditions de lumière faible.
Ecrire la fonction qui permet de réduire le bruit (sur la moitié
gauche). Pour un effet plus important, il faut augmenter la taille
du masque :

Est-ce que la réduction du bruit s'accompagne d'une réduction de


la netteté ?

4.b. Filtre gaussien

Le filtre gaussien est un filtre passe-bas dont la réponse


impulsionnelle continue est définie par la fonction suivante :

h(x,y)=12πσ2exp(-x2+y22σ2)(3)

Il faut l'échantillonner afin d'obtenir la réponse impulsionnelle


discrète (la matrice H). Pour cela, on fixe la valeur de P puis on
détermine σ afin que la valeur sur le bord de la matrice soit égale
à une petite fraction ε de la valeur au centre. On obtient :

σ=P-2ln(ε)(4)

Ecrire la fonction qui permet de créer un filtre gaussien. La


matrice est normalisée pour que la somme de ses coefficients soit
égale à 1.

Tester l'effet d'un filtre gaussien 7x7 sur l'image bruitée:

Comparer au filtre moyenneur de taille 5x5

Vous aimerez peut-être aussi