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 BRAMBORtype PVec, cf. 4.3.1.3, page 64. Même si l’on pouvait choisir le type plus général d’un array Ar et lespécialiser <strong>pour</strong> une dimension, nous utilisons ici le type <strong>de</strong> données paquetées PVec car c’est ainsi que<strong>la</strong> plupart <strong>de</strong>s GPU perçoivent les vecteurs <strong>de</strong> couleurs et peuvent les traiter à l’ai<strong>de</strong> <strong>de</strong>s instructionsSIMD à l’intérieur <strong>de</strong>s registres. Ainsi nous définissons le type C comme :type C = PVec I CElmntPour pouvoir in<strong>de</strong>xer les couleurs à l’intérieur d’un vecteur <strong>de</strong> couleur C, nous définissons le type CI.Il représente l’in<strong>de</strong>x <strong>de</strong> couleur et est basé sur le type d’in<strong>de</strong>xation <strong>de</strong> base I, cf. 4.3.1.1 page 64 :type CI = INous utiliserons également <strong>de</strong>ux fonctions <strong>de</strong> manipu<strong>la</strong>tion, c3e et c4e, qui créent un vecteur à partir<strong>de</strong>s éléments et dont les définitions exactes sont présentées en Annexe B, page 201.4.5.1.2 Types <strong>pour</strong> les coordonnéesNous définissons les types <strong>pour</strong> <strong>la</strong> manipu<strong>la</strong>tion avec les coordonnées. Le type Pos est le type <strong>de</strong>base <strong>pour</strong> exprimer <strong>la</strong> position et il s’appuiera sur le type d’in<strong>de</strong>xation <strong>de</strong> base I, cf. 4.3.1.1 page 64 :type Pos = ILe type P est un type composé et il sera utilisé <strong>pour</strong> désigner un point dans l’espace d’une ouplusieurs dimensions. Nous le définissons en utilisant le type <strong>de</strong> vecteur paqueté PVec, cf. 4.3.1.3, page64, car nous supposons que <strong>la</strong> plupart <strong>de</strong>s GPU utilisent les types et le traitement SIMD <strong>de</strong>s coordonnées.type P = PVec I PosNous définissons également <strong>de</strong>ux fonctions <strong>de</strong> manipu<strong>la</strong>tion, p2D et p3D, qui créent à partir d’untuple ou triple <strong>de</strong> coordonnées un vecteur <strong>de</strong>s coordonnées 2D ou 3D respectivement et dont les définitionsexactes sont présentées en Annexe B, page 201.Pour exprimer <strong>la</strong> profon<strong>de</strong>ur dans le traitement <strong>de</strong>s fragments, nous définissons le type Dpth (uneabréviation du terme ang<strong>la</strong>is Depth). Puisqu’il s’agit d’un type d’in<strong>de</strong>xage, nous nous basons sur le typeI, cf. 4.3.1.1, page 64 :type Dpth = I4.5.1.3 Types <strong>pour</strong> les texturesLes textures sont les objets qui stockent sur les cartes graphiques les images <strong>de</strong> travail. Nous définissonstout d’abord le type TXB qui exprime <strong>la</strong> valeur <strong>de</strong> bord d’une texture et qui est compatible avec letype vecteur <strong>de</strong> couleur C :type TXB = CLa texture est définie par le type TX en tant que tuple où le premier élément est un array qui contientles données <strong>de</strong> couleur. Il est utilisé <strong>pour</strong> stocker les images 2D. Le <strong>de</strong>uxième élément est une liste quipeut être soit vi<strong>de</strong>, dans le cas où nous ne travaillons pas avec les bords, soit contenir l’information sur<strong>la</strong> couleur <strong>de</strong> bord exprimé par le type TXB :type TX = ( Ar ( I , I ) C , [TXB] )Nous utiliserons également trois fonctions <strong>de</strong> manipu<strong>la</strong>tion. La fonction mkTX qui crée une texture àpartir <strong>de</strong> ses composantes, les fonctions getArFromTX et getTXBFromTX nous ai<strong>de</strong>nt à obtenir les composantesà partir d’une texture. Leurs définitions exactes sont présentées en Annexe B, page 201.Pour pouvoir in<strong>de</strong>xer un élément dans une texture, nous allons utiliser les échantillonneurs (samplers)qui travaillent avec les positions dans <strong>la</strong> texture <strong>pour</strong> ensuite en extraire une valeur. Le type TXP vaexprimer <strong>la</strong> position dans <strong>la</strong> texture 2D et est défini comme :type TXP = ( I , I )78

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

Saved successfully!

Ooh no, something went wrong!