• Aucun résultat trouvé

4.3 Commentaires

5.1.3 Algorithmes parallèles d’amincissement

Dans ce type d’algorithmes, les points sont examinés selon le résultat de la dernière itération seule-ment. Cela permet de paralléliser les examens à chaque itération. Ces algorithmes sont par contre plus lents que les algorithmes séquentiels sur des machines séquentielles puisqu’ils suppriment moins de pixels à chaque itération.

Les algorithmes parallèles, à l’inverse des algorithmes séquentiels, préservent mieux les proprié-tés de stabilité et d’homotopie. Mais ils nécessitent bien souvent l’utilisation de sous-itérations à la fin desquelles l’image est mise à jour pour la sous-itération suivante. Bien souvent une sous-itération pour chaque type de point de contour (Ouest, Sud, Est, Nord) est utilisée, ou deux sous-itérations, une pour les points Est et Nord, et une autre pour les points Ouest et Sud.

5.1.3.1 L’algorithme morphologique de GONZALES ETWOOD

La première approche intuitive d’amincissement parallèle est celle de GONZALES ETWOOD([GW92]) qui proposent un algorithme en 1 itération. Elle consiste à marquer comme supprimables les pixels dont le voisinage correspond à une des configurationsBi, i = 1, . . . , 8 de la figure 5.6 représentant en fait les

points de contours dont3 ≤ b(P ) ≤ 5. L’implémentation proposée utilise l’opération morphologique

« Tout ou Rien » (voir annexe C page 169) qui n’est pas optimale puisqu’elle impose un balayage de toute l’image pour chaqueBi.

P P

(B1) (B2)

FIGURE5.6 – Les masques de GONZALES ETWOOD(B3, . . . , B8sont obtenus par toutes les rotations de 90°), les pixels en croix peuvent prendre la valeur 0 ou 1.

Cet algorithme présente beaucoup d’inconvénients. Il est extrêmement sensible aux bruits et rela-tivement lent dans l’implémentation proposée. De plus, ne considérant que les points simples tels que

3≤ b(P ) ≤ 5, il a tendance à ajouter des aspérités.

5.1.3.2 L’algorithme de RUTOVITZ

RUTOVITZ([Rut66], [SR71]), balaye l’image et supprime le pixel si et seulement si toutes les condi-tions suivantes sont vraies :

R1 :2≤ b(P ) ≤ 6

R2 :XR(P ) = 2

R3 :x1x3x5= 0 ou XR(x3)6= 2

La condition R1 assure que P est un point de contour et que sa suppression ne provoquera pas de trou. Cet algorithme est simple car il ne nécessite qu’une sous-itération. En revanche, il ne prend pas en compte la simplicité des points de voisinage pour les points supprimables, il entraîne donc des collisions non gérées. Ceci implique que la stabilité du squelette n’est pas assurée (souvent trop érodé) et conduit à un squelette décalé par rapport à l’axe médian. Il ne réduit pas non plus les lignes doubles 8-connexes.

5.1.3.3 L’algorithme de DEUTSCH

DEUTSCH ([Deu72]) a ajouté une condition à celles de RUTOVITZpour résoudre le problème des lignes doubles 8-connexes. Puis il a ajouté une sous-itération en effectuant une rotation de 180°sur les conditions de suppression pour tenter d’aligner le squelette avec l’axe médian. Cela donne les conditions suivantes : – Première sous-itération : D1 :XR(P ) = 0, 2 ou 4 D2 :b(P )6= 1 D3 :x1x3x5 = 0 D4 :x1x3x7 = 0

D5 : siXR(P ) = 4 alors une des conditions (a) ou (b) suivantes doit être vraie :

(a) :x1x7= 1, x2+ x66= 0, et x3+ x4+ x5+ x8= 0

(b) :x1x3= 1, x4+ x86= 0, et x2+ x5+ x6+ x7= 0

– Deuxième sous-itération :

D1b :XR(P ) = 0, 2 ou 4

D2b :b(P )6= 1

D3b : rotation de 180° par rapport à D3 c.-à-d.x1x5x7 = 0

D4b : rotation de 180° par rapport à D4 c.-à-d.x3x5x7 = 0

D5b : rotation de 180° par rapport à D5 c.-à-d. siXR(P ) = 4 alors une des conditions (a’) ou

(b’) suivantes doit être vraie :

(a’) :x3x5 = 1, x2+ x6 6= 0, et x1+ x4+ x7+ x8 = 0

(b’) :x5x7 = 1, x4+ x8 6= 0, et x1+ x2+ x3+ x6 = 0

Là encore, les collisions ne sont pas gérées mais leurs conséquences sont minimisées par la double itération ; en revanche, les carrés sont souvent complètement érodés.

5.1.3.4 L’algorithme de ZHANG ETSUEN

Cet algorithme ([ZS84]) est le plus souvent cité et utilisé. Il consiste en deux sous-itérations pour repérer les pixels à effacer selon les critères suivants :

– Première sous-itération : Z1 :2≤ b(P ) ≤ 6 Z2 :XR(P ) = 2 Z3 :x1x3x7 = 0 Z4 :x1x5x7 = 0 – Deuxième sous-itération : Z1b : idem Z1 Z2b : idem Z2

Z3b : rotation de 180° par rapport à Z3 c.-à-d.x3x5x7 = 0

Z4b : rotation de 180° par rapport à Z4 c.-à-d.x1x3x5 = 0

