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 BRAMBOR4.3. PRIMITIVES DE STOCKAGE ET DE REPRÉSENTATION DES DONNÉESMême si dans nos traitements nous pouvons rencontrer les vraies données vectorielles comme c’est lecas chez les coordonnés x, y, z, w sur les cartes graphiques, dans <strong>la</strong> plus gran<strong>de</strong> partie <strong>de</strong> nos algorithmes,les données que nous traitons ne correspon<strong>de</strong>nt pas à un vrai vecteur d’un point <strong>de</strong> vue <strong>mathématique</strong>mais plutôt à <strong>de</strong>s groupes <strong>de</strong> pixels. C’est <strong>la</strong> raison <strong>pour</strong>quoi nous préférons gar<strong>de</strong>r le terme donnéespaquetées <strong>pour</strong> nos propos car nous pensons que l’appel<strong>la</strong>tion "paqueté" reflète mieux <strong>la</strong> réalité. Deplus, elle correspond à un terme que nous trouvons dans <strong>la</strong> littérature ang<strong>la</strong>ise – "packed-vector".En théorie, nous pouvons choisir une taille arbitraire du type <strong>de</strong> données paquetées, en pratiquenous sommes restreints par le choix <strong>de</strong> l’architecture finale et par ses capacités. La plupart <strong>de</strong>s architecturescontemporaines possè<strong>de</strong>nt <strong>de</strong>s types paquetés <strong>de</strong> 4 à 16 éléments (cf. les technologies multimédia,tab. 1.2, page 21, dans le chapitre Motivation). Sur les architectures spéciales et dédiées nous pouvonstrouver un nombre plus élevé d’éléments dans un type paqueté (<strong>de</strong> 64 à 256), e.g. prototype du processeurdynamiquement reconfigurable Vision chip KKI04 ou le système IMAP-VISION PJ00 .Un exemple du type paqueté iu8vec8 (notation MorphoMedia Bra05 ) regroupant 8 éléments unsignedinteger <strong>de</strong> 8 bit est présenté sur <strong>la</strong> fig. 4.1. Ainsi, <strong>la</strong> <strong>la</strong>rgeur totale du type paqueté iu8vec8 est <strong>de</strong> 64 bitet nous pouvons l’utiliser <strong>pour</strong> un travail avec <strong>de</strong>s architectures possédant <strong>de</strong>s instructions multimédia<strong>pour</strong> ce type, notamment les processeurs compatibles SHmedia Bra02 , processeurs compatibles MMX,les processeurs issus <strong>de</strong> l’architecture IA-64 d’Intel ou les processeurs issus <strong>de</strong> l’architecture AMD64d’AMD.bit no. 63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0iu8 7iu8 6iu8 5iu8 4iu8 3iu8 2iu8 1iu8 0FIG. 4.1 : Structure du type <strong>de</strong> données paquetées iu8vec8 (notation MorphoMedia Bra05 ) qui est composée <strong>de</strong>8 éléments du type iu8 (integer unsigned 8 bit)L’expression <strong>de</strong> ces types en formalisme fonctionnel est simple. Nous allons utiliser le type du HaskellArray, même si dans Haskell nous avions encore une autre possibilité - les listes. Il nous est plusnaturel d’utiliser les arrays, car <strong>de</strong> leur essence, les types paquetés sont les arrays 1D. De plus, l’utilisation<strong>de</strong>s arrays <strong>pour</strong> l’expression <strong>de</strong>s données paquetées nous permet <strong>de</strong> faire une distinction c<strong>la</strong>ire entreles données statiques, exprimées par les arrays, et les données dynamiques, exprimées par les listes etdécrivant les streams lors d’un traitement en flux, comme défini dans <strong>la</strong> section précé<strong>de</strong>nte, cf. 4.3.1.2.Pour ces raisons, nous définissons un nouvel i<strong>de</strong>ntificateur du type, PVec (correspondant au pacekdvector), en nous basant sur le type Array du Haskell.type PVec = ArrayPour pouvoir initialiser une variable du type PVec, nous définissons <strong>la</strong> fonction pvec qui crée un arrayd’une dimension à partir d’une liste <strong>de</strong>s éléments. Le premier paramètre correspond aux tuples <strong>de</strong>s bornesminimales et maximales, respectivement. Le <strong>de</strong>uxième paramètre est <strong>la</strong> liste <strong>de</strong>s tuples in<strong>de</strong>x-élément,respectivement. Cette définition est une spécialisation <strong>de</strong> <strong>la</strong> fonction standard du Haskell array <strong>pour</strong> unedimension.pvec :: ( I , I ) → [ ( I ,α)] → PVec I αpvec i e = array i e4.3.1.4 Images, arrays, vecteursNous allons utiliser un type interne du Haskell, Array, <strong>pour</strong> le stockage <strong>de</strong>s données matricielles ettensorielles. Ce type va nous servir au stockage d’images, textures, <strong>de</strong>s arrays 2D ou <strong>de</strong>s vecteurs. Pour<strong>de</strong>s raisons <strong>de</strong> c<strong>la</strong>rté et <strong>de</strong> simplicité <strong>de</strong> compréhension dans les définitions plus longues, nous allonsdéfinir <strong>pour</strong> ce type un nouvel i<strong>de</strong>ntificateur plus court, Ar.type Ar = Array65

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

Saved successfully!

Ooh no, something went wrong!