Chapitre 4
Chapitre 4
Chapitre 4
Imagerie
Module : Traitement Numérique d’images
Chapitre 3: Détection des contours et seuillage
1
Introduction
• Les contours constituent une information
essentielle pour certaines applications de
traitement d’images.
• Les contours d’un objet permettent en général
de caractériser sa forme.
• La détection de contours consiste à chercher
les courbes continues le long des zones de
fortes variations dans l’image. 2
Introduction
• Les contours représentent les frontières
entre deux régions homogènes adjacentes
ayant des intensités lumineuses
différentes.
• La détection de contours consiste à
extraire ses frontières.
3
Etape de la détection de contour
4
Détection des contours par la dérivée première 2D
(gradient)
5
Détection des contours par la dérivée première 2D
(gradient)
6
Modèle d’un contour
7
Modèle d’un contour
8
Modèle d’un contour en 2D
En 2D, on calcule
les dérivées premières /x et /y , ce qui correspond au gradient g
(perpendiculaire au contour).
Ou les dérivées secondes /x et /y , ce qui correspond à une des
composantes du Laplacien
9
Modèle d’un contour
• La détection de zones de variation des niveaux
de gris de l’image correspond à l’opération de
dérivation.
• Comme une image numérique n’est pas une
fonction continue, la notion de dérivée n’est pas
formellement définie et on utilisera un analogue
appelé gradient.
• Comme une image a 2 dimensions, le gradient
de l’image f, notée ∇f, est une image vectorielle,
donnée par les deux dérivées partielles :
• ∇f=(∂f/∂x, ∂f/∂y). 10
Contour: Gradient
11
Contour: Gradient
• La détection des contours peut être réalisé
grâce à des filtres dont les cœfficients sont
soigneusement choisis.
• Nous aborderons dans ce chapitre trois jeux
de filtres particuliers :
– Filtre de Prewitt.
– Filtre de Roberts.
– Filtre de Sobel.
12
Contour: Gradient
• La détection des contours se fait dans les deux
directions orthogonales.
• Certains filtres sont définis sous Matlab,
• On peut les obtenir grâce à la fonction fspecial
h = fspecial(type)
h = fspecial('average',hsize)
h = fspecial('disk',radius)
h = fspecial('gaussian',hsize,sigma)
h = fspecial('laplacian',alpha)
h = fspecial('log',hsize,sigma)
h = fspecial('motion',len,theta)
h = fspecial('prewitt’) 13
h = fspecial('sobel')
Filtres de Prewitt
Filtre horizontal :
Filtre vertical :
14
Détecteur de contour
15
Détecteur de contour
Gradient : Roberts Gradient : Prewitt
16
Filtres de Sobel
• Les filtres de Sobel définit les dérivées partielles de la
manière suivante :
Filtre horizontal :
Filtre vertical :
Exemple
17
Filtres de Roberts
Filtre anti-diagonal :
18
Détecteur de contour
Gradient : Prewitt
19
Détecteur de contour
Gradient : Prewitt
20
Détecteur de contour
Gradient : Sobel
21
Détecteur de contour
Gradient : Sobel
22
Détecteur de contour
Gradient : Laplacien
23
Détecteur de contour
• Si l’on souhaite obtenir une image de contour
unique, ne tenant pas compte de l’orientation,
• on calcule :
24
Exercice :Comparaison de filtres de détection de
contours
Principe de l’expérimentation :
• Comparer les performances des filtres de
Prewitt, Sobel et Roberts.
• Nous allons créer une image contenant un
contour Vertical, et nous allons estimer, pour
chaque filtre, deux grandeurs caractéristiques :
– La probabilité de détection
– La probabilité de fausses alarme
25
Exercice :Comparaison de filtres de détection de
contours
• La probabilité de détection : pourcentage de points
de contours correctement détectés.
La probabilité de fausses alarmes : pourcentage de
points hors contour détectés à tort comme contour.
• Pour simplifier la comparaison, on réglera les seuils
de manière à avoir à peu prés la même probabilité de
fausses alarmes pour les trois filtres.
• Il suffira alors de comparer les probabilités de détection.
26
Calcul d’un détecteur de contour par
apprentissage
• Pour calculer un filtre par apprentissage, on crée
une base d’exemples, contenant des contours et
des zones uniformes.
• Pour chaque exemple, on indique la réponse que
l’on souhaite.
• La méthode d’apprentissage calcule
automatiquement le filtre qui donne les réponses
les plus proches de celles qui sont indiquées.
• Nous allons chercher à calculer un filtre
détecteur de contours verticaux.
27
28
Master : Systèmes d’Information Décisionnels et
Imagerie
Module : Traitement Numérique d’images
Chapitre 3: Seuillage
Representation Representation
interne externe 30
Segmentation par seuillage
31
Seuillage Global
h(l)
Méthode Mode
2 1 ( Z1 − Z 2 ) 2
=
2 log(n1 + n2 ) 34
Méthode d’Ostu
l −1 l −1
= (i − T ) pi
2
T
2
T = i pi
i= 0 i= 0
t
2B = w0 w1 ( 1 0 ) 2 w0 = pi w1 = 1 − w0
i= 0
T − t t t
1 = 0 = t = i pi
1− w w0 i= 0
0
ni
pi =
ni
i
Matlab :
I= imread(‘coins.png’); [counts, x]=imhist(I,16);
T=otsuthresh(counts);
Bw= imbinarize(I,T); imshow(Bw); 36
Méthode de Pun.
Soit t la valeur du seuil et soient 2 entropies a posteriori
t
H = − pi log e pi
'
b
i= 0
l −1
H = − pi log e pi
'
w
i = t +1
t
H t = − pi log e pi
i= 0
l −1
H T = − pi log e pi
i= 0
t
pt = pi
i= 0
38
Seuillage local
39
Méthode de Chow et Kaneko
L’image originale est subdivisée en des sous images 7x7 et un
seuil est calculé pour chaque sous image ayant un histogramme
de niveau de gris bimodal. Par contre le seuil n’est pas calculé
pour une sous image à histogrammes non bimodal. Le seuil
pour une telle sous image est interpolé à partir des sous images
voisines.
Pour les sous images ayant des histogrammes
bimodaux, le seuil est calculé de la façon suivante :
Premièrement, l’histogramme des niveaux de gris pour les sous
images est approximé par la somme de 2 distributions
gaussiennes. Le seuil est obtenu en minimisant l’erreur de
classification par rapport à la valeur du seuil.
40
Méthode de Fernando et Monro
41