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...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<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 BRAMBORNous y évaluons d’abord les résultats lo et hi <strong>de</strong> nivellements partiels en utilisant <strong>la</strong> fonction lolevelSQR4<strong>de</strong>s sous-nivellements et <strong>la</strong> fonction hilevelSQR4 <strong>de</strong>s sur-nivellements. L’expression λ définit sur p<strong>la</strong>ce<strong>la</strong> fonction <strong>de</strong> composition SIMD <strong>de</strong>s nivellements en utilisant <strong>la</strong> fonction testSIMD (cf. sa définition,page 202) qui crée un vecteur paqueté du masque que l’on utilise aussitôt dans <strong>la</strong> fonction <strong>de</strong> dép<strong>la</strong>cementconditionnel cndmoveSIMD (cf. sa définition, page 203). Cette construction est une techniquecourante <strong>pour</strong> exprimer l’expression conditionnelle if then else <strong>pour</strong> les données SIMD.La fonction map2 applique <strong>la</strong> fonction λ sur les éléments <strong>de</strong> <strong>de</strong>ux streams. Les fonctions mkAr2DPVecet mkAr2DFromAr2DPVec sont utilisées <strong>pour</strong> vectoriser et dé-vectoriser les arrays, respectivement, etles fonction elems et listArray sont les fonctions standards du Haskell <strong>pour</strong> le passage d’un array à unstream et vice versa, respectivement.7.4 Approche utilisant les macro blocs avec <strong>la</strong> transposition directeLe skeleton algorithmique <strong>de</strong> propagation propAlgSQR4 que nous avons utilisé jusqu’à présentn’employait <strong>la</strong> transposition <strong>de</strong> données qu’après avoir accompli les phases entières <strong>de</strong> <strong>la</strong> propagation.Pour pouvoir plus profiter <strong>de</strong> <strong>la</strong> localité <strong>de</strong>s données lors du parcours <strong>de</strong> l’image, nous pouvons envisager<strong>la</strong> construction <strong>de</strong>s algorithmes qui travailleraient à l’échelle <strong>de</strong>s macro blocs dont <strong>la</strong> taille serait égale à<strong>la</strong> taille du registre multimédia <strong>de</strong> notre architecture et où nous effectuerions <strong>de</strong>ux phases <strong>de</strong> propagationet une transposition par diagonale en même temps sans avoir besoin d’écrire les données dans <strong>la</strong> mémoireprincipale.Le principe <strong>de</strong> cette technique est illustré par <strong>la</strong> fig. 7.10 qui présente <strong>la</strong> chaîne <strong>de</strong> traitement avecles données représentées en tant que flux et les opérations qui sont effectuées sur ces données en tantque kernels d’exécution. Nous n’allons pas donner <strong>de</strong> <strong>de</strong>scription formelle à cette technique à l’échelle<strong>de</strong> l’image toute entière. Nous présentons seulement le principe <strong>de</strong> fonctionnement <strong>de</strong> cette approche àl’échelle <strong>de</strong> macro bloc car nous pensons que sa <strong>de</strong>scription formelle peut être déduite à partir du style<strong>de</strong> travail que nous avons présenté <strong>pour</strong> le skeleton propAlgSQR4.Macro blocd’entréeMacro blocaprès <strong>la</strong> propagationMacro bloc après<strong>la</strong> transposition par diagonaleMacro bloc résultantaprès <strong>la</strong> propagationVHA 1B 1C 1D 1A 2B 2C 2D 2HHB 1B 2B N-1B NA N-1B N-1C N-1D N-1A NB NC ND NV 2H 2A NVA 1mfoldl B NB 1tr2DDiagNxPVecNbf C NHC 1 mfoldl D ND 1H 2FIG. 7.10 : La chaîne <strong>de</strong> traitement d’un macro bloc où <strong>la</strong> première propagation est suivie directement par <strong>la</strong>transposition par diagonale et par <strong>la</strong> <strong>de</strong>uxième propagationTout d’abord, nous appliquons <strong>la</strong> première phase <strong>de</strong> propagation (verticale), exprimée par <strong>la</strong> fonctionmfoldl. Cette fonction utilise l’élément V comme entrée <strong>pour</strong> <strong>la</strong> propagation. Cet élément correspond158

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

Saved successfully!

Ooh no, something went wrong!