La détection de contour n’est en général qu’une étape préliminaire dans la reconnaissance d’objet car elle fournit plus des informations sur les régions que les régions elle-même et doit donc être complétée par un algorithme de segmentation région. Cependant on peut dire que les contours constituent des indices riches, au même titre que les points d’intérêts, pour toute interprétation ultérieure de l’image et méritent donc d’être traités à part. Les contours dans une image proviennent des :
- discontinuités de la fonction de réflectance (texture, ombre),
- discontinuités de profondeur (bords de l’objet),
et sont caractérisés par des discontinuités de la fonction d’intensité dans les images.
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 :
- les extréma locaux du gradient de la fonction d’intensité d’une part
- et les passages par zéro du laplacien d’autre part.
Ces deux approches ont pour principe d’assimiler les contours aux discontinuités d’ordre 0 de la fonction d’intensité. Hors le calcul de dérivée nécessite un préfiltrage des images. Les filtres sont linéaires dans le cas de bruit de moyenne nulle ou non linéaire pour les bruits impulsionnels.
Les inconvénients sont le plus souvent due à la présence de bruit dans les images.
Les différentes approches existantes peuvent être réparties selon la manière d’estimer les dérivées de la fonction d’intensité :
- par différences finies (opérateurs de Roberts, de Prewitt, de Sobel (très populaire), de Kirch, de Robinson)
- par filtrage optimal (filtres de Shen-Castan, de Deriche, filtre Gaussien)
- par modélisation de la fonction d’intensité
A partir de l’exploitation de la théorie des opérateurs et filtres précédents on peut écrire les algorithmes pour les différentes approches de détection de contours :
1) détection des contours via les gradients
L’algorithme peut donner :
- estimation du gradient en chaque point de l’image, utilisation au choix d’un filtre parmis :
filtre de Canny
filtre de Deriche
filtre de Shen-Castan
(pour l’essentiel) - extraction des maxima locaux de la norme du gradient dans la direction du gradient
cela revient à déterminer, pour un pixel donné, les valeurs du gradient sur la droite passant par le pixel et de direction celle de son gradient. On vérifie ensuite que le gradient en le pixel est bien localement maximal sur cette droite. - sélection des maxima locaux significatifs par seuillage
but : limiter la fragmentation des contours obtenus ;
Cette étape repose sur une hypothèse de connexité. Le principe est d’utiliser deux seuils pour la norme du gradient sb et sh et de sélectionner les pixels pour lesquels :
(a) la norme du gradient est supérieure à sb
(b) le pixel donné est connecté, par un chemin constitué de pixels dont la norme du gradient est supérieure à sb, à un pixel pour lequel la norme du gradient est supérieure à sh. - fermeture des contours en traçant les chemins suivant une ligne de crète dans l’image de la norme du gradient
Idée : suivre une ligne de crète dans l’image de la norme du gradient à par tir de chaque extrémité de contour.
1- Repérer les points extrémité (énumération des configurations possibles)
2- Choix entre les points candidats : on explore tous les chemins possibles à par tir de chaque point candidat. Le poids d’un chemin peut être défini comme la somme de la norme du gradient en chacun de ses points
2) détection des contours suivant le laplacien
Les points de contour sont caractérisés par des passages par zéro du laplacien. La détection de ces points s’effectue en deux étapes :
- Détection des passages par zéros. Les pixels pour lesquels le laplacien change de signe sont sélectionnés.
- Seuillage des passages par zéros de fortes amplitudes (par hystérésis par exemple)
Référence