12.07.2015 Views

Algorithmes de la morphologie mathématique pour - Pastel - HAL

Algorithmes de la morphologie mathématique pour - Pastel - HAL

Algorithmes de la morphologie mathématique pour - Pastel - HAL

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Algorithmes</strong> <strong>de</strong> <strong>la</strong> <strong>morphologie</strong> <strong>mathématique</strong> <strong>pour</strong> les architectures orientées fluxJaromír BRAMBORsur une architecture donnée. C’est <strong>pour</strong>quoi nous avons pu les compiler facilement <strong>pour</strong> l’architectureIntel IA-32, qui fait le point <strong>de</strong> référence dans cette thèse, en nous appuyant sur <strong>la</strong> technologie IntelMMX (64 bits) et SSE2 (128 bits), le <strong>de</strong>rnier implémentant les fonctions SIMD <strong>pour</strong> les maxima et lesminima utilisés dans <strong>la</strong> <strong>morphologie</strong> <strong>mathématique</strong>.Tout d’abord, nous présentons les résultats <strong>de</strong> l’implémentation <strong>de</strong> <strong>la</strong> fonction distance sur <strong>la</strong> grillecarrée et ayant 4-voisins par pixel, q.v. tab. 7.1. Il s’agit d’un algorithme <strong>de</strong> base qui est bien connu. Nousvoulions obtenir les temps d’exécution chiffrés <strong>pour</strong> cette fonction distance <strong>pour</strong> pouvoir les comparerpar <strong>la</strong> suite avec les temps obtenus <strong>pour</strong> les nivellements. En consultant <strong>la</strong> table 7.1 nous constatonsque <strong>pour</strong> une image <strong>de</strong> 99 ko, nous obtenons sur un processeur Intel Pentium 4 à 2.4 GHz un tempsd’exécution <strong>de</strong> 0.34 ms. Ce temps est le plus favorable possible car l’algorithme présenté travaille avecl’image <strong>de</strong> sortie ayant les éléments <strong>de</strong> 8 bits ; ce qui peut, <strong>pour</strong> certains types d’images, poser <strong>de</strong>sproblèmes d’insuffisance du type <strong>de</strong> stockage, mais nous le présentons ici <strong>pour</strong> une autre raison – lesalgorithmes <strong>de</strong>s nivellements présentés par <strong>la</strong> suite travaillent avec les images d’entrée et <strong>de</strong> sortie <strong>de</strong>8 bits et cette implémentation <strong>de</strong> <strong>la</strong> fonction distance peut nous servir en tant que référence <strong>pour</strong> <strong>la</strong>comparaison.Fonction distance, grille carrée, 4-voisinsmétho<strong>de</strong> temps tauxd’implémentation en ms d’accélérationgénérique 2.42 1.0par macro blocs utilisant <strong>la</strong> transposition par diagonale directe 0.34 7.1Image 352 × 288 × 8 bits = 99 ko, l’image d’entrée et l’image <strong>de</strong> sortie sont <strong>de</strong> 8 bits. L’algorithme génériqueutilise les fonctions getpixel()/setpixel() et <strong>la</strong> propagation en sens vidéo/anti-vidéo ; l’algorithme par macro blocsest optimisé <strong>pour</strong> les types multimédia <strong>de</strong> 64 bits et utilise <strong>la</strong> transposition directe à l’échelle <strong>de</strong>s macro blocs.Exécuté 1000 fois en trois réalisations, le temps présenté est le moyen <strong>de</strong> <strong>la</strong> meilleure réalisation. Processor IntelPentium 4 à 2.4 GHz, mémoire cache L2 = 512 ko ; système d’exploitation Linux Mandrake 9.2 ; compi<strong>la</strong>teur IntelICC 8.1 <strong>pour</strong> Linux.TAB. 7.1 : Résultats expérimentaux <strong>pour</strong> diverses implémentations <strong>de</strong> <strong>la</strong> fonction distance sur <strong>la</strong> grille carréeet 4-voisins par pixelLes résultats <strong>de</strong>s diverses implémentations <strong>de</strong>s nivellements p<strong>la</strong>ts et <strong>de</strong>s <strong>la</strong>mbda-nivellements avec <strong>la</strong>valeur λ = 1 sont présentés dans <strong>la</strong> table 7.2. Les conditions <strong>de</strong>s tests (dimensions d’image, processeuretc.) <strong>pour</strong> les nivellements sont i<strong>de</strong>ntiques à celles <strong>pour</strong> <strong>la</strong> fonction distance. En consultant les temps <strong>de</strong>l’implémentation <strong>la</strong> plus rapi<strong>de</strong> par macro blocs <strong>pour</strong> 1 itération – 1.2 ms <strong>pour</strong> les nivellements p<strong>la</strong>tset 1.3 ms <strong>pour</strong> les <strong>la</strong>mbda-nivellements – et en les comparant avec <strong>la</strong> valeur obtenue <strong>pour</strong> <strong>la</strong> fonctiondistance (0.34 ms), nous pouvons constater que l’exécution <strong>de</strong> l’algorithme <strong>de</strong>s nivellements est à peuprès 3.5 à 4 fois plus longue que celle <strong>de</strong> <strong>la</strong> fonction distance correspondante.En ce qui concerne les différences entre les diverses implémentations <strong>de</strong>s nivellements, nous avonschoisi comme référence l’implémentation pointeur++ (son taux d’accélération est égal à 1.0 est présentéen gras). Le masque, qui est une <strong>de</strong>s images d’entrée <strong>de</strong> l’algorithme <strong>de</strong>s nivellements, n’est pas modifiépar ce <strong>de</strong>rnier. Ainsi, sa transposition peut être effectuée en avance et seulement une fois <strong>pour</strong> toutesles itérations. Les temps que nous présentons <strong>pour</strong> l’implémentation par macro blocs, reflètent ce fait etnous mentionnons entre parenthèses les temps incluant cette transposition préa<strong>la</strong>ble. La fig. 7.12(a) présenteune comparaison graphique <strong>de</strong>s temps d’exécution <strong>pour</strong> différentes implémentations <strong>de</strong> <strong>la</strong> fonctiondistance et <strong>de</strong>s nivellements p<strong>la</strong>ts.Sachant que le parallélisme SIMD que nous utilisons est <strong>de</strong> 8 éléments <strong>de</strong> 8 bits (implémentation utilisantles types multimédia <strong>de</strong> 64 bits) et en prenant en compte que nous effectuons <strong>de</strong>ux transpositionspar diagonale dans notre implémentation par macro blocs qui ne sont pas présentes dans l’implémentationpointer++, le taux d’accélération <strong>de</strong>s nivellements est <strong>de</strong> 4.8 <strong>pour</strong> 1 itération et il augmente avec160

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!