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 BRAMBOR6.2. APPROCHE MACRO BLOCS AUX TRANSPOSITIONS ET ROTATIONS6.1.1.4 Définition <strong>de</strong> <strong>la</strong> rotation <strong>de</strong> − π 2Pareillement, <strong>la</strong> rotation <strong>de</strong> − π 2d’un array est défini par <strong>la</strong> fonction rot2DMinus90 :rot2DMinus90 :: Ar ( I , I ) α → Ar ( I , I ) αrot2DMinus90 ar = array ( (1,1) , (q,p))[ ( ( i , j ) , ar ! (p−j+1, i ) ) | i ← [1 .. q] , j ← [1 .. p] ]where (p,q) = dimsAr2D ar6.1.1.5 Définitions <strong>de</strong> <strong>la</strong> fonction commune <strong>pour</strong> les transpositions et les rotationsNous définissons l’algorithme 6.1, un algorithme trivial <strong>pour</strong> le changement du sens <strong>de</strong> stockage, quitravaille élément par élément et selon les définitions <strong>de</strong> ces quatre opérations. Cet algorithme définit <strong>la</strong>fonction commune <strong>pour</strong> ces quatre opérations, trRot2D. Nous utiliserons avantageusement cette fonctionqui choisit l’opération exacte selon une clé dans nos prochains algorithmes :Algorithme 6.1 : trRot2D, définit <strong>la</strong> fonction commune <strong>de</strong>s transpositions par diagonale et parantidiagonale et <strong>de</strong>s rotations <strong>de</strong> + π 2 et <strong>de</strong> − π 2travail<strong>la</strong>nt élément par élément directement selonles définitions <strong>de</strong> ces opérations1 trRot2D :: [Char] → Ar ( I , I ) α → Ar ( I , I ) α2 trRot2D how ar | how == "TD" = tr2DDiag ar3 | how == "TA" = tr2DADiag ar4 | how == "R+" = rot2DPlus90 ar5 | how == "R−" = rot2DMinus90 ar6.2 Approche macro blocs aux transpositions et rotationsBien que nous puissions utiliser les transpositions <strong>de</strong>s arrays selon leurs définitions travail<strong>la</strong>nt élémentpar élément, notre intérêt <strong>pour</strong> les architectures à flux nous incite à exploiter le parallélisme <strong>de</strong>données, à trouver les algorithmes qui seraient plus intéressants <strong>pour</strong> le traitement en parallèle et, parconséquent, plus efficaces que si on utilisait le traitement séquentiel.Le coeur <strong>de</strong> notre approche se situe dans le travail par blocs. Nous allons découper un array d’unefaçon régulière et prédéfinie à <strong>de</strong>s macro blocs. La figure 6.1 illustre cette situation <strong>pour</strong> le découpaged’un array à 3 × 3 macro blocs.Il est à remarquer qu’en théorie, les dimensions d’un macro bloc peuvent nepas être égales et <strong>de</strong> plus, elles ne sont pas obligées d’être ni <strong>de</strong> puissance 2, niun multiple <strong>de</strong> 2. La transposition d’un bloc M × N d’une dimension impaire estpossible, en se réduisant, <strong>pour</strong> les dimensions égales à 1 × 1, à un cas trivial <strong>de</strong>découpage par élément. En pratique, nous allons utiliser plutôt les blocs convenablesà notre architecture matérielle, le plus souvent <strong>de</strong>s dimensions <strong>de</strong> multiples<strong>de</strong> 2 et <strong>de</strong> puissance 2. Mais il est possible d’envisager, <strong>pour</strong> les architectures dédiées,une solution différente, e.g. <strong>de</strong>s dimensions <strong>de</strong> multiples <strong>de</strong> 2 mais pas <strong>de</strong>puissance 2.Une fois l’array découpé, les opérations <strong>de</strong> transposition ou <strong>de</strong> rotation vontse diviser en <strong>de</strong>ux sous-problèmes :• transposition/rotation à l’échelle <strong>de</strong>s macro blocs et,• transposition/rotation à l’intérieur <strong>de</strong> chacun <strong>de</strong>s macro blocs.A(1,1)D(2,1)G(3,1)B(1,2)E(2,2)H(3,2)C(1,3)F(2,3)I(3,3)FIG. 6.1 :Découpage d’unarray à 3 × 3 macroblocsEn effet, les transpositions/rotations partielles à l’intérieur <strong>de</strong>s macro blocs sont <strong>de</strong>s tâches indépendanteset peuvent être exécutées ainsi. La transposition à l’échelle globale qui manipulera les macro blocs vaassurer <strong>la</strong> même opération au niveau <strong>de</strong> <strong>la</strong> granu<strong>la</strong>rité crue. La figure 6.2 illustre cette philosophie.129

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

Saved successfully!

Ooh no, something went wrong!