Détection de contour
Un article de Wikipédia, l'encyclopédie libre.
Les algorithmes de détection de contour consistent à identifier les contours d'une image en repérant les forts changements d'intensité lumineuse de l'image. C'est une étape préliminaire à de nombreux algorithmes de traitement d'image.
Sommaire |
[modifier] Principe général
L'image originale est représentée par son intensité lumineuse I(x,y). Les contours d'une image correspondent aux plus importantes variations de cette fonction intensité, les algorithmes de détection de contour consistent soit à repérer les maxima du gradient ou les zéros du laplacien de la fonction I.
Les étapes fondamentales de la détection de contour sont donc de calculer les dérivées de la fonction d'intensité pour ensuite déterminer les points de contour.
[modifier] Calcul des dérivées
[modifier] Par différences finies
Cette approche repose sur le fait que l'on peut approximer les dérivées partielles de la fonction intensité en un pixel en observant les différences avec les pixels voisins. Cette idée a débouché sur la création d'opérateurs empiriques que l'on applique à des fenêtres de 2x2 ou de 3x3 pixels afin d'estimer le gradient, la plupart du temps "lissé".
Les opérateurs les plus utilisés sont :
Sobel | Prewitt | Roberts |
---|---|---|
|
|
|
Le principe est le suivant : on place le pixel considéré dans le coin supérieur gauche de l'opérateur pour les fenêtres 2x2 et au centre pour les fenêtres 3x3, on multiplie la valeur de la fonction intensité par la valeur de l'opérateur pour les pixels voisins, et on garde la valeur absolue de la somme. Cela donne une estimation de la derivé partielle dans une direction (Ox), pour obtenir la dérivé partielle dans l'autre direction (Oy), on pivote le masque de et on applique le même traitement. Ces 2 valeurs sont les composantes du vecteur gradient. La norme de ce vecteur indique la force de la transition.
On peut estimer le laplacien par la même méthode, à l'aide de ces filtres :
|
|
On note qu'il suffit d'une mesure pour le laplacien, ces filtres étant invariants par rotation.
Cette approche est la plus ancienne et bien qu'efficace sur certaines images, elle est très sensible au bruit.
[modifier] Filtrage optimal
L'opération décrite précédemment revient, mathématiquement, à appliquer un filtre à l'image. Ainsi, Canny[1] a cherché à définir des critères afin d'obtenir un filtre optimal pour la détection de contour. Ces critères sont les suivants :
- bonne détection : detecter un maximum de contours
- bonne localisation : que les points détectés doivent être le plus proche possible du vrai contour
- réponse unique : minimiser le nombre de contours detectés plusieurs fois
Ces critères se traduisent par des conditions sur la réponse impulsionnelle du filtre et débouchent sur des détecteurs de contours très performants.
[modifier] Déterminer les contours
Une fois le gradient ou le laplacien calculé, il faut identifier les points de contour, pour cela on effectue un seuillage par hystérésis. Pour cela on fixe deux seuils, un seuil haut sh et un seuil bas sb. On commence par sélectionner les points qui dépassent le seuil haut et on applique ensuite le seuil bas en ne conservant que les composantes connexes qui contiennent un point au dessus de sh. En d'autres termes à partir de chaque point au dessus de sh on "suit" un chemin constitué de points au dessus de sb, ce chemin est le contour recherché.
[modifier] Applications
La detection de contour est très utile en traitement d'image, c'est par exemple une étape indispensable à la reconnaissance de formes. Ces algorithmes sont également utilisés en imagerie médicale, cartographie, ...
[modifier] Voir aussi
[modifier] Références
- [1] J. Canny, A Computational Approach to Edge Detection, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 8, No. 6, Nov 1986
- [2] H. Maître, La détection de contour dans les images, http://www.tsi.enst.fr/~bloch/TDI/poly_contours.pdf
- [3] S. Mavromatis, O. Coulon, Analyse d'image, http://pages-perso.esil.univ-mrs.fr/~ocoulon/cours/ESIL3A_contours.pdf
- [4] F. Devernay, Detection de contour, http://devernay.free.fr/cours/vision/pdf/c3.pdf