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 BRAMBOR6.1 Transpositions et rotations <strong>de</strong>s arraysLa première catégorie <strong>de</strong>s algorithmes convenant à <strong>la</strong> réorganisation <strong>de</strong>s données <strong>pour</strong> l’échangemutuel <strong>de</strong>s axes est constituée par les algorithmes <strong>de</strong> transposition d’un array par <strong>la</strong> diagonale et l’antidiagonale.La <strong>de</strong>uxième catégorie est constituée par les algorithmes <strong>de</strong> rotation d’un array <strong>de</strong> + π 2 <strong>de</strong> − π 2 .Dans <strong>la</strong> pratique, nous allons nous servir plus souvent <strong>de</strong>s transpositions, surtout <strong>pour</strong> leur propriétéd’auto-inversion, où le même algorithme appliqué sur un array X <strong>de</strong>ux fois <strong>de</strong> suite donne commerésultat l’array d’origine X. Pour les transpositions par <strong>la</strong> diagonale, T D , et les transpositions par l’antidiagonale,T A , les expressions suivantes sont vali<strong>de</strong>s :X = T D (T D (X))X = T A (T A (X))Ce qui n’est pas le cas <strong>pour</strong> les rotations <strong>de</strong> + π 2 , R +, et <strong>de</strong> rotation <strong>de</strong> − π 2 , R −, qui assurent mutuellementles opérations inverses. Cette propriété est décrite par les expressions suivantes :X = R − (R + (X))X = R + (R − (X))Même si en pratique nous n’utiliserons que les transpositions, nous ajoutons à notre explicationégalement les rotations car elles sont connexes au sujet <strong>de</strong> changement <strong>de</strong> <strong>la</strong> manière <strong>de</strong> stocker et,comme nous le verrons par <strong>la</strong> suite, entrent entièrement dans <strong>la</strong> logique <strong>de</strong> <strong>la</strong> construction <strong>de</strong>s algorithmessuivants.6.1.1 Définitions <strong>de</strong>s transpositions et <strong>de</strong>s rotations6.1.1.1 Définition <strong>de</strong> <strong>la</strong> transposition par diagonaleLa définition <strong>de</strong> <strong>la</strong> transposition par <strong>la</strong> diagonale (principale) d’un array <strong>de</strong> 2 dimensions, commenous le définissons par <strong>la</strong> fonction tr2DDiag, est i<strong>de</strong>ntique à <strong>la</strong> définition d’une transposition matricielle.tr2DDiag :: Ar ( I , I ) α → Ar ( I , I ) αtr2DDiag ar = array ( (1,1) , (q,p)) [ ( ( i , j ) , ar ! ( j , i ) ) | i ← [1 .. q] , j ← [1 .. p] ]where (p,q) = dimsAr2D arDans cette définition, nous utilisons <strong>la</strong> fonction array qui crée un nouvel array à partir <strong>de</strong> l’étendue<strong>de</strong>s in<strong>de</strong>x et d’un liste <strong>de</strong>s tuples (in<strong>de</strong>x, élement). La définition est simple, <strong>pour</strong> un élément avec l’in<strong>de</strong>x(i, j) dans l’array <strong>de</strong> sortie nous associons un élement avec l’in<strong>de</strong>x (j, i) <strong>de</strong> l’array d’entrée.6.1.1.2 Définition <strong>de</strong> <strong>la</strong> transposition par antidiagonaleLa transposition par l’antidiagonale, définie par <strong>la</strong> fonction tr2DADiag, est simi<strong>la</strong>ire à <strong>la</strong> définitionprécé<strong>de</strong>nte à l’exception du travail avec les in<strong>de</strong>x :tr2DADiag :: Ar ( I , I ) α → Ar ( I , I ) αtr2DADiag ar = array ( (1,1) , (q,p))[ ( ( i , j ) , ar ! (p−j+1, q−i+1)) | i ← [1 .. q] , j ← [1 .. p] ]where (p,q) = dimsAr2D ar6.1.1.3 Définition <strong>de</strong> <strong>la</strong> rotation <strong>de</strong> + π 2Nous définissons <strong>la</strong> rotation <strong>de</strong> + π 2par <strong>la</strong> fonction rot2DPlus90 <strong>de</strong> <strong>la</strong> même manière en appliquantun travail différent sur les in<strong>de</strong>x :rot2DPlus90 :: Ar ( I , I ) α → Ar ( I , I ) αrot2DPlus90 ar = array ( (1,1) , (q,p))[ ( ( i , j ) , ar ! ( j ,q−i+1)) | i ← [1 .. q] , j ← [1 .. p] ]where (p,q) = dimsAr2D ar128

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

Saved successfully!

Ooh no, something went wrong!