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 BRAMBORParcours p BVecteurpaquetéVecteurpaquetéParcours p AVecteurpaquetéVecteurpaquetéFIG. 7.3 : Remp<strong>la</strong>cement <strong>de</strong> <strong>la</strong> propagation SIMD en direction parallèle au sens du stockage par les transpositionspar diagonale <strong>de</strong> l’array et par l’application <strong>de</strong> <strong>la</strong> propagation en sens perpendicu<strong>la</strong>ire à l’axe <strong>de</strong>vectorisation. L’exemple d’élément structurant <strong>pour</strong> <strong>la</strong> grille carrée et le 4-voisinage.sndApplication <strong>de</strong> <strong>la</strong> transpositionsnd par diagonalesndApplication <strong>de</strong> <strong>la</strong> transpositionpar diagonalesndfstfstfstfst=++où <strong>la</strong> <strong>de</strong>rnière ligne présente le schéma après l’élimination <strong>de</strong> <strong>la</strong> double transposition qui est redondante.Dans le cas où les données sont paquetées d’une façon différente <strong>de</strong> celle présentée sur <strong>la</strong> fig. 7.3, lesformules analogiques peuvent être construites en reflétant ce sens <strong>de</strong> paquetage particulier.7.2 Skeletons applico-réductifs <strong>pour</strong> <strong>la</strong> propagationPour pouvoir exprimer formellement <strong>la</strong> manière dont on travaillera lors <strong>de</strong>s propagations, nous définissons<strong>de</strong>ux skeletons : mfoldl et mfoldl1. Nous les avons nommées les skeletons applico-réductifs carils combinent <strong>de</strong>ux opérations <strong>de</strong> base, l’application et <strong>la</strong> réduction dans leurs corps. Leurs fonctionnementssont très proches <strong>de</strong> <strong>de</strong>ux skeletons du Haskell : scanl et scanl1, mais ils diffèrent par certainsdétails et leurs définitions ne sont pas exactement les mêmes.Le skeleton mfoldl :mfoldl :: (α → β → α) → α → [β] → [α]mfoldl _ _ [ ] = [ ]mfoldl f v (e:es) = r : ( mfoldl f r es) where r = f v eprend trois arguments. Le premier est <strong>la</strong> fonction f <strong>de</strong> <strong>de</strong>ux arguments qui assure <strong>la</strong> fonctionnalitéd’application. La fonction f est appliquée sur l’argument v <strong>de</strong> ce skeleton et sur le premier élémente <strong>de</strong> <strong>la</strong> liste (e : es). Son résultat est inscrit dans le stream résultant mais également réutilisé commeargument dans l’application suivante <strong>de</strong> <strong>la</strong> fonction f sur le <strong>de</strong>uxième élément du stream d’entrée. Cettepropagation se <strong>pour</strong>suit jusqu’à ce que le stream d’entrée soit vi<strong>de</strong>. La figure 7.4 illustre graphiquementce fonctionnement. Notons que ce skeleton retourne un stream qui est le résultat <strong>de</strong> l’application <strong>de</strong> <strong>la</strong>fonction f . Le résultat <strong>de</strong> <strong>la</strong> réduction n’est pas retourné explicitement mais incorporé dans le streamrésultant. C’est, en effet, le <strong>de</strong>rnier élément <strong>de</strong> ce stream qui porte <strong>la</strong> valeur résultante <strong>de</strong> <strong>la</strong> réduction.ve 0e 1f r 0f r 1fr 0r 1e f rN-1N-1r N-1FIG. 7.4 : Fonctionnement du skeleton applico-réductif mfoldl.Dans certains cas, il sera plus pratique d’utiliser le skeleton algorithmique mfoldl1 qui assure <strong>la</strong>fonctionnalité applico-réductive sur le stream. Par rapport au skeleton mfoldl décrit précé<strong>de</strong>mment, nousne passons que <strong>la</strong> fonction f et le stream d’entrée (e : es) comme arguments :150

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

Saved successfully!

Ooh no, something went wrong!