• Aucun résultat trouvé

Contributions pour l’optimisation de l’implantation de SCCT

2.3 Optimisation algorithmique de notre méthode SCCT

2.3.3 Contributions pour l’optimisation de l’implantation de SCCT

Cette sous-section est une réponse aux défis calculatoires étayés dans la sous-section 2.3.1.

Nous présentons les solutions adoptées et leurs différents impacts sur les défis suscités. Il s’agit de l’utilisation des FAH, du codage en dur des configurations et de l’élimination de toute procédure de tri/recherche dans un tableau (par l’utilisation des flags).

i Notre implantation des FAHs

Tout d’abord, nous présentons notre implantation des FAHs qui permet à la fois de garantir l’ordre de traitement en vue de préserver la topologie et de minimiser le nombre d’instructions d’abaissement afin d’optimiser le temps de convergence vers le squelette.

L’algorithme 4 explique le mode opératoire de la FAH dans notre implantation. Pour assurer un traitement ordonné des pixels abaissables, nous ajoutons un premier examen de l’image qui initialise les piles avec les pixels λ-abaissables actuels. En effet, les pixels λ-abaissables se trouvent à tous les niveaux de gris. Le premier empilement dans la file

Figure 2.8 – Organigramme de l’implantation duλ-amincissement.

peut concerner un pixel de niveau de gris haut, et donc de priorité faible ce qui induit une mauvaise initialisation de la FAH puisque la file d’urgence peut-être utilisée excessivement.

L’implantation duλ-Skeleton remédie à ce problème en démarrant sa procédure au niveau des minima et en initialisant ainsi le pointeur de démarrage du dépilement en un de ces pixels. Cela suppose que les voisins de ces minima sont considérés comme les plus sombres de l’image.

Entrées: I(x) niveau de gris de xdans l’imageI 1: PourxdansI faire

2: Si xest (λ-abaissableOu(abaissableEtextr´emit´e)) alors 3: Empilerxdans la FAH à la pile de priorité 1I(x) 4: fin Si

5: fin Pour

6: TantqueFah n’est pas videfaire

7: Dépiler xde priorité maximale de la Fah

8: Si xest toujours (λ-abaissableOu(abaissableEtextr´emit´e)) à ce stadealors 9: I(x)max{I(y), y∈ N8<(x)}

10: fin Si

11: Détecter les voisinsyi,i= 1. . .8 dex

12: Siyi est (λ-abaissableOu(abaissableEtextr´emit´e))alors 13: Empileryi dans la pile de priorité 1I(yi)

14: fin Si 15: fin Tantque

et unique parcours de l’image, on empile sans fixer le pointeur de démarrage du dépilement.

Ce pointeur sera positionné à la fin de cette étape au niveau de la file de plus haute priorité. Ce premier parcours détecte les pixels abaissables de bas niveau de gris, et fixe ainsi le dépilement à un niveau de priorité haute. Lors du dépilement d’un pixel (afin de le traiter s’il est toujours abaissables), la file d’attente est mise à jour en empilant ses voisins λ-abaissable. Ceci permet non seulement d’examiner systématiquement les pixels de plus haute priorité (les plus sombres) mais aussi de propager l’amincissement au reste de l’image à travers les voisins et ce, sans recourir une deuxième fois au parcours de l’image.

En terme de complexité, cette solution permet de résoudre :

1. La dépendance au parcours : Seul un parcours initial est requis pour stocker dans la FAH les premiers pixels abaissables détectés dans l’image. Ce parcours permet de détecter tous les pixels abaissables de l’image initiale, étape qui garantit l’examen systématique des pixels abaissables les plus sombres. Le traitement n’est plus biaisé par l’ordre d’apparition des pixels abaissables. Il reste néanmoins un biais relatif à l’ajout dans une même pile de différents pixels abaissables puisque le dépilement dans une même pile se fait selon l’ordre d’empilement (et donc d’apparition). Pour le reste des abaissements, le parcours n’intervient plus dans la sélection des nouveaux abais-sables, puisque les voisins d’anciens abaissables sont les nouveaux candidats pour l’insertion dans la FAH. En effet, pour chaque abaissement, une étape de dépilement + empilement des voisins abaissables est effectuée. Ceci nous amène à résoudre un second défi qui est le traitement itératif de l’image.

2. Le traitement itératif de l’image : Selon l’algorithme 4, seul un premier parcours est exécuté suite au choix fait pour l’empilement des nouveaux pixels abaissables. Il ne s’agit plus de tester tous les pixels de l’image à chaque itération, mais seulement les pixels voisins d’anciens abaissables. Cette méthode d’empilement est suffisante pour parcourir tous les nouveaux abaissables. En effet, la naissance d’un nouveau pixel abaissable en dehors de ceux déjà empilés lors de l’initialisation ne peut être qu’une conséquence d’un changement dans son voisinage. C’est donc l’abaissement des pixels de la FAH qui crée ces nouveaux candidats à l’amincissement. Cette solution permet

un gain en nombre de tests et d’instruction d’abaissement effectués.

3. Procédure de tri : Plus aucune opération de tri n’est requise. Le tri se fait naturel-lement par le mécanisme d’empinaturel-lement dans la FAH, selon la priorité/niveau de gris d’un pixel. En effet, la mise à jour de la FAH par les nouveaux abaissables se fait en les insérant (empilant) dans la pile correspondante au niveaux de gris respectifs.

