• Aucun résultat trouvé

Cas d’un ensemble X ⊂ H quelconque fini

Dans le document The DART-Europe E-theses Portal (Page 59-64)

Algorithme de suivi de contours

4.2 Cas d’un ensemble X ⊂ H quelconque fini

4.2.1 Description de X par une suite d’ensembles simplement connexes SoitX un sous-ensemble quelconque fini de IH.

Proposition 4.6

On peut d´ecrireXpar une suite infinie d´ecroissante d’ensembles(Xi)sous la forme : X= (((X0\X1)∪X2)\X3)∪X4. . .

o`u

1. Xi est union disjointe d’ensembles simplement connexes 2. Xi+1 ⊂Xi H1 o`uH1 d´esigne l’hexagone ´el´ementaire.

Le principe s’exprime de mani`ere informelle ainsi (voir figure 4.8) :

• X0 est l’union de X et de ses trous

• X1 est l’ensemble des trous deX

• X2 est l’ensemble des particules se trouvant dans les trous de X

• . . .

De fa¸con formelle, soitx0 un point deXc´eloign´e de X. On pourra prendre par exemple un point en dehors d’un hexagone centr´e `a l’origine contenant X qui existe puisqueX est fini.

Posons :

Xi est l’ensemble des points x de IH tels que tout chemin C de x `a x0 a un nombre de transitions 0−1 et 1−0 sur son parcours strictement sup´erieur `a i.

Montrons que la suite ainsi d´efinie a bien les propri´et´es requises :

• On a bienXi+1 ⊂Xi par construction.

• Montrons queX2i\X2i+1 ⊂X et X2i1\X2i ⊂Xc.

En effet,X2i\X2i+1 est l’ensemble des pointsxpour lesquels il existe au moins un chemin de x `a x0 ayant 2i+ 1 transitions, c’est-`a-dire un nombre impair. Donc puisque x0 ∈Xc, x∈X.

Le raisonnement est analogue pour X2i1\X2i.

Soit x. Il existe un chemin de x `a x0 sans point double sur la trame. Le nombre de transitions 0−1 et 1−0 sur ce chemin est inf´erieur au nombre de pixels de X. Donc Xi

X

X0 X1

X2

Figure 4.8 :D´ecomposition en ensembles simplement connexes.

• Si Xi n’est pas union disjointe d’ensembles simplement connexes, Xic n’est pas connexe.

Soit alors x ∈ Xic, x n’´etant pas dans la mˆeme composante connexe que x0. Soit C un chemin de nombre de transitions minimalj ≤ide x`ax0. Ccoupe Xi. Soit alors x1 un de ces points d’intersection. Le sous-chemin deC dex1 `ax0 poss`edej−1 transitions au plus ce qui montre quex1 6∈Xi, ce qui est impossible. Donc Xi est union disjointe d’ensembles simplement connexes.

• Soit enfinx un point de la fronti`ere de Xi. Soit alorsx1 un voisin dex n’appartenant pas

`a Xi et C1 un chemin de nombre de transitions minimal j de x1 `a x0. On a j≤ipuisque xi 6∈ Xi. Donc C =x∪C1 est un chemin de x `a x0 ayant exactement j+ 1 transitions, doncx6∈Xi+1 puisquej+ 1≤i+ 1, ce qui ach`eve la d´emonstration

4.2.2 D´etection de l’ensemble des contours d’un ensemble digital fini

D’apr`es la proposition du paragraphe pr´ec´edent, nous pouvons d´ecrire X par une suite d’ensembles (Xi) union disjointe d’ensembles simplement connexes. Nous allons montrer qu’en fait, il suffit de suivre le contour de chacun d’eux pour obtenir un ensemble de lacets v´erifiant les propri´et´es P1 `a P6.

Lemme 4.7

Front (X) = [

i0

Front (X2i)∪Front (X2i+1c )

D´emonstration : un point x de X2i ⊂X2i+1 et un point y de X2j ⊂ X2j+1 ne peuvent jamais ˆetre voisins, car Xk ⊂Xk1 H1. Donc la fronti`ere deX est l’union disjointe des fronti`eres de X2j ⊂ X2j+1 pour j ≥ 0. Comme de plus X2j H1 ⊃ X2j+1. Donc Front (X2j ⊂ X2j+1) est l’union (non n´ecessairement disjointe) de Front (X2j) et deFront (X2j+1)

Si nous nous donnons x ∈ X et y ∈ Xc, voisins. Choisissons le plus grand indice tel que x∈X2i. Deux cas peuvent se pr´esenter :

• x∈X2i et y6∈X2i. Alorsx∈Front (X2i).

• x∈X2i et y∈X2i. Alorsy∈X2i+1 et x6∈X2i+1. Doncx∈Front (X2i+1c ).

Construisons `a pr´esent l’ensemble des contours :

