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.

Jaromír BRAMBOR7.3. SKELETON ALGORITHMIQUE DE LA PROPAGATION SIMD EN 4-VOISINAGEpeuvent être traités par les instructions SIMD <strong>de</strong> notre architecture multimédia en même temps. f est <strong>la</strong>fonction qui définit l’opération <strong>de</strong> propagation (notons qu’elle est définie <strong>pour</strong> les vecteurs paquetés) etar est l’array d’entrée.7.3.3 Propagations SIMD sur l’image entière <strong>pour</strong> le 4-voisinage et <strong>la</strong> grille carréeAinsi, nous avons présenté les outils <strong>de</strong> base <strong>pour</strong> pouvoir finalement définir le skeleton propAlgSQR4<strong>de</strong> <strong>la</strong> propagation SIMD <strong>pour</strong> le 4-voisinage et <strong>la</strong> grille carrée. C’est l’algorithme 7.3 qui définit ce skeleton.Algorithme 7.3 : propAlgSQR4, skeleton algorithmique <strong>de</strong> <strong>la</strong> propagation SIMD <strong>pour</strong> <strong>la</strong> grillecarrée et le 4-voisinagepropAlgSQR4 :: (Ordα) ⇒ [Char] → I → (PVec I α → PVec I α → (PVec I α, PVec Iα))→ Ar ( I , I ) α → Ar ( I , I ) αpropAlgSQR4 axe pvecsz f ar = p 2 ◦ t D ◦ p 2 ◦ p 1 ◦ t D ◦ p 1 $ arwherep 1 = pGen "FW" axe pvecsz fp 2 = pGen "BW" axe pvecsz ft D = trRot2DMBSIMD "TD" axe pvecszNous voyons que sa définition est beaucoup plus c<strong>la</strong>ire que celles <strong>de</strong>s skeletons précé<strong>de</strong>nts. En effet,nous avons caché tout le travail lourd dans <strong>la</strong> fonction <strong>de</strong> parcours pGen et nous obtenons une structuredéfinissant le strict nécessaire <strong>pour</strong> <strong>la</strong> <strong>de</strong>scription <strong>de</strong> ce type <strong>de</strong> propagation.Nous y reconnaissons, sur <strong>la</strong> ligne 3, l’enchaînement <strong>de</strong>s opérations :p 2 ◦ t D ◦ p 2 ◦ p 1 ◦ t D ◦ p 1 $ arque nous avons déjà mentionné dans <strong>la</strong> section 7.1, page 7.3 et qui n’utilise que 2 sens <strong>de</strong> parcours principaux,appliquant ainsi l’approche <strong>de</strong> <strong>la</strong> transposition <strong>pour</strong> contourner les propagations parallèles à l’axe<strong>de</strong> stockage <strong>de</strong>s données dans <strong>la</strong> mémoire, comme illustrées sur <strong>la</strong> fig. 7.3, page 7.3. Mais nous utilisonsl’approche plus générale qui travaille avec les phases <strong>de</strong> propagation p 1 et p 2 , qui ne sont concrétiséesqu’à l’intérieur <strong>de</strong> <strong>la</strong> phase <strong>de</strong> propagation pGen selon <strong>la</strong> valeur <strong>de</strong> l’axe <strong>de</strong> stockage transmise par leparamètre axe. Le paramètre pvecsz définit le nombre d’éléments qui peuvent être traités en parallèlepar les instructions SIMD <strong>de</strong> notre architecture et f définit l’opération à effectuer lors <strong>de</strong> <strong>la</strong> propagation ;ar est l’array d’entrée.Remarquons que <strong>pour</strong> changer l’axe <strong>de</strong> stockage <strong>de</strong> données, nous utilisons <strong>la</strong> fonction généralisée <strong>de</strong><strong>la</strong> transposition /rotation d’un macro bloc trRot2DMBSIMD que nous avons définie dans le chapitre 6dédié à ce sujet. Rappelons que cette fonction est concrétisée par le paramètre ”TD” <strong>pour</strong> effectuer <strong>la</strong>transposition par diagonale et qu’elle utilise l’approche <strong>de</strong>s macro blocs lors <strong>de</strong> son évaluation. La tailled’un macro bloc est définie par <strong>la</strong> taille du vecteur paqueté pvecsz.7.3.4 Calcul <strong>de</strong> <strong>la</strong> fonction distanceLes skeletons que nous venons <strong>de</strong> présenter ne définissent que <strong>la</strong> structure du traitement. La fonctionnalitéconcrète va utiliser ces skeletons <strong>pour</strong> les spécialiser et leur donner <strong>la</strong> forme finale <strong>de</strong> l’algorithmequi exécute l’opération souhaitée. Dans notre cas, l’opération que nous ciblons tout d’abord est <strong>la</strong> fonctiondistance chamfer calculée sur le 4-voisinage et <strong>la</strong> grille carrée.Pour pouvoir <strong>la</strong> définir, nous <strong>de</strong>vons préciser certains paramètres dépendant <strong>de</strong> l’application concrète.Il s’agit notamment <strong>de</strong> l’axe <strong>de</strong> stockage <strong>de</strong>s données dans <strong>la</strong> mémoire axe et <strong>de</strong> <strong>la</strong> taille du vecteurpaqueté pvecsz.En ce qui concerne les données d’entrée, nous <strong>de</strong>vons avoir <strong>de</strong>ux arrays : le premier avec l’image dumasque, qui est une image binaire et où les valeurs ”True” définissent <strong>la</strong> zone dans <strong>la</strong>quelle nous calculons153

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

Saved successfully!

Ooh no, something went wrong!