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.

Jaromír BRAMBOR3.4. MODÈLE STREAM DU CALCUL ET LES ARCHITECTURES ASSOCIÉESpeut être divisé en triangles), soit <strong>pour</strong> approximer une forme complexe en formes plus simples (commeune courbe spline peut être approximée par plusieurs lignes droites).Les formes <strong>de</strong> base sont décrites par leur type (point, ligne, etc.) et par un ensemble <strong>de</strong> points <strong>de</strong>l’espace 3D que nous appelons les vertex. Un vertex est une structure complexe et elle peut contenir plusd’informations que seulement les coordonnées dans l’espace ; notamment l’information sur <strong>la</strong> couleur,sur les in<strong>de</strong>x pointant dans les textures où même davantage d’informations spécifiques au calcul effectué.Une telle comman<strong>de</strong> graphique est passée, utilisant un <strong>de</strong>s interfaces API, au processeur graphique.3.4.5.3 Fonctionnement du pipeline graphiqueLe fonctionnement <strong>de</strong> base d’un pipeline graphique programmable est le suivant. Toutes les donnéessont traitées en tant que flux. Tout d’abord, un programme que nous appelons vertex programme estappliqué sur tous les vertex d’entrée. Ce traitement correspond sur <strong>la</strong> fig. 3.18, page 52, au bloc vertexprocessor, aussi appelé par le terme ang<strong>la</strong>is vertex sha<strong>de</strong>r. Selon le paradigme stream <strong>de</strong> traitement<strong>de</strong>s données, le même programme est appliqué sur tous les vertex. Ce programme réagit localementet son exécution sur un vertex est donc indépendante <strong>de</strong> l’exécution sur d’autres vertex. Il dispose <strong>de</strong>sparamètres globaux <strong>pour</strong> <strong>la</strong> lecture mais il ne peut pas les modifier et il ne peut écrire non plus <strong>de</strong> valeurquelconque dans une mémoire commune. En effet, il ne peut que modifier les valeurs <strong>de</strong>s propriétésdu vertex qu’il traite. Il est donc impossible <strong>de</strong> créer <strong>de</strong> nouveaux vertex, d’avoir une variable globalepartagée modifiable par tous les vertex ou d’influencer l’exécution d’autres vertex. En revanche, nouspouvons accé<strong>de</strong>r aux données globales stockées dans <strong>la</strong> mémoire comme textures en utilisant le processusd’échantillonnage <strong>de</strong>s textures.Les vertex traités passent le long du pipeline dans l’unité suivante, l’unité d’assemb<strong>la</strong>ge <strong>de</strong>s primitives.Cette unité se charge <strong>de</strong> l’extraction <strong>de</strong>s primitives graphiques <strong>de</strong> base (décrites par <strong>la</strong> comman<strong>de</strong>graphique) et <strong>de</strong> tous leurs <strong>de</strong>scripteurs à partir du flux <strong>de</strong>s vertex. Il s’agit, en effet, du décodage <strong>de</strong>sformes <strong>de</strong> base à partir <strong>de</strong> <strong>la</strong> comman<strong>de</strong> graphique que nous avons passée au GPU. Cette unité prépareles primitives géométriques <strong>pour</strong> l’étape suivante du pipeline – <strong>la</strong> digitalisation <strong>de</strong> cette forme.La digitalisation est décrite sur <strong>la</strong> fig. 3.18 comme bloc Rastérisation et interpo<strong>la</strong>tion, qui se charge<strong>de</strong> <strong>la</strong> création <strong>de</strong>s fragments. Les fragments sont <strong>la</strong> représentation digitale d’une forme dans un espace3D digital. La façon exacte dont on dérive les fragments à partir <strong>de</strong> cette forme est dépendante <strong>de</strong>sparamètres du modèle <strong>de</strong> projection que nous avons choisi et <strong>de</strong>s dimensions <strong>de</strong> notre framebuffer quenous pouvons imaginer, d’une manière simplifiée, comme une surface digitale <strong>de</strong>stinée au rendu <strong>de</strong> notremodèle 3D.Soulignons <strong>la</strong> différence entre les fragments et les pixels. Les pixels sont les points <strong>de</strong> l’espace digital2D dont <strong>la</strong> valeur est <strong>la</strong> couleur. Les fragments sont <strong>de</strong>s structures beaucoup plus riches dans leur contenu,on qualifie un fragment comme un prototype d’un pixel. La première différence est dans le fait qu’unfragment est décrit par les coordonnées 3D ; simplement dit, un fragment possè<strong>de</strong> d’une information sur<strong>la</strong> profon<strong>de</strong>ur. Ce<strong>la</strong> donne <strong>la</strong> possibilité d’avoir dans le pipeline plusieurs fragments <strong>de</strong> <strong>la</strong> même position2D qui diffèrent dans leur profon<strong>de</strong>ur. Et surtout, un fragment peut contenir davantage d’informationsqu’un pixel. En revanche, un pixel nous sert comme une structure <strong>pour</strong> les données qui sont inscrites à<strong>la</strong> fin du traitement dans le framebuffer, il contient une position 2D fixée et n’a plus d’information sur <strong>la</strong>profon<strong>de</strong>ur. Dans les algorithmes c<strong>la</strong>ssiques <strong>de</strong> synthèse <strong>de</strong>s images, il n’y a qu’un pixel qui est généré<strong>pour</strong> une coordonnée donnée 1 .Les informations que nous p<strong>la</strong>çons dans les fragments sont obtenues à partir <strong>de</strong>s vertex. Puisqu’uneforme géométrique est décrite, dans <strong>la</strong> plupart <strong>de</strong>s cas, par moins <strong>de</strong> vertex qu’il n’y a <strong>de</strong> fragmentsdérivés <strong>de</strong> cette forme, nous sommes obligés <strong>de</strong> distribuer l’information <strong>de</strong>s vertex vers les fragments.On utilise avec succès l’interpo<strong>la</strong>tion <strong>de</strong>s valeurs <strong>de</strong>s paramètres à partir <strong>de</strong> plusieurs vertex (2, 3, voirplus) <strong>pour</strong> cette distribution. Cette approche est <strong>la</strong>rgement utilisée <strong>pour</strong> obtenir <strong>la</strong> position d’un fragment1Avec l’exception d’un traitement <strong>de</strong>s points comme <strong>de</strong>s point-sprites qui peuvent générer plusieurs fragments et ensuiteplusieurs pixels <strong>pour</strong> une seule coordonnée 2D53

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

Saved successfully!

Ooh no, something went wrong!