ii Comparaison des implantations SCCT et λ-Skeleton

Pour les 2 implantations concernées, il est à noter qu’il n’a plus de tri ni d’aspect itératif lors de la mise en oeuvre de l’amincissement. La Figure 2.9 illustre l’évolution des abaissements suivant le niveau de gris du pixel traité à chaque instruction. Cette évolution concerne leλ-Skeleton et la méthode SCCT déroulés sur l’image synthétique de la Figure 1.9.

Figure 2.9 – Evolution des niveaux de gris des pixels abaissés lors des dépilement de la FAH pour la méthode λ-Skeleton (en vert) et notre méthode SCCT (en rouge).

Notre objectif ici est de montrer à quel point les deux solutions respectent la contrainte du traitement ascendant des niveaux de gris. Nous notons d’abord les oscillations des ni-veaux de gris pour les deux solutions, et que ces oscillations sont plus nombreuses et intenses pour le λ-Skeleton. En fait, dans notre cas, nous revenons à quelques niveaux de gris sombres qui correspondent uniquement aux pixels abaissables émergents (dont l’ap-parition est induite par le changement de leurs voisins). Pour leλ-Skeleton, ces nouveaux pixels sombres correspondent à une plus grande classe de pixels déjà abaissables non en-core visités. Cette amélioration est induite par le premier examen de l’image que nous assurons afin de mieux classer la priorité des pixels pendant les premières itérations. Le mode de fonctionnement que nous avons adopté a également réduit le nombre d’instruc-tions d’abaissement de 1000 sur cette image synthétique. Ce gain en nombre d’instrucd’instruc-tions

d’exécution rapide) au dépens du critère queλ-creteˆ (plus gourmand en temps d’execution à cause des tests sur les composantes connexes), tandis qu’une image de lignes intercon-nectées correspond à une image de complexité "topologique" élevée.

Nous pouvons ainsi conclure que notre mode opératoire réduit les risques de décon-nexions, permet de parcourir toute l’image et diminue le nombre d’instructions comparé à l’implantation duλ-Skeleton sous Pink comme décrit dans notre publication [86].

iii Autres améliorations de l’implantation du SSCT

Notre implantation est faite en langage C et utilise la bibliothèque ITK qui facilite le chargement des images au format DICOM. Elle gère tout type d’image (différentes exten-sions, 8bits, 16 bits et 32 bits). Notre construction de la FAH s’adapte bien évidemment à ces différents formats en allouant des piles aux différents niveaux de gris trouvés dans l’image.

Dans le tableau 2.2, nous remarquons que les temps de tests requis pour les différentes configurations de voisinage et particulièrement celles des notions simple et λ-crest sont élevés. Ceci est lié à la complexité du voisinage de tels pixels et à la gourmandise des vérifications du nombre de composantes connexes. En effet, pour pouvoir décider si un point est λ-crest, on doit calculer le nombre de composantes 4-connexes et 4-adjacentes au pixel central dans son voisinage sombre et pour un pixelsimple, c’est le changemet du nombre de composantes8-connexes du voisinage de x qui est testé.

Afin de remédier à ce problème, nous choisissons de coder en dur la labellisation des composantes connexes (lister dans un tableau les configurations possibles). Il s’agit de chercher toutes les configurations possibles du voisinage et de stocker leurs labellisations correspondantes dans une matrice 256×2. En effet, en fonction de la configuration ob-tenue après binarisation, une labellisation du voisinage est effectuée dont le nombre de composantes connexes est déduit. Nous utilisons pour cela un programme qui, à partir d’un noyau de configurations (70 configurations) génère les labellisations relatives à 3 ro-tations des configurations "noyau". Le tableau 2.3 montre un exemple d’identification des labels de composantes connexes dans un voisinage particulier d’un pixel x.

Table2.3 – Méthode de génération des labels pour toutes les configurations d’un voisinage pixel d’indice 147 suivant sa configuartion de voisinage

configuration

Suite à ce codage en dur, le tableau 2.4 donne les résultats montrant le gain en temps d’exécution.

Table2.4 – Temps d’exécution des tests d’abaissement pour les différentes configurations sur 3 images différentes. Machine 64bits 16G RAM Quadcore. Mode d’exécution "Debug".

Temps d’exécution (en 10−6s)

test pic test λ-crˆete test simple testextr´emit´e Image Synth (153*121) 8 bits 0−0,003 16−28 15−30 0−0,001 Image DICOM (1460*1420) 16 bits 0−0,003 16−28 15−30 0−0,001 Empreinte (301*201) 8bits 0−0,003 16−28 15−30 0−0,001

Dans le tableau 2.4, nous précisons que les temps d’exécution présentés sont issus d’une compilation en mode "Debug", car en mode "Release", tous les temps d’exécution sont≪10−9. Le tableau 2.5 donne un aperçu des temps d’exécution pour la série d’images synthétiques utilisées dans ce chapitre.

Table 2.5 – Temps d’exécution de l’amincissement par ajustement local du contraste SCCT sur une Machine 64bits 16G RAM Quadcore. Mode d’exécution "Release".

Réseau (153 ×

121) 8 bits Anneaux (326×

328) 8 bits Intersection

(100×100) 8bits Empreinte (301×201) 8bits Temps

d’exécu-tion (en s) 0.22 3 0.26 0.8

2.4 Discussion sur l’impact du bruit et du contraste