• contour de chaque composante (simplement) connexe deX2i.

• contour du compl´ementaire de chaque composante connexe deX2i+1. L’algorithme de suivi de contour s’adapte sans probl`eme `a ce cas.

Proposition 4.8

L’ensemble des contours deX v´erifie globalement les propri´et´es P1 `a P6.

D´emonstration : en vertu du lemme pr´ec´edent, la v´erification des six propri´et´es est imm´ediate

4.2.3 Algorithme pratique

Nous avons vu que pour lancer l’algorithme de suivi de fronti`ere, il suffit de connaˆıtre une transition 0−1 sur l’image. Tout lacet de contour peut ˆetre trouv´e par cette m´ethode, c’est-`a-dire qu’il existe toujours une transition 0−1 qui permettra d’obtenir en sortie de l’algorithme le lacet souhait´e. Malheureusement, de nombreuses transitions donneront les mˆemes lacets qui se d´eduiront cycliquement les uns des autres.

Pour ´eviter de d´etecter plusieurs fois les mˆemes lacets, nous proposons de marquer les boucles d´ej`a trouv´ees. Pour cela, modifions les valeurs de chaque pixel visit´e par l’algorithme :

• S’il est `a 0 mettons le `a−1

• S’il est `a 1 mettons le `a 2.

Les transitions que nous rechercherons alors seront : ou

( 0 − x avec x ≥ 1 y − 1 avec y ≤ 0

ces configurations ´etant examin´ees par un balayage vid´eo de l’image, de gauche `a droite et de haut en bas.

Il est clair qu’apr`es une telle proc´edure de marquage, toutes les transitions de type 0−xou y−1 donnant naissance au lacet en question ont ´et´e ´elimin´ees. Il reste `a prouver que cela ne perturbe pas la d´etection des autres fronti`eres. A cette fin ´etablissons le lemme :

Lemme 4.9

Soit C0 une composante connexe de Xj contenue dans la composante connexe C de Xj1. Alors le contour de C sera marqu´e avant celui de C0 et il restera apr`es le marquage du contour deC au moins une transition 0−x (resp.y−1) sij est impair (resp. pair) pour initialiser le suivi deC0.

D´emonstration : Pla¸cons nous dans le cas o`u j est impair par exemple (j pair conduit `a une d´emonstration analogue). Le pointen haut `a gauchedeC sera rencontr´e avant celui deC0 dans un balayage vid´eo puisque C0 ⊂ C H1. Donc le controur de C sera suivi avant celui de C0. Nous avons vu que le contour interne deC0 (i.e.C0\C0 H1) est inclus dansC H1. Ainsi lors de la proc´edure de marquage, le contour interne de C0 ne sera pas modifi´e, et il restera donc au moins une transition 0−x, x≥1 pour le caract´eriser

Lemme 4.10

SoientC et C0 deux composantes connexes de Xj. Le marquage de C ne modifie pas la valeur des pixels deC0.

Notons les Xi sous la forme d’un arbre. Les sommets au niveau i sont les composantes connexes deXi. C0 est fils deC si et seulement siC est une composante connexe deXi, C0 une composante connexe de Xi+1 et C0 ⊂ C. Enfin, chaque sommet est valu´e par les coordonn´ees de son point le plus en haut `a gauche. Les contours sont alors d´etect´es dans l’ordre suivant : le nœud suivant visit´e sera celui de valeur minimale dans l’ordre lexicographique parmi les nœuds non encore visit´es. Les relations d’inclusion assurent qu’il est le fils d’un nœud d´ej`a visit´e.

Ces deux lemmes montrent que le marquage n’empˆeche pas la d´etection de tous les lacets de contour. Nous avons vu que r´eciproquement tout contour n’est visit´e qu’au plus une seule fois, ce que nous exprimerons par le fait que l’algorithme propos´e est optimal.

Algorithme : suivi de toutes les chaˆınes de contour Soit x le point courant ety son voisin dans la direction 0.

Parcourir l’image en sens vid´eo

Si (v(x) = 0 etv(y)>0) ou (v(x) ≤0 etv(y) = 1)

suivre le contour d’origineyen modifiant la valeur des points pvisit´es lors du suivi :

( changer v(p) = 1 en v(p) = 2 changer v(p) = 0 en v(p) =−1 fin si

fin du parcours.

4.2.4 Exemple d’illustration

Faisons fonctionner l’algorithme dans le cas d’un ensemble d’´epaisseur unit´e ayant deux trous pour bien en comprendre les caract´eristiques. La figure 4.9 illustre les diverses ´etapes du processus.

Dans le document The DART-Europe E-theses Portal (Page 59-64)