Chapitre 4
Détection des contours
1 Introduction
La détection des contours est une technique de réduction d'informations dans les
images, qui consiste à transformer l'image en un ensemble de courbes formant les
frontières significatives de l'image.
Un contour est la frontière qui sépare deux objets dans une image (il représente
une discontinuité de l'image). Il est en particulier caractérisé par un changement
brusque d'intensité.
Le principe de la détection de contours repose donc sur l'étude des dérivées de la
fonction d'intensité dans l'image. Ainsi, les contours sont définis comme étant les
extremums locaux du gradient de la fonction d'intensité, c.à.d. des passages par zéro
de la dérivée seconde dans la direction du gradient.
2 Approche du gradient
Dans une image I, un contour apparait comme une ligne où sont localisées de très
fortes variations de l'image I.
Soit
T
r r æ ¶I ¶I ö
G ( x, y ) = ÑI ( x, y ) = çç ( x, y ), ( x, y ) ÷÷ = (I x ( x, y ), I y ( x, y ) )
è ¶x ¶y ø
le gradient de l'image I. Il est caractérisé par son module
2
æ ¶I ö æ ¶I ö
2
G ( x, y ) = ç ( x, y ) ÷ + çç ( x, y ) ÷÷
è ¶x ø è ¶y ø
et par son orientation définie par
æ I ( x, y ) ö
F ( x, y ) = arctg ç x ÷.
ç I ( x, y ) ÷
è y ø
Le gradient est un vecteur perpendiculaire au contour. Les points du contour sont
les points où le module du gradient représente un maximum local.
2.1 Calcul approché des dérivées
f ( x) - f ( x0 )
Etant donné que pour une fonction f on a f ' ( x ) = lim , on peut donc
x ® x0 x - x0
f ( x ) - f ( x0 )
approcher f'(x0) par l'élément où x est un point choisi proche de x0.
x - x0
Puisque dans le cas d'une image I, les coordonnées x et y sont des entiers, alors
Ix(x,y) peut être approchée par l'une des trois valeurs suivantes :
1
I x ( x, y ) » I ( x + 1, y ) - I ( x, y )
I x ( x, y ) » I ( x, y ) - I ( x - 1, y )
I ( x + 1, y ) - I ( x - 1, y )
I x ( x, y ) »
2
La dernière approximation est une conséquence de la relation suivante :
f ( x 0 + h) - f ( x 0 - h )
f ' ( x ) = lim
h®0 2h
De même Iy(x,y) peut être approchée par l'une des trois valeurs suivantes :
I y ( x, y ) » I ( x, y + 1) - I ( x, y )
I y ( x, y ) » I ( x, y ) - I ( x, y - 1)
I ( x, y + 1) - I ( x, y - 1)
I y ( x, y ) » .
2
Ainsi, calculer Ix revient à convoler l'image I avec l'un des trois masques suivants :
G 1x = (0 - 1 1) ; G x2 = (- 1 1 0 ) ; G x3 = (- 1 0 1)
et Iy est obtenue en convolant l'image I avec l'un des trois masques suivants :
æ0ö æ - 1ö æ - 1ö
ç ÷ ç ÷ ç ÷
G y = ç - 1÷
1
; Gy = ç 1 ÷
2
; Gy = ç 0 ÷
3
ç1÷ ç0÷ ç1÷
è ø è ø è ø
Remarque : l'un des inconvénients de l'approche gradient est le fait qu'elle soit très
sensible au bruit. Pour illustrer cela, soit I un signal unidimensionnel observé et
obtenu par l'ajout à un signal pur I1 d'un bruit de la forme :
2
I(x) = I1(x) + ε sin(wx),
alors en dérivant on obtient :
I'(x) = I'1(x) + εw sin(wx),
ainsi, le bruit d'amplitude ε a été suite à la dérivation amplifiée par un facteur w=2πν
où ν est la fréquence du bruit.
Les bruits hautes fréquences perturberont donc fortement le signal dérivé I'. Il
convient alors d'effectuer un filtre passe bas ou un lissage afin d'éliminer ces hautes
fréquences.
2.1.1 Détecteur de Roberts
Le filtre de Roberts consiste à approcher les dérivées Ix et Iy par
Ix(x,y)=I(x+1,y+1) – I(x,y) et Iy(x,y)=I(x,y+1) – I(x+1,y)
Ainsi
I x ( x, y ) » (I * hx )( x, y ) et I y ( x, y ) » (I * h y )( x, y )
où les masques hx et hy de Roberts sont donnés par
æ-1 0ö æ0 - 1ö
hx = çç ÷÷ et h y = çç ÷
è0 1ø è1 0 ÷ø
2.1.2 Détecteur de Prewitt
Le filtre de Prewitt combine l'opérateur dérivé avec un filtre moyenneur dans
la direction orthogonale à celle de dérivation. Ainsi,
I x ( x, y ) » (I * hx )( x, y ) et I y ( x, y ) » (I * h y )( x, y )
où les masques hx et hy de Sobel sont donnés par
æ 1ö æ-1 0 1ö æ - 1ö æ - 1 - 1 - 1ö
ç ÷ ç ÷ ç ÷ ç ÷
hx = ç1÷(- 1 0 1) = ç - 1 0 1÷ et hy = ç 0 ÷(1 1 1) = ç 0 0 0 ÷
ç 1÷ ç-1 1÷ø ç1÷ ç1 1 1÷
è ø è 0 è ø è ø
2.1.3 Détecteur de Sobel
Le filtre de Sobel combine l'opérateur dérivé avec un filtre lisseur gaussien dans la
direction orthogonale à celle de dérivation. Ainsi,
I x ( x, y ) » (I * hx )( x, y ) et I y ( x, y ) » (I * h y )( x, y )
où les masques hx et hy de Sobel sont donnés par
3
æ1ö æ -1 0 1ö æ - 1ö æ - 1 - 2 - 1ö
ç ÷ ç ÷ ç ÷ ç ÷
hx = ç 2 ÷(- 1 0 1) = ç - 2 0 2 ÷ et hy = ç 0 ÷(1 2 1) = ç 0 0 0÷
ç1÷ ç -1 1 ÷ø ç1÷ ç1 1 ÷ø
è ø è 0 è ø è 2
2.2 Détection des points du contour
Pour identifier un pixel M(i,j) d'une image I comme étant un élément d'un contour,
on suit les étapes suivantes.
2.2.1 Calcule de la norme du gradient de I en M
En utilisant l'une des méthodes du paragraphe précédent, on calcule Ix(i,j) et
r
Iy(i,j), puis on calcule la norme du gradient G (i, j ) de I en M(i,j) en utilisant l'une des
formules suivantes :
N 1 (i, j ) = I x (i, j ) + I y (i, j )
N 2 (i, j ) = I x2 (i, j ) + I y2 (i, j )
(
N ¥ (i, j ) = max I x (i, j ) , I y (i, j ) )
2.2.2 Vérifier sir M(i,j) est un extremum local dans la direction du
gradient G (i, j )
On récupère les deux proches voisins M1(i1,j1) et M2(i2,j2) de M(i,j) appartenant à
r
la droite passant par M(i,j) et de direction G (i, j ) = (I x (i, j ), I y (i, j ) ) .Ils sont donnés
T
r r
par : M 1 (i, j ) = M (i, j ) + G (i, j ) et M 2 (i, j ) = M (i, j ) - G (i, j ) .
r
M(i,j) est considéré comme extremum local dans la direction du gradient G (i, j ) si
N(i, j) ³ N(i1 , j1 ) et N(i, j) ³ N(i 2 , j 2 )
où N est l'une des trois normes définies ci-dessus.
Remarque : le calcul de N(i1,j1) et N(i2,j2) se fera si nécessaire par interpolation
linéaire ou en utilisant les valeurs les plus proches.
2.2.3 Seuillage
Afin d'identifier les extremums locaux du gradient dans la direction du gradient,
on peut fixer un seuil S et considérer comme extremum local du gradient dans la
direction du gradient tout pixel M(i,j) vérifiant N(i,j) ≥ S.
Il faut signaler que si le seuil est choisit trop bas, alors nous serons devant une sur-
détection, c.à.d. qu'on va détecter beaucoup plus de bruit et des contours épais
4
apparaissent. Et ci par contre le seuil est trop élevé, alors nous aurons une sous-
détection qui induira l'apparition de contours non fermés.
Image originale Gradient
Seuillage à 10 Seuillage à 20
Pour remédier à ce problème, on utilise un Seuillage par hystérésis. Son principe
consiste à choisir deux seuils Sh > Sb pour la norme du gradient et sélectionner les
pixels pour lesquels l'une des deux conditions suivantes est vérifiée :
ü la norme du gradient est supérieure à Sh
ü la norme du gradient est supérieure à Sb et le pixel est connecté à un autre
pixel déjà accepté comme point du contour.
3 Approche laplacien
Puisque les points du contour sont des extremums locaux dans la direction du
gradient alors la dérivée du gradient dans la direction du gradient est nulle en ces
points. Suite à un calcul portant sur la dérivée seconde de l'image I dans la direction
du gradient, on vérifie que la condition
la dérivée du gradient dans la direction du gradient au point M(i,j) est nulle
peut être remplacée par la condition
5
¶2I ¶2I
le laplacien ÑI (i, j ) = (i , j ) + (i, j ) est nul au point M(i,j).
¶x 2 ¶y 2
Ainsi, l'approche laplacien considère les points du contour comme étant les points où
le laplacien est nul.
¶2I ¶2I
Comme pour le gradient, les dérivées (i, j ) et (i, j ) sont approchées par des
¶x 2 ¶y 2
différences finies. Ceci est équivalent à faire la convolution par le noyau
(1 - 2 1) pour approcher ¶ I2 (i, j ) et par le noyau (1 - 2 1)T pour
2
¶x
¶2I
approcher (i, j ) . Le laplacien peut être approché en utilisant l'un des masques
¶y 2
suivants :
æ0 1 0ö æ1 1 1ö
ç ÷ ç ÷
ç1 - 4 1÷ ç 1 - 8 1÷
ç0 0 ÷ø ç1 1÷ø
è 1 è 1
Laplacient discret 4 Laplacient discret 8
Conclusion :
ü Les approches du gradient et du laplacien sont assez proches.
ü La technique du gradient est moins sensible au bruit, mais de complexité plus
importante.
ü L'opérateur filtre utilisé pour les dérivations a une influence sur les résultats.