Détection de contours et de lignes dans les procédures de bas-niveau

Version anglaise

Dans cet article, Nous décrivons un nouvel algorithme de détection de lignes, qui utilise des opérateurs de détection de contours basés sur la dérivation fonctionnant sans seuillage interne ni aucun autre paramètre (voir plus bas). La version anglaise en a été présentée au Third Workshop on Electronic Control and Measuring Systems, Université Paul Sabatier (Toulouse), les 2-3 juin 1997. La version présentée ici est une traduction française de la version publiée dans les actes (cette dernière faisant foi).

PDF version ici

ECMS proceedings


Auteurs

Baptiste Marcel et Michel Cattoen
Groupe Signaux, Images et Communication,
Laboratoire électronique
école Nationale Supérieure d'électrotechnique, électronique et Hydraulique de Toulouse,
2, rue Charles Camichel
BP7122
31071 Toulouse CEDEX 7
France


1. Résumé

Les détections de contour et de lignes sont des étapes importantes dans les systèmes de vision. Les résultats des étapes ultérieures dépendent des résultats issus de ces étapes.

Dans cet article, nous décrivons une nouvelle méthode d'extraction de lignes, à base d'opérateurs de dérivation, fonctionnant sans seuillage ni aucun autre paramètre intermédiaire. Cette propriété permet de repousser les décisions de détection vers les phases ultérieures du système d'analyse d'images, et d'y réduire le nombre de paramètres à régler. Cette méthode permet aussi aux lignes de faible contraste d'être détectées, sans augmenter le nombre de fausses alarmes, en raison du fait que les pixels isolés indiqués comme des contours dans les premières phases ne seront pas validés dans la phase suivante de la détection de ligne. Cette méthode est principalement basée sur des filtres de convolution linéaires simples qui devraient permettre un fonctionnement à vitesse élevée lors d'une implémentation matérielle.


2. Présentation générale

Nous appelons ligne un groupe connexe de pixels de contours alignés et coin un ensemble de pixels de contours formant deux lignes jointives non parallèles (nous ne nous occuperons que de coins formant des angles proches de 90°).

Les algorithmes de détection de lignes à base de contour comprennent habituellement les étapes suivantes : lissage, détection de contour, amincissement, chaînage, vectorisation et restauration. Dans notre méthode, la seconde étape (détection de contour) comprend deux dérivations à base des filtres laplacien et gradients [Wang94] pour déterminer les localisation et orientation des pixels de contour. Les trois dernières étapes forment la détection de ligne. Les étapes de lissage et d'amincissement, courantes chez plusieurs auteurs, ne sont pas réalisées directement car elles sont implicites dans les opérateurs de dérivation choisis.

Notre algorithme se décompose en cinq phases : détection de contour, calcul des directions de contour, chaînage, vectorisation et restauration.

2.1 Détection de contour

Dans cette première phase, les contours minces sont détectés sur les passages à zéro du laplacien calculé par filtre de convolution. Le filtre utilisé est la somme de filtres directionnels en une dimension selon deux ou quatre directions (en utilisant les diagonales dans ce dernier cas). La taille du filtre détermine la bande passante du lissage implicite réalisé lors de la convolution.

Les filtre de White-Rohrer (deux directions, [Whit83]) et Marr-Hildreth (quatre directions, [Hara84]) utilisent respectivement les matrices MWR et MMH (équations 1 et 2).

Laplacien 5×5 : (1 0 -4 0 1)+(1 0 -4 0 1)' (1), Laplacien 3×3 : [L=(1 -2 1)] L+L'+rot(L,45°)+rot(L',45°) (2)

On note g l'image à analyser. g est une fonction du plan définie sur une grille de points repérée par les indices (i,j) ; les opération de dérivation relatives aux matrices de convolutions sont indiquées équations 3 et 4.

d²g(i,j)/dxdy=g(i+2,j)+g(i-2,j)+g(i,j+2)+g(i,j-2)-4g(i,j) (3)

d²g(i,j)/dxdy=g(i+1,j)+g(i-1,j)+g(i,j+1)+g(i,j-1)-4g(i,j)+1/sqrt(2)*(g(i+1,j+1)+g(i-1,j+1)+g(i+1,j-1)+g(i-1,j-1)-4g(i,j)) (4)

Les résultats du filtre selon quatre directions présentent un meilleur rapport signal-sur-bruit (comme on peut le voir figures 1 à 4), mais nécessitent une quantité de calculs plus importante. L'intensité du passage à zéro le long de la diagonale doit en effet être corrigée d'un facteur et donc nécessite des calculs en virgule flottante. Cependant, si l'on compare les équations 3 et 4, on voit que la convolution selon Marr-Hildreth peut être ramenée à environ le double de calculs de la convolution selon White-Rohrer.

Les figures 1 et 2 sont des lignes extraites d'une zone de l'image où se trouvaient des contours. Avec la même correction, et donc des niveaux de bruit égaux, on voit que la réponse du filtre de Marr-Hildreth est meilleure (les pics correspondant au signal ont une plus grande amplitude).

Les figures 3 et 4 sont des lignes extraites d'une image de contour dans une zone sans contour. La réponse au filtre de White-Rohrer a été corrigée afin d'égaliser les niveaux de bruit (mesurés par l'écart type de la ligne échantillon).

réponse WR réponse MH
figure 1 : laplacien par filtre de White-Rohrer corrigé figure 2 : laplacien par filtre de Marr-Hildreth
bruit WR
écart type mesuré : 7.62
bruit MH
écart type mesuré : 7.59
figure 3 : échantillon de bruit (White-Rohrer corrigé) figure 4 : échantillon de bruit (Marr-Hildreth)

Un pixel est marqué comme pixel de contour si la réponse du filtre laplacien présente un passage à zéro dans la direction verticale ou horizontale, c'est à dire si deux pixels voisins dans cette direction ont des signes différents. L'intensité du passage à zéro est la valeur absolue de la différence d'intensité de ces deux pixels ; l'intensité du contour est affectée à la plus haute des intensités du passage à zéro (ligne et/ou colonne). Nous n'utilisons pas de seuil à ce niveau pour éliminer les contours de faible contraste. Le résultat de cette recherche est appelé carte de contours.

Les passages à zéro du laplacien correspondent à des points d'inflexion dans la direction du gradient de la fonction du plan que représente l'image. Cependant, tous les points d'inflexion ne représentent pas nécessairement des contours : par exemple, lorsque le signe de la dérivation du premier ordre est le même que celui de la dérivation du troisième ordre ([Flec92]). Nous allons le montrer par des exemples sur des fonctions de continûment dérivables au voisinage du point considéré.

Un point d'inflexion d'une fonction f(x) sera déclaré contour dans les conditions suivantes.

Dans ces deux cas, les signes d'f' et f''' sont différents. Dans les deux autres cas (figures 5.b et 5.d), le point d'inflexion ne correspond pas à un contour.

point d'inflexion pas de point d'inflexion
figure 5.a : f croissant avec un maximum local d'f' figure 5.b : f croissant avec un minimum local d'f'
point d'inflexion pas de point d'inflexion
figure 5.c : f décroissant avec un minimum local d'f' figure 5.d : f décroissant avec un maximum local d'f'
figure 5 : Quatre types différents de point d'inflexion en x=1 (contours 5.a et 5.c)

Les pixels correspondant aux cas 5.b et 5.d sont indiqués par erreur comme pixels de contour dans notre méthode. Leur identification et donc leur rejet nécessiterait une dérivation du troisième ordre (f'''), mais il n'est pas apparu nécessaire de l'effectuer, car ces pixels erronés disparaissent dans les phases ultérieures.

La phase habituelle d'amincissement qui précède le chaînage n'est pas nécessaire ici car la méthode du passage à zéro du laplacien donne des contours fins. Cependant, des pixels de contour voisins dans la direction du gradient peuvent apparaître ([Torr86]) lorsque des contours antiparallèles sont distants d'un pixel, ou lorsqu'un passage à zéro selon la direction horizontale est voisin d'un passage à zéro selon la direction verticale au voisinage d'un coin.

2.2 Calcul des directions de contour

Dans cette seconde phase, l'orientation de chaque contour détecté est déterminée par deux filtres directionnels de gradient (vertical et horizontal), ce qui permet d'estimer les deux composantes du vecteur gradient. Les matrices utilisées et les opérations de dérivations correspondantes sont indiquées équations 5 et 6.

Composante verticale : (0  -1  1)' , dg(i,j)/dx=g(i,j+1)-g(i,j) (5),
composante horizontale :(1  -1  0)' , dg(i,j)/dx=g(i-1,j)-g(i,j) (6)

Ces opérateurs sont assez sensibles au bruit et peu précis en localisation. On peut le voir sur les images des figures 6 et 7 qui représentent les réponses à la détection de contour par ces filtres et par le filtre du laplacien de White-Rohrer.

Image de gradient Image du laplacien
Figure 6 : détection de contour par gradient selon x et y. Figure 7 : détection de contours par laplacien

La figure 8 montre la relation entre le contour et le gradient sur une image.

contour (aggrandissement)
Figure 8 : contour et gradient

Pour cette raison, ils ne sont pas efficaces pour faire de la détection de contour ; Cependant, il n'est pas nécessaire de connaître la direction de contour avec une grande précision, puisqu'elle ne sert qu'au chaînage selon une connexité à huit voisins. La direction du gradient est donc calculée par ces filtres et mémorisée avec une précision de 3 bits (une direction parmi 8, avec une erreur maximale de 22,5°, Cf. figure 9).

classes (camembert)
Figure 9 : Répartition des classes de direction

2.3 Chaînage

Dans cette troisième phase, les contours sont chaînés selon leur connexité et la direction de leur gradient. Dans cette étape, un contour est chaîné avec son voisin si la droite portée par ces deux pixels et les directions de leur contour (normale au gradient) ne forment pas un écart supérieur à 45°. Le résultat est un ensemble de chaînes représentant des contours minces (de largeur 1 pixel).

2.3.1 Enchaînement des pixels

Nous avons représenté figures 10 et 11 un exemple du processus de chaînage : l'extrait d'une image où se trouvait un coin (figures 10) et les directions et amplitudes des contours de cet extrait (figures 11). Lorsqu'il y a un contour entre deux pixels, le contour est attribué au pixel de plus faible intensité (le plus sombre). Les contours d'amplitude nulle ne sont pas représentés. Pour chacun de ces contours, l'intensité est indiquée ainsi que la direction. La longueur de la flèche est proportionnelle à l'amplitude. La direction du contour, à côté du vecteur gradient, a éventuellement été représentée en pointillé et en longueur constante.

aggrandissement Direction des contours
Figure 10 : extrait d'une image Figure 11 : direction et amplitude du gradient dans cet extrait

La direction du contour sur le pixel est telle qu'elle ne permet comme successeur que l'un des trois pixels bêta, epsilon ou thêta. Le plus proche de ces trois (epsilon) présente un contour dont la direction est telle qu'elle ne permet comme prédécesseur que l'un des trois pixels bêta, alpha ou delta. Le chaînage delta-epsilon est donc compatible avec la direction de chacun des deux contours. D'autre part, les directions de contour des pixels delta et epsilon appartiennent à des classes voisines (respectivement 0 et 7 modulo 8). Nous pouvons alors chaîner dans cet ordre delta et epsilon.

Le pixel suivant sera thêta car celui-ci est un pixel de contour appartenant aux trois successeurs possibles d'epsilon (dzéta, iota et thêta), epsilon est un prédécesseur possible de thêta (parmi epsilon, delta et êta), et les directions de contours des deux pixels epsilon et thêta sont identiques.

2.3.2 Suppression des contours non maximaux

Cette méthode ne chaîne pas des contours voisins dans la direction de leur gradient (contours antiparallèles rendus jointifs dans les images à texture à haute fréquence). La carte de contour issue de la phase 2 a donc besoin d'une étape de suppression des contours de gradient non-maximum avant d'effectuer la phase 3. Cette étape intermédiaire revient à réduire les composantes de haute fréquence de l'image en éliminant certains contours. La suppression des contours de gradient non-maximum élimine les pixels de contour qui ont, dans une direction normale à leur direction de contour, un voisin pixel de contour de plus grande intensité. Cette direction normale est en fait la direction du gradient. Nous calculons pour chaque pixel pe les deux voisins correspondant à la direction du gradient. Si l'un de ces deux voisins est un pixel de contour d'intensité supérieure à celle du pixel pe, alors le contour du pixel pe est éliminé. Le nombre de pixels ainsi éliminé est relativement faible.

Nous avons représenté l'extrait d'une image où se trouvait un coin figure 12 et les contours au voisinage de ce coin figure 13. On voit que le pixel de contour qui fait le coin (d'amplitude 164) a, dans la direction de son gradient, un voisin pixel de contour d'amplitude plus élevée (204). Ce pixel du coin sera éliminé.

aggrandissement direction des contours
Figure 12 : extrait d'une image au niveau d'un coin Figure 13 : direction et amplitude du gradient dans cet extrait

2.3.3 Élimination des petites chaînes

Il n'y a pas de seuillage dans la recherche des passages à zéro du laplacien. Il s'en suit que la carte de contours, avant le chaînage, présente de nombreux pixels parasites que nous assimilerons à du bruit. Ces pixels s'ajoutent aux points d'inflexion et sont dus à de faibles changements d'intensité dans des groupes de pixels de l'image. Ces fausses alarmes sont relativement aléatoirement distribuées et s'associent rarement en blocs connexes de plus de trois pixels. L'élimination des petites chaînes (de longueur inférieure à 3 ou 4 pixels) à l'issue de l'étape de chaînage élimine les pixels de bruit qui étaient présents dans la carte de contours, tout en préservant les lignes (de longueur supérieure à 3 ou 4 pixels) de faible contraste.

2.4 Vectorisation

Dans cette quatrième phase, les chaînes sont fragmentées pour obtenir des lignes. L'algorithme brise chaque chaîne sur le pixel le plus éloigné de sa corde jusqu'à ce que sa distance à la corde soit inférieure à 1 ou 2 (voir figure 14). Dans le cas d'images distordues géométriquement, où les lignes peuvent apparaître comme des chaînes légèrement courbées, il peut-être nécessaire de modifier ce seuil en fonction du système de vision. Cette méthode impose à chaque pixel d'appartenir à une seule ligne, ce qui empêche les lignes jointives ou sécantes.

chaine et corde
Figure 14 : vectorisation d'une chaîne

2.5 Restauration

Cette phase de restauration (cinquième phase) consiste à rechercher et raccorder dans l'ensemble des lignes issues de la phase précédente, celles dont les extrémités sont proches les unes des autres, puis de regarder et unifier parmi les lignes jointives, celles qui ont des directions suffisamment proches pour représenter la même ligne.

Les lignes obtenues présentent en effet des défauts par rapport aux lignes recherchées. Le principal est la dislocation des coins. Puisque nous utilisons des contours minces et de directions de classes voisines de proche en proche, un pixel de contour ne peut y avoir que deux voisins et ne peut pas former avec eux d'angle droit. Nous ne pouvons donc pas avoir d'intersection de lignes, ni de lignes jointives avec un angle supérieur à 45°.

Cette contrainte ne nous gêne pas dans notre application finale, qui repose sur des images à distribution d'intensité bimodale représentant une image binaire (pour la zone utile), et pour laquelle il ne peut pas y avoir d'intersections de lignes.

Il peut aussi arriver qu'une ligne soit fragmentée, où qu'un coin soit disloqué en raison de défauts de contraste ou de composantes de haute-fréquences dans l'image.

Les figures 16 et 17 montrent l'ensemble de lignes issues de l'image de la figure 15 avant et après la restauration. On peut voir que l'ensemble est plus cohérent après la restauration même si certains défauts ne sont pas visibles. Sur la figure 16, les lignes en bas et à gauche du symbole sont représentées par deux longues lignes orthogonales. La disjonction évoquée précédemment ne se voit pas car les deux extrémités qui forment l'angle sont sur deux pixels voisins. Ces deux extrémités sont donc distantes d'exactement 1 pixel et semblent former deux segments sécants.

objets lignes des objets
Figure 15 : image contenant des lignes Figure 16 : lignes vrutes (extraites de la figure 15)
objets et lignes des objets
Figure 17 : lignes restaurées à partir de la figure 16 (superposées sur l'image originale)


3 Résultats et application

Notre méthode fonctionne bien avec des images contenant des lignes droites, et délivre des suites de petites lignes jointives lorsque des contours courbes sont présents dans l'image. Cette méthode ne fonctionne pas bien pour la détection de petites lignes (2 à 3 pixels) qui ne peuvent pas être correctement déterminées à partir des réponses des filtres de taille 2×2 ou 3×3 qui sont utilisés, puisque les erreurs de localisations inévitables de l'ordre d'un pixel entraînent des erreurs importantes dans la direction de ces lignes. Cette incompatibilité permet d'établir que l'élimination des courtes lignes de la fin de la phase 3 n'entraîne pas une dégradation des résultats de la détection, ces courtes lignes étant de toute façon non fiables.

Cette méthode a été utilisée avec succès dans la détection et localisation de codes symboliques Data-Matrix (dérivés des codes-à-barre bi-dimensionnels) dans des images à distribution d'intensité bimodale. Nous présentons figures 18 à 20 le résultat de la recherche de lignes sur l'image d'un symbole Data-Matrix.

Symbole Data-Matrix Lignes du Data-Matrix
Figure 18 : image d'un symbole Data Matrix Figure 19 : résultat de la détection de lignes
Symbole Data-Matrix avec ses lignes
Figure 20 : résultat de la détection de lignes superposée à l'image 18

Plusieurs des étapes de cette méthode sont basées sur l'utilisation de filtres linéaires de convolution. Ces calculs, qui se trouvent généralement dans les couches basses des systèmes d'analyse d'image devraient pouvoir être réalisés rapidement par des opérateurs câblés, bien que l'avancement du projet n'en aie pas encore permis la confirmation.


Bibliographie

[WANG94] Mao-Jiun J. Wang, Shiau-Chyi Chang, Chih-Minh Liu et Wen-Yen Wu, « A new edge detection method through template matching », International journal of Pattern Recognition and artificial intelligence, Vol. 8, n°4, 1994, p. 899-917.
[WHIT83] J. M. White et G. D. Rohrer, « Image thresholding for optical character recognition and other applications requiring character image extraction », IBM J. res develop., Vol. 27, n°4, juillet 1983, p. 400-411.
[HARA84] Robert. M. Haralick, « Digital step edges from zero crossing of second directional derivatives », IEEE Transaction on Pattern Analysis and Machine Intelligence, Vol. 6, n°1, janvier 1984, p. 58-68.
[FLEC92] Margaret M. Fleck, « Some defects in finite-difference edge finders », IEEE Transaction on Pattern Analysis and Machine Intelligence, Vol. 14, n°3, mars 1992, p. 337-345.
[TORR86] Vincent Torre et Tomaso A. Poggio, « On edge detection », IEEE Transaction on Pattern Analysis and Machine Intelligence, Vol. 8, n°2, March 1986, p. 147-163.


File created 29th August 1997, last update 30/03/2003 by Baptiste MARCEL , located in Toulouse. If you enjoyed this page, please do not forget to visit my homepage and to request more information about this site.