Cet algorithme est relativement efficace et robuste au bruit de contour. Néanmoins certaines parties du squelette peuvent être décalées par rapport au centre.

5.1.3.5 L’algorithme de ZHANG ETWANG

FIGURE5.7 – Exemple de collision : si on supprimex3,P n’est plus simple.

ZHANG ETWANG ([ZW94]) présentent un algorithme parallèle en une seule itération (voir algo-rithmes 1 page suivante et 2 page 72) qui produit des squelettes parfaitement 8-connexes et qui gère les collisions. Pour se faire, ils font l’inventaire de toutes les collisions possibles (exemple figure 5.7) lors de la suppression d’un point simple (caractérisé parXH(P ) = 1 et b(P ) > 1) suivant sa nature (Ouest, Est,

Nord, Sud, Sud-Ouest, Nord-Ouest, Sud-Est, Nord-Est). Chaque pointP se voit attribuer une étiquette

de 0 à 8 suivant la configuration de ses voisins avec la fonctionW N : P → {0, . . . , 8} telle que : W N (P ) = 0 - P est un point multiple

W N (P ) = 1 - P est un point simple

W N (P ) = 2 - P est un point simple et x3est un point multiple

W N (P ) = 3 - P est un point simple et x5est un point multiple

W N (P ) = 4 - P est un point simple et x3etx5sont des points de multiple

W N (P ) = 5 - P est un point simple et x7est un point multiple

W N (P ) = 6 - P est un point simple et x3etx7sont des points multiple

W N (P ) = 7 - P est un point simple et x3etx5etx7sont des points multiple

W N (P ) = 8 - P est un point simple et x2est un point multiple

Cet algorithme donne de très bons résultats et reste relativement rapide.

5.1.3.6 L’algorithme MB2

BERNARD ETMANZARENA ([BM99a]) proposent également un algorithme parallèle en une itéra-tion qui calcule le squelette non mince mais totalement homotopique en gérant toutes les collisions. Nous nous en servirons comme base de comparaison. Ils partent du principe fondamental suivant lequel un algorithme de squelettisation préserve parfaitement la k-connexité si et seulement si les points sup-primés à chaque itération forment un ensemble k-simple (c.-à-d. que toute suppression de toute ou partie des points de l’ensemble, quel que soit l’ordre de suppression, ne change pas la connexité de la forme). La difficulté réside évidemment dans le fait qu’un ensemble de points simples n’est pas obligatoire-ment simple. Mais RONSE([Ron88]) a proposé une condition suffisante pour caractériser un ensemble k-simple dont BERNARD ETMANZARENAdérivent le théorème 3 page 72.

Algorithme 1: Fonction SimplePoint Données : Un objet du type pixelP

Résultat : Un booléen qui prend la valeur VRAI si le pixel est simple, FAUX sinon début point←WN(P); north←WN(x3); east←WN(x1); west←WN(x5); northeast←WN(x8);

SimpleP oint← F AUX;

suivantpoint faire

cas où = 1

SimpleP oint← V RAI

cas où = 2

sinorth = 0 alors

SimpleP oint← V RAI

fin cas où = 3

siwest = 0 alors

SimpleP oint← V RAI

fin cas où = 4

si (north = 0) et (west = 0) alors SimpleP oint← V RAI

fin cas où = 5

sieast = 0 alors

SimpleP oint← V RAI

fin cas où = 6

si (north = 0) et (east = 0) alors SimpleP oint← V RAI

fin cas où = 7

si (north = 0) et (west = 0) et (east = 0) alors SimpleP oint← V RAI

fin cas où = 8

sinortheast = 0 alors SimpleP oint← V RAI

fin fin fin

Algorithme 2: Programme principal pour le calcul du PPTA

Données : L’image binaire sous forme de tableau de pixels Q(i, j) où 1 ≤ i ≤ nblines et 1≤ j ≤ nbcol

Résultat : L’image binaire squelettisée début

N othingChanged← V RAI;

répéter

pouri← 1 à nbline faire

pourj← 1 à nbcol faire

siQ[i, j] > 0 etSimplePoint(Q[i, j])alors

Q[i, j] = 0; N othingChanged← F AUX; fin fin fin jusqu’àN othingChanged; fin P P P1) (α2) (β)

FIGURE 5.8 – Les masques de MB2 (avec les rotations de 90°), les pixels en croix peuvent prendre la valeur 0 ou 1.

Théorème 3 Pour respecter la 8-(4-)connexité, il est suffisant que les algorithmes parallèles

d’amincis-sement respectent simultanément les trois conditions suivantes : 1. tous les pixels supprimés sont simples ;

2. une 8-composante connexe contenue dans un carré2×2 ne peut pas être complètement supprimée ; 3. toute paire de pixels 4-adjacents simultanément supprimables doit être supprimée

séquentielle-ment.

Ils démontrent ensuite que cette condition suffisante est équivalente à la suppression simultanée des pixels dont le voisinage estα1 ouα2 (figure 5.8, et leurs trois versions après rotation de 90°) mais qui n’est pasβ (et ses trois versions après rotation de 90°).

Nous avons choisi par commodité une implémentation morphologique à base d’opérations « Tout ou Rien » (voir annexe C page 169) qui impose un parcours de l’image pour chaque masque. Il existe une version rapide de cet algorithme proposé par les auteurs.