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 BRAMBORdécrit par un programme VProg qui est exécuté sur chaque vertex du stream d’entrée. Ce programmepeut obtenir certains paramètres globaux à partir <strong>de</strong> l’environnement <strong>de</strong> travail Env ou il peut obtenir <strong>de</strong>sdonnées à partir <strong>de</strong>s textures (stockées dans l’environement Env).vprocessor :: Env → VProg → [ V ] → [ V ]vprocessor e vp vs = map (vp $ e) vsLe vertex programme lui-même est défini comme une fonction du type VProg qui est connectéeà l’environnement Env et qui effectue une opération sur un vertex V. Le type V du vertex constitueégalement le type <strong>de</strong> sa valeur <strong>de</strong> sortie. Nous ne donnons ici que <strong>la</strong> signature <strong>de</strong> type VProg du vertexprogramme car c’est ce programme qui exprime <strong>la</strong> capacité <strong>de</strong> programmation <strong>de</strong>s GPU et nous allonsle définir spécifiquement <strong>pour</strong> chacun <strong>de</strong> nos algorithmes.type VProg = ( Env → V → V )Comme un exemple trivial d’un vertex programme, nous présentons <strong>la</strong> fonction vpid d’i<strong>de</strong>ntité quine modifie pas le vertex d’entrée et le retourne aussitôt :vpid :: Env → V → Vvpid e v = v4.5.2.3 Rastérisation <strong>de</strong>s primitives géométriquesUn autre bloc fonctionnel dans le pipeline graphique est le rastériseur. Il s’agit <strong>de</strong> l’unité qui créeles fragments à partir <strong>de</strong>s données décrivant une forme géométrique. Nous le définissons formellementcomme fonction du type Rasterizer qui est connectée à l’environnement Env et qui prend comme argumentun tuple composé du flux <strong>de</strong>s valeurs <strong>de</strong> <strong>la</strong> forme géométrique et du flux <strong>de</strong> vertex, ([Shape], [V]).Les fonctions <strong>de</strong> ce type extraient, selon les valeurs concrètes décrivant <strong>la</strong> forme, un nombre défini <strong>de</strong>vertex [V]. La sortie <strong>de</strong> ce bloc est, bien sûr, le flux <strong>de</strong>s fragments [F] dérivés <strong>de</strong> cette forme.type Rasterizer = ( Env → ( [ Shape ] , [ V ] ) → [ F ] )Nous ne donnons à cette p<strong>la</strong>ce que <strong>la</strong> signature <strong>de</strong> type Rasterizer d’un rastériseur. C’est dû au fait que lerastériseur est également une unité configurable. Par conséquent, les fonctions <strong>de</strong> ce type seront définiesdans nos algorithmes et elles vont correspondre à <strong>la</strong> configuration particulière <strong>de</strong> cette unité.4.5.2.4 Traitement <strong>de</strong>s fragmentsL’unité <strong>de</strong> traitement <strong>de</strong>s fragments, appelée processeur <strong>de</strong>s fragments, est définie d’une façon simi<strong>la</strong>ireau processeur <strong>de</strong>s vertex (dans 4.5.2.2, page 81). Le processeur <strong>de</strong>s fragments est mo<strong>de</strong>lé par <strong>la</strong>fonction fprocessor qui exécute un fragment programme FProg sur un flux d’entrée <strong>de</strong>s fragments [F].Ce processeur peut obtenir <strong>de</strong>s données supplémentaires à partir <strong>de</strong> l’environnement <strong>de</strong> travail Env ce quise présente comme <strong>la</strong> capacité d’échantillonner les textures. Le processeur <strong>de</strong> traitement <strong>de</strong>s fragments a<strong>pour</strong> résultat également un flux <strong>de</strong>s fragments [F].fprocessor :: Env → FProg → [ F ] → [ F ]fprocessor e fp fs = map ( fp $ e) fsLe fragment programme est une fonction du type FProg :type FProg = ( Env → F → F )Nous ne présentons que <strong>la</strong> signature <strong>de</strong> type <strong>pour</strong> les fragment programmes. Les fonctions seront définiesspécifiquement <strong>pour</strong> chaque algorithmes en assurant <strong>la</strong> fonctionnalité convenable à notre cas d’utilisation.Le programme trivial d’un fragment programme est le programme d’i<strong>de</strong>ntité fpid qui ne modifierien sur le fragment d’entrée et le retourne inchangé aussitôt.fpid :: Env → F → Ffpid e f = f82

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

Saved successfully!

Ooh no, something went wrong!