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 BRAMBOR5.4. ALGORITHMES POUR LES GPUpeuvent trouver leur emploi sur les architectures <strong>de</strong>s processeurs graphiques dédiés (e.g. à basse consommation)qui n’offrent que les fonctionnalités restreintes par rapport aux processeurs graphiques grandpublic.Le principe <strong>de</strong> cette approche suit <strong>la</strong> métho<strong>de</strong> <strong>de</strong> travail <strong>de</strong>s opérations <strong>de</strong> Minkowski, connuescomme les opérations <strong>de</strong> base dans <strong>la</strong> théorie <strong>de</strong> <strong>la</strong> <strong>morphologie</strong> <strong>mathématique</strong>. Lors du calcul <strong>de</strong> cesopérations, nous dép<strong>la</strong>çons l’image entière selon les vecteurs définissant les éléments structurants et nousfusionnons les valeurs p<strong>la</strong>cées sur <strong>la</strong> même position avec une opération logique (et/ou) dans le cas <strong>de</strong>traitement binaire ou avec une opération arithmétique (min/max) dans le cas <strong>de</strong> traitement en niveaux <strong>de</strong>gris.Dans l’implémentation sur les GPU, l’image d’entrée est exprimée en tant que texture. Lors du calcul,nous travaillons avec les comman<strong>de</strong>s graphiques en forme <strong>de</strong> rectangles qui ont les dimensions <strong>de</strong>l’image. Avant d’envoyer <strong>la</strong> comman<strong>de</strong> graphique dans le GPU, <strong>la</strong> position <strong>de</strong>s vertex est modifiée selonles vecteurs <strong>de</strong> dép<strong>la</strong>cement <strong>de</strong> l’élément structurant. Ainsi, nous obtenons une séquence <strong>de</strong>s comman<strong>de</strong>scontenant les rectangles avec les positions décalées dans l’espace mais qui contiennent les mêmes coordonnées<strong>pour</strong> l’in<strong>de</strong>xation <strong>de</strong> <strong>la</strong> texture. De cette manière, nous définissons les emp<strong>la</strong>cements distinctsdans le framebuffer sur lesquells nous allons effectuer le rendu <strong>de</strong>s pixels à partir <strong>de</strong> <strong>la</strong> texture. La figure5.14 illustre cette situation.ÉlémentstructurantframebufferFIG. 5.14 : Utilisation <strong>de</strong>s opérations <strong>de</strong> Minkowski sur les GPU <strong>pour</strong> le calcul morphologique. Les rectanglesà rendre sont décalés selon les vecteurs <strong>de</strong> l’élément structurantDans ce cas précis, nous n’employons pas un programme particulier <strong>pour</strong> le traitement <strong>de</strong>s vertexet <strong>de</strong>s fragments et nous programmons le pipeline <strong>de</strong> telle manière qu’il n’effectue qu’une opérationd’échantillonnage <strong>pour</strong> chaque fragment créé. L’opération morphologique choisie (di<strong>la</strong>tation ou érosion)est effectuée par les opérations du blending (max <strong>pour</strong> <strong>la</strong> di<strong>la</strong>tation, min <strong>pour</strong> l’érosion) dans <strong>la</strong> phase<strong>de</strong> post-traitement <strong>de</strong>s fragments lors <strong>de</strong> leur fusion avec les valeurs déjà présentes dans le framebuffer.Donc, le kernel <strong>de</strong> réduction qui réduit le stream <strong>de</strong> valeurs <strong>de</strong> voisinage à une seule valeur résultanteintervient dans le bloc <strong>de</strong>s raster-opérations avec le framebuffer présenté dans notre modèle formel parle raster processeur (rprocessor).Généralement, le framebuffer doit être préparé à ce traitement et doit être rempli par une valeurconstante qui a un comportement neutre vis-à-vis <strong>de</strong> notre opération morphologique (valeur minimale dutype <strong>de</strong> stockage <strong>pour</strong> <strong>la</strong> di<strong>la</strong>tation, valeur maximale du type <strong>de</strong> stockage <strong>pour</strong> l’érosion) dans <strong>la</strong> phase<strong>de</strong> l’initialisation <strong>de</strong> l’algorithme. Dans le cas où notre élément structurant contient également le vecteur(0,0) désignant le pixel central, nous pouvons pré-remplir le framebuffer par l’image même en copiantles données <strong>de</strong> <strong>la</strong> texture (qui sont celles <strong>de</strong> l’image) dans le framebuffer 1 . Dans ce cas, <strong>la</strong> liste <strong>de</strong>scomman<strong>de</strong>s graphiques contiendra un rectangle <strong>de</strong> moins, correspondant au dép<strong>la</strong>cement par le vecteur(0,0), et nous allons, en effet, travailler avec <strong>la</strong> liste <strong>de</strong>s vecteurs désignant les voisins plutôt que avecl’élément structurant entier (qui contient le vecteur désignant le pixel central).Les résultats sont obtenus dans le framebuffer après que le rendu du <strong>de</strong>rnier rectangle est effectué.Ils peuvent être récupérés <strong>pour</strong> le calcul suivant dans le GPP via le transfert <strong>de</strong>s données à partir du1Notons qu’il n’est pas possible d’utiliser une zone <strong>de</strong> <strong>la</strong> mémoire du GPU <strong>pour</strong> <strong>la</strong> lecture et l’écriture en même temps.L’opération <strong>de</strong> copie est alors nécessaire dans ce cas.119

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

Saved successfully!

Ooh no, something went wrong!