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 BRAMBORAlgorithme 6.3 : tr2DDiag8x8bf, Algorithme <strong>de</strong> tranposition d’un macro bloc 8 × 8 qui utilise 3shuffles partiels (tr2DDiag8x8bf1, tr2DDiag8x8bf2, tr2DDiag8x8bf3).1 tr2DDiag8x8bf :: [ PVec I α] → [ PVec I α]2 tr2DDiag8x8bf ss = tr2DDiag8x8bf3 ◦ tr2DDiag8x8bf2 ◦ tr2DDiag8x8bf1 $ ss34 tr2DDiag8x8bf1 :: [ PVec I α] → [ PVec I α]5 tr2DDiag8x8bf1 xs = alter 4 ( (map ( shflo $ 1) pairs) , (map ( shfhi $ 1) pairs) )6 where pairs = listDivAlter 4 xs78 tr2DDiag8x8bf2 :: [ PVec I α] → [ PVec I α]9 tr2DDiag8x8bf2 xs = alter 2 ( (map ( shflo $ 1) pairs) , (map ( shfhi $ 1) pairs) )10 where pairs = listDivAlter 2 xs1112 tr2DDiag8x8bf3 :: [ PVec I α] → [ PVec I α]13 tr2DDiag8x8bf3 xs = alter 1 ( (map ( shflo $ 1) pairs) , (map ( shfhi $ 1) pairs) )14 where pairs = listDivAlter 1 xsdans une configuration différente. À <strong>la</strong> fin du traitement, nous obtenons le macro bloc, exprimé par <strong>la</strong>liste <strong>de</strong>s vecteurs paquetés, transposé par <strong>la</strong> diagonale.PVec 8PVec 7PVec 6PVec 5PVec 4PVec 3PVec 2PVec 1listDivAlter$4PVec 4PVec 7 PVec 3PVec 8PVec 6 PVec 2PVec 1shflo$1PVec 5HGFEshfhi$1DHCGBFAEalter$4DCBAFIG. 6.5 : Illustration du fonctionnement <strong>de</strong> <strong>la</strong> fonction tr2DDiag8x8bf1Dans les 3 fonctions partielles, <strong>la</strong> variables pairs contient <strong>la</strong> liste dont les éléments sont les arguments<strong>pour</strong> les fonctions shuffles. C’est notre fonction utilitaire listDivAlter qui se charge <strong>de</strong> bon ordonnancement<strong>pour</strong> obtenir une liste <strong>de</strong>s paires (PVec I α, PVec I α) qui sont prêtes à être employées sur lesfonctions shuffles. La fonction alter nous sert ici à <strong>la</strong> bonne organisation <strong>de</strong>s résultats dans le flux <strong>de</strong>sortie. La fig. 6.5 illustre ce processus <strong>pour</strong> <strong>la</strong> fonction tr2DDiag8x8bf1.En effet, cette façon <strong>de</strong> diviser <strong>de</strong>s streams d’entrée et leur alternance exprime formellement le réseaud’interconnexions particulier entre les données et les blocs exécutifs. Ce réseau est également connucomme <strong>de</strong>s papillons (angl. butterflies) et il est illustré sur <strong>la</strong> fig. 6.4. Notons que les flèches supérieuresresp. inférieures à l’entrée <strong>de</strong> chacun <strong>de</strong>s blocs <strong>de</strong>s opérations shuffles désignent les premiersresp. <strong>de</strong>uxièmes éléments dans les tuples qui constituent les arguments d’entrée <strong>de</strong> ces opérations.La fonction alter était déjà présentée, page 133, mais <strong>la</strong> définition exacte <strong>de</strong> <strong>la</strong> fonction listDivAlterest nouvelle :listDivAlter :: I → [α] → [ (α,α)]listDivAlter n xs = select n ( [ ] , [ ] ) xswhereselect k (lo ,hi ) (x :xs) | k > 0 = select (k−1) (lo +[x ] ,hi ) xsselect k (lo ,hi ) xs | k == 0 = select n (hi , lo) xsselect k (lo ,hi ) [ ] = (uncurry$zip) (lo , hi )Cette fonction définit le réseau d’interconnexions. Pour une liste d’entrée xs dont <strong>la</strong> taille est N =2 k , k ≥ 1, cette fonction crée une liste <strong>de</strong> taille N 2dont les éléments sont <strong>de</strong>s tuples. La création <strong>de</strong> cetteliste <strong>de</strong> sortie passe par une phase intermédiaire où <strong>la</strong> liste d’entrée xs est divisée d’une façon alternéeen <strong>de</strong>ux listes, chacune <strong>de</strong> taille N 2, qui ne sont pas explicitement mentionnées dans <strong>la</strong> définition mais136

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

Saved successfully!

Ooh no, something went wrong!