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 BRAMBOR<strong>de</strong>s GPU nous permettent <strong>de</strong> connecter plusieurs objets (plusieurs types <strong>de</strong> zones <strong>de</strong> mémoire) à <strong>la</strong> sortiedu pipeline graphique et d’avoir ainsi plusieurs possibilités <strong>de</strong> stockage <strong>de</strong>s résultats.Les objets qui peuvent être connectés à un framebuffer sont appelés Framebuffer objects et nousdéfinissons un type FBO <strong>pour</strong> ce but. Il s’agit d’un array <strong>de</strong> 2D dont les éléments sont du type tfbo.type FBO tf bo = Ar ( I , I ) tf boLe type tfbo est un paramètre dans cette définition et il nous permettra <strong>de</strong> distinguer les instances <strong>de</strong>sobjets du framebuffer qui diffèrent dans les types d’éléments. Parmi d’autres, nous allons utiliser lesFBO aussi <strong>pour</strong> le rendu dans les textures, dont <strong>la</strong> définition est très proche et diffère seulement dans <strong>la</strong>spécialisation du type <strong>pour</strong> les couleurs, cf. 4.5.1.3, page 78.Le Framebuffer, qu’il ne faut pas confondre avec le framebuffer object, doit contenir au moins unobjet FBO correspondant à <strong>la</strong> couleur et où le pipeline graphique <strong>pour</strong>rait écrire les résultats. Ainsi, nousdéfinissons un framebuffer FB comme :type FB = ( Ar I (FBO C ) , [FBO Dpth ] )Le premier élément <strong>de</strong> ce tuple est un array <strong>de</strong>s FBO dont le type est <strong>la</strong> couleur C. Puisque un array doitcontenir au moins un élément, son utilisation ici est convenable. En revanche, le <strong>de</strong>uxième élément estdéfini par une liste qui peut être soit vi<strong>de</strong>, soit contenir exactement un élément FBO dont le type est <strong>la</strong>profon<strong>de</strong>ur Dpth. Cette liste exprime <strong>la</strong> possibilité, mais pas l’obligation, <strong>de</strong> connecter au framebuffer <strong>la</strong>texture <strong>de</strong> profon<strong>de</strong>ur.Un pixel est le résultat du traitement <strong>de</strong>s fragments et il sera inscrit dans les objets du framebufferexprimant <strong>la</strong> couleur : (FBO C). Le type d’un pixel va ainsi contenir au moins une information sur <strong>la</strong>couleur. Il peut aussi contenir plusieurs informations sur <strong>la</strong> couleur si le framebuffer contient égalementplus d’un objet (FBO C). C’est, en effet, le cas du rendu dans plusieurs textures. Un pixel contientégalement une information sur <strong>la</strong> position 2D, exprimée par le type P. En contraste <strong>de</strong>s fragments, il necontient aucune information sur <strong>la</strong> profon<strong>de</strong>ur car il s’agit d’un point coloré dans l’image. Un pixel PXest définit comme :type PX = ( P , Ar I C )4.5.1.8 Type <strong>pour</strong> l’environnement <strong>de</strong> travailLe pipeline graphique correspond à une architecture du calcul. Il est entouré, parmi d’autres, par <strong>la</strong>mémoire qui nous sert à stocker les images. L’environnement <strong>de</strong> travail du pipeline graphique est défini<strong>pour</strong> les besoins <strong>de</strong> notre traitement par le type Env et nous y incluons le framebuffer FB et les texturesTX exprimés par une liste. Cette liste peut contenir plusieurs textures mais peut être vi<strong>de</strong> dans le cas oùnous ne travaillerions pas avec les textures.type Env = (FB, [ TX ] )Pour pouvoir ré-inclure les résultats <strong>de</strong> traitement perçus comme un nouveau framebuffer FB, nousdéfinissons une fonction refreshFB <strong>de</strong> mise à jour du framebuffer dans l’environnement Env :refreshFB :: Env → FB → EnvrefreshFB (_, txs) fb = ( fb , txs)qui insère le framebuffer, passé par l’argument fb, dans l’environnement sortant <strong>de</strong> cette fonction.Nous utiliserons par <strong>la</strong> suite <strong>la</strong> fonction <strong>de</strong> création <strong>de</strong> l’environnement mkEnv, cf. définition exacteen Annexe B, page 202. Et nous utiliserons aussi <strong>de</strong>ux fonctions <strong>de</strong> manipu<strong>la</strong>tion, getTXs et getFB, dontles définitions exactes sont présentées également en Annexe B, page 202.4.5.1.9 Les comman<strong>de</strong>s graphiquesLes comman<strong>de</strong>s passés au GPU, exprimées par le type Commands, ont <strong>la</strong> forme <strong>de</strong>s primitives graphiques,exprimés par le type Shape qui spécifie le modèle <strong>de</strong> <strong>la</strong> forme. Ce modèle est complété par les80

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

Saved successfully!

Ooh no, something went wrong!