Filtrage 2
Filtrage 2
Traitement d’image
Y.BENHAMZA 1
Types de Transformation
• On distingue 3 type d’opérations:
• 1-Opération ponctuelle: la nouvelle valeur d’un pixel dépend uniquement de
son ancienne valeur.
Transformation Ponctuelle:
Ex: Etirement Histogramme,
Ajustement des couleurs,…
Y.BENHAMZA 2
Types de Transformation
• On distingue 3 type d’opérations:
• 2-Opération local: la nouvelle valeur d’un pixel dépend de son ancienne
valeur mais aussi de son voisinage.
Transformation Locale
Ex: Débruitage,Lissage, contour…
Y.BENHAMZA 3
Types de Transformation
• On distingue 3 type d’opérations:
• 3-Opération Globale: la nouvelle valeur d’un pixel dépend de tous les pixels
de l’image
Transformation Globale
Ex: Transformée Fourier,
Transformé Cosinus…
Y.BENHAMZA 4
Transformation locale
Y.BENHAMZA 5
Transformation locale
Y.BENHAMZA 6
Filtrage comme Convolution
Y.BENHAMZA 7
Taille du filtre
Y.BENHAMZA 8
Exemple:
Y.BENHAMZA 9
Traitement des bords!
? ? ? ? ? ? ?
? - - - - - ?
• Comment faire pour calculer les pixels au bords! ? - - - - - ?
1. On ne filtre pas. ? - - - - - ?
? - - - - - ?
• Recopier les ancienne valeurs, ou bien ..
? - - - - - ?
• Retourner le résultat avec moins de lignes et de colonnes ? - - - - - ?
• Remplir les bords par des zéros, une symétrie (pair ou impair) ou périodicité,
Puis filtrer. Sinon,…
3. Convolution partiel (juste une portion du noyau)
Y.BENHAMZA 10
Traitement des bords!
0 0 0 0 0 0 0 0 0 0 0 4 2 0 3 5 1 9 4 2 0 3
0 0 0 0 0 0 0 0 0 0 0 9 9 8 2 8 5 8 9 9 8 2
0 0 1 2 1 9 8 0 6 0 0 0 6 1 2 1 9 8 0 6 1 2
0 0 9 1 5 8 3 1 6 0 0 Insertion de Zéros! 1 6 9 1 5 8 3 1 6 9 1
0 0 5 9 9 8 5 2 5 0 0 2 5 5 9 9 8 5 2 5 5 9
0 0 2 4 4 6 1 2 8 0 0 2 8 2 4 4 6 1 2 8 2 4
0 0 7 7 1 3 6 3 4 0 0 3 4 7 7 1 3 6 3 4 7 7
0 0 3 6 9 7 9 8 1 0 0 Périodicité! 8 1 3 6 9 7 9 8 1 3 6
0 0 0 3 5 1 9 4 2 0 0 4 2 0 3 5 1 9 4 2 0 3
0 0 8 2 8 5 8 9 9 0 0 9 9 8 2 8 5 8 9 9 8 2
0 0 0 0 0 0 0 0 0 0 0 0 6 1 2 1 9 8 0 6 1 2
0 0 0 0 0 0 0 0 0 0 0 1 6 9 1 5 8 3 1 6 9 1
1 9 9 1 5 8 3 1 6 6 1 9 9 5 9 9 8 5 2 5 2 5
2 1 1 2 1 9 8 0 6 6 0 5 1 9 1 5 8 3 1 6 1 3
2 1 1 2 1 9 8 0 6 6 0 1 2 1 2 1 9 8 0 6 0 8
1 9 9 1 5 8 3 1 6 6 1 5 1 9 1 5 8 3 1 6 1 3
9 5 5 9 9 8 5 2 5 5 2
Symétrie Paire! 9 9 5 9 9 8 5 2 5 2 5
4 2 2 4 4 6 1 2 8 8 2 4 4 2 4 4 6 1 2 8 2 1
7 7 7 7 1 3 6 3 4 4 3 1 7 7 7 1 3 6 3 4 3 6
6 3 3 6 9 7 9 8 1 1 8 Symétrie Impaire! 9 6 3 6 9 7 9 8 1 8 9
3 0 0 3 5 1 9 4 2 2 4 5 3 0 3 5 1 9 4 2 4 9
2 8 8 2 8 5 8 9 9 9 9 8 2 8 2 8 5 8 9 9 9 8
2 8 8 2 8 5 8 9 9 9 9 5 3 0 3 5 1 9 4 2 4 9
3 0 0 3 5 1 9 4 2 2 4 9 6 3 6 9 7 9 8 1 8 9
Y.BENHAMZA 11
Filtrage: Passe Bas Vs Passe Haut
• Passe Bas:
• Suppression ou réduction de bruit.
• Lissage/floutage (smoothing/blurring)
• Ex Filtre: Moyenneur, Gaussien, Median, …
• Passe Haut:
• Détection de contours (passe haut).
• Ex Filtre : Robert, Sobel, Prewit, Laplace
Y.BENHAMZA 12
Types de bruit communs
1. Bruit gaussien :
Suit la distribution Gaussienne pour
obtenir une variation d’intensités.
2. Bruit poivre et sel :
Contient des occurrences aléatoires
de pixels blancs et noirs
3. Bruit impulsionnel :
Contient des occurrences aléatoires
de pixels blancs
Y.BENHAMZA 13
Types de bruit communs
1. Bruit gaussien :
La quantité de bruit est relatif à
l’écart-type de la gaussienne.
2. Bruit poivre et sel :
La quantité de bruit est exprimé par
une densité (un pourcentage)
3. Bruit impulsionnel :
La quantité de bruit est exprimé par
une densité (un pourcentage)
Y.BENHAMZA 14
Filtre Passe-Bas
Pour enlever les bruits, et adoucir les contour!
Y.BENHAMZA 15
Filtre Moyenneur
• Filtre passe-bas.
• Tout filtres de taille (m,n) dont les coefficient sont égales à 1/mn est
appelé filtre moyenneur.
• Sa fonction: calcule la moyenne du voisinage.
• Effet: Elimination de bruit.
Y.BENHAMZA 16
Filtre Décroissant
• Famille de Filtre Passe-bas.
• Les filtres décroissant sont une famille de filtre qui sont de coefficients
positifs qui s’affaiblissent lorsqu’ils s’éloignent du centre.
• Utilisé pour « lisser l’image » et « réduire le bruit »
• ,
• Le degré de lissage est déterminé par l’écart-type associé au filtre
Gaussien ( )
• Si est la taille du filtre, choisir un tel que, w 5 .
Y.BENHAMZA 19
Filtre Gaussien
• Intéressant: Le filtre gaussien 2D peut être séparé en produit de deux
filtres gaussien 1D.
• , ∗
1 2 1 1
2 4 2 = 1 2 1 * 2
• Ex: 1/16*( 1 2 1
) 1
Y.BENHAMZA 20
Filtre Median
• Filtre Passe-bas. C’est un filtre sans coefficients.
• Aucun calcul arithmétique (addition, produit, convolution).
• Mode de fonctionnement: un tri croissant est effectué sur les valeurs du
voisinage, la valeur médian est prise comme nouvelle valeur du pixel
central.
• C’est un filtre non linéaire!
Y.BENHAMZA 21
Filtre Linéaire Vs Non-Linéaire
• Les filtres linéaires sont des filtres de la forme:
∗
Y.BENHAMZA 22
Filtre Linéaire Vs Non-Linéaire
Linéaire: Non-Linaire:
• Moyenne (vu) • Median (vu)
• Gaussien (vu) • Diffusion
• Kirsch • Kuwahara
• Robinson • SNN
• MDIF • Déparasitage
• DOG (Difference Of Gaussian) • Harris
• LOG (Logarithm of Gaussian)
Y.BENHAMZA 23
Diffusion
• Calculs les différences entre chaque voisin et le pixel central.
• La différence sera utilisée comme paramètre d’une fonction qui
calcule une proposition de modification.
• La somme de ces proposition est pondérée par une valeur « delta ».
• Proposition de fonction (Hakim et Perona):
Y.BENHAMZA 24
Kuwahara
• Calculer la moyenne et l’écart-type de 4 sous-voisinage,
• Remplacer le centre (pixel 0) par la moyenne du groupe ayant le plus
petit écart-type.
1 1 1 2 2
1 1 1 2 2
• 4 4 0 2 2
4 4 3 3 3
4 4 3 3 3
Y.BENHAMZA 25
SNN (Symmetric Nearest Neighbor)
• Pour chaque deux voisins symétrique ( et ), on ne retient que le
niveau de gris le plus proche du niveau de gris du pixel central.
• On calcule la moyenne des quatre éléments obtenues.
1 2 3
• 4 0 4
3 2 1
Y.BENHAMZA 26
Filtre de Déparasitage (Despeckle)
• Calculer la moyenne du voisinage ( ).
• Calculer l’écart-type du voisinage ( ).
• Remplacer le pixel (central) si sa valeur v satisfait: .
• Utilisé généralement dans des bruit multiplicatif!
Y.BENHAMZA 27
Harris (Détecteur de coins)
• det ∗ ( 0.05 . . 0.15 )
• est la matrice de Harris
• La moyenne des dérivés partielles sur le voisinage
Y.BENHAMZA 28
Exercice:
• Réalisez un script Matlab pour débruiter une image avec un des filtres
passes-bas non-linéaire suivant:
1. Filtre Kuwahara.
2. Filtre SNN.
3. Filtre de déparasitage.
Y.BENHAMZA 29
Filtre Passe Haut
Les Filtres Passe Haut sont généralement utilisé pour la détection de contour.
La détection de contours est une technique de traitement d’images, qui
consiste à transformer l’image en un ensemble de courbes, pas forcément
fermées, formant les frontières significatives de l’image.
Y.BENHAMZA 30
Détection de contours
Y.BENHAMZA 31
Qu’est ce qu’un contour ?
•Un contour est un endroit
dans l’image où on a une
variation rapide d’intensité
(niveau de gris ou couleur)
Un contour est la frontière qui sépare deux objets dans une image
Y.BENHAMZA 33
Types de contours
Y.BENHAMZA 34
Effet de Bruit sur un contour
•Contour bruités: effet de bruit en
regardant le profile des
différents contours
Y.BENHAMZA 36
Gradient
•Vecteur à 2 composantes sera associé à chaque pixel de l’image
•Défini par son module G et sa direction θ
⊗
• ≡ ≡ =
⊗
• ∡ )= (
Y.BENHAMZA 37
Gradient
•Pour chaque pixel, on calcule le gradient dans les 2 directions
orthogonales Gx et Gy
•Un contour est détecté si G dépasse une certaine valeur
(seuil)
•La carte de direction ( ) est utilisée pour suivre les contours
Y.BENHAMZA 38
Détecteurs de gradient par masques
•Masques de taille 2x2 ou 3x3 pixels
•Somme des coefficients de ces filtres est nulle
–Réponse nulle dans une zone de « niveau de gris constant »
•Coefficients antisymétriques
•Cas discret:
1, ,
, 1 ,
Y.BENHAMZA 40
Filtre Gradient
• Simple approximation 2x2 (d’un gradient standard):
z1 z2 z3 Gx Gy
z4 z5 z6 -1 1 -1 0
z7 z8 z9
0 0 1 0
• z6 z5 z8 z5
Y.BENHAMZA 41
Filtre Gradient: Exemple
|Gx| |Gy|
:
Y.BENHAMZA
é é 42
Filtre Gradient de Roberts
• La dérivée est réalisée dans les deux sens diagonales:
z1 z2 z3 Gx Gy
z4 z5 z6 -1 0 0 1
z7 z8 z9 0 1 -1 0
• z9 z5 (z6 z8
Y.BENHAMZA 43
Filtre Gradient de Roberts: Exemple
|Gx| |Gy|
:
Y.BENHAMZA
é é 44
Filtre Gradient Prewitt
• Détecteur de contour Très populaire.
1 0 1 1
1 0 1 1 ∗ 101 (combinaison de lissage suivie de la dérivé)
1 0 1 1
1 1 1 1
0 0 0 0 ∗ 111 (rotation par 90° de )
1 1 1 1
1 0 1 1 1 1
• h1 1/3 1 0 1 h2 1/3 0 0 0
1 0 1 1 1 1
Y.BENHAMZA 45
Filtre Gradient de Prewitt
• La dérivée est réalisée dans les deux sens diagonales:
z1 z2 z3 Gx Gy
z4 z5 z6 1 0 -1 1 1 1
1 0 -1 0 0 0
z7 z8 z9
1 0 -1 -1 -1 -1
• avec Gx (z1 z4 z7) -(z3z6 z9) , Gy (z1 z2 z3) -(z7z8 z9)
•
Y.BENHAMZA 46
Filtre Gradient de Prewitt: Exemple
|Gx| |Gy|
:
Y.BENHAMZA
é é 47
Filtre Gradient Sobel
• Détecteur de contour Très populaire.
1 0 1 1
• 2 0 2 2 ∗ 1 0 1 (combinaison de lissage suivie de la dérivé)
1 0 1 1
1 2 1 1
• 0 0 0 0 ∗ 121 (rotation par 90° de )
1 2 1 1
1 0 1 1 2 1
• h1 1/4 2 0 2 h2 1/4 0 0 0
1 0 1 1 2 1
Y.BENHAMZA 48
Filtre Gradient de Sobel
• La dérivée est réalisée dans les deux sens diagonales:
z1 z2 z3 Gx Gy
z4 z5 z6 1 0 -1 1 2 1
2 0 -2 0 0 0
z7 z8 z9
1 0 -1 -1 -2 -1
• avec Gx (z1 z4 z7) -(z3z6 z9) , Gy (z1 z2 z3) -(z7z8 z9)
•
Y.BENHAMZA 49
Filtre Gradient de Sobel: Exemple
|Gx| |Gy|
:
Y.BENHAMZA
é é 50
Autres Masques
• Filtres de Kirsch:
1 3 3 5 1 3 3 3
3 0 5 , 3 0 3
15 15
3 3 5 5 5 5
1 3 3 3 1 5 5 3
5 0 3 , 5 0 3
15 15
5 5 3 3 3 3
• Filtres de Robinson:
1 1 1 1 1 1 1 1
1 2 1 , 1 2 1
5 5
1 1 1 1 1 1
Y.BENHAMZA 51
• Les coefficients représentent la dérivée première sur x(resp. y) d’une
gaussienne G(i,j). C-à-d:
• , ∗ G i, j & , ∗ G i, j
Y.BENHAMZA 52
Laplacien of Gausian: LOG
• Calcul du noyau : somme des dérivées secondes sur x et y de la gaussienne
G(i,j).C'est à dire :
, ∗ ,
Y.BENHAMZA 53
Difference of Gausian: DOG
• Calcul du noyau : les coefficients sont le résultat de la soustraction de 2 gaussiennes de
variances différentes :
• , 1 , 2 ,
• 1 , exp & 2 , exp
• Principe : Un filtre gaussien peut être vu comme un filtre passe-bas (seule les basses
fréquences sont conservées), d'où l'effet de flou observé dans le filtre " flou gaussien ".
En effectuant une soustraction de 2 gaussiennes, on a alors l'équivalent d'un filtre passe-
bande.
Y.BENHAMZA 54
• Les filtres/masques de Gradients, Roberts, Prewitt, et Sobel sont des
variantes de la première dérivé.
• Peut-on avoir d’autre résultats avec la seconde dérivée!
• Rép: Oui. La deuxième dérivée pour toute fonction multi variable
s’appelle « le Laplacien »
Y.BENHAMZA 55
Y.BENHAMZA 56
Laplacien
25
Dérivation du 2nd ordre
Y.BENHAMZA 57
Détection de contours
Vecteur
Scalaire
Y.BENHAMZA 58
Détection de contours
• Dans le contour épais de la figure
(qu’on ne souhaite pas avoir); le
Laplacien nous aide a trouver le fil
de la plus grande pente (en f. On le
détecte grâce au passage vers 0 du
Laplacien.
• Le Laplacien sera étudié de manière
approfondie ultérieurement.
Y.BENHAMZA 59
Laplacien
Y.BENHAMZA 60
, , ,
,
Dans le cas de l’image numérique, Δ =1 (1 pixel, le pas est discret),
alors:
,
• x 1, ,
,
• x, 1 , ,
• Représenté par le filtre du Gradient (déjà vu):
, ,
f(x-1,y-1) f(x,y-1) f(x+1,y-1) Filtre pour Gx= x 1, Filtre pour Gy= x,
, ,
f(x-1,y) f(x,y) f(x+1,y) 0 0 0 0 0 0
f(x-1,y) f(x,y+1) f(x+1,y+1) 0 -1 1 0 -1 0
0 0 0 0 1 0
Y.BENHAMZA 61
é é:
• , , x 1, ,
• , x 1, x,
• , x 2, 1, x 1, ,
• , x 1, , x, 1, (simple changement de variable x = x-1)
• , x 1, 2 , 1,
• ,
f(x-1,y-1) f(x,y-1) f(x+1,y-1) ,
Filtre pour Lx= x 1, 2 , 1,
• , , x, 1 ,
• , x, 1 2 , , 1
• ,
L8
1 1 1
1 -8 1
1 1 1
• Remarque: Si on inverse le signe du filtre, ça reste un filtre laplacien valide!
Y.BENHAMZA 65
Laplacien
• Exemple
Y.BENHAMZA 66
Détection de contours
•L’image contours C est construite en appliquant un seuil à l’image du
gradient G (norme du gradient).
•Choisir un Seuil S, telque si G(x,y)>S alors C(x,y)=255 sinon C(x,y)=0.
•Problème :
–Comment déterminer le niveau du seuil S pour détecter les contours ?
–Le seuillage automatique est plus simple pour les images en niveaux de gris que pour les
images du gradient car celles-ci n’ont qu’un seul maximum en général
Y.BENHAMZA 67
•Un seuil trop bas = sur-détection : on détecte beaucoup
de bruit et des contours épais apparaissent
Y.BENHAMZA 68
Seuillage par hystérésis
• Principe : Deux seuils, un seuil (threshhold) haut th, un seuil bas tb
• Calculer de gradient sur l'image à niveau de gris
• Les pixels en dessous de tb sont mis à zéro
• Les pixels au dessus de th sont conservés
• Garder un pixel de niveau de gris compris entre tb et th sous la condition qu'il ai au moins
un pixel voisin de niveau supérieur à th
• Ainsi le niveau bas se débarrasse du bruit indésirable. Le seuillage haut ne garde que les
composantes importantes mais incomplètes. La troisième étape permet de compléter ces
contours.
Y.BENHAMZA 69
Détection de contours
•Décider si le pixel G0 est un contour (ou pas) repose sur 3 décisions possibles:
1) G0 est un contour si : |G0| > seuil
2) G0 est un contour si : ou si
Y.BENHAMZA 70
Unsharp masking
• Le masque « Unsharp » se calcul ainsi:
, , ̅ , .
Image filtrée
Masque Image Originale
moyenneur/gaussien
Y.BENHAMZA 72
Unsharp Masking, HighBoost Filtering
• Utilisé par l’industrie de l’impression et de la
publication
1. Choisir l’image Originale.
2. Rendre flou l’image originale (filtre moyenneur ou
gaussien)
3. Soustraire l’image flou de l’image d’origine (le résultat
est appelé le mask)
4. Ajouté le mask (multiplié par k)à l’image d’origine.
Y.BENHAMZA 73
Filtrage Spatial Vs. Fréquentiel
• Filtrage Domaine Spatial: On filtre l’image directement.
IMAGE
IMAGE Filtre
Filtrée
Y.BENHAMZA 74
• Lorsque le filtre est appliqué directement sur l’image, on parle de
filtrage (domaine) spatial.
• Lorsque le filtre est appliqué sur le spectre fréquentiel de l’image, on
parle de filtrage (domaine) fréquentiel.
Y.BENHAMZA 75
Outil Matlab
• Imfilter.
• Imnoise.
• Conv2
• Filter2
Y.BENHAMZA 76