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> <strong>la</strong> fonction standard du Haskell indices en tant que fonction <strong>de</strong> parcours <strong>de</strong> l’image. En effet, n’importequelle autre fonction <strong>de</strong> parcours <strong>de</strong> l’image <strong>pour</strong>rait être utilisée dans ce cas car nous créons iciles algorithmes non-dépendants du sens du parcours <strong>de</strong> l’image.Voici <strong>la</strong> définition <strong>de</strong> <strong>la</strong> fonction dilSQR :dilSQR :: (Ordα) ⇒ α → Ngb → Ar ( I , I ) α → Ar ( I , I ) αdilSQR brdval ngb ar = ngbAlgo indices (extrNgbSQR ( cBor<strong>de</strong>r brdval ) ngb) ngbDi<strong>la</strong>te arDe <strong>la</strong> même manière nous pouvons définir toutes les autres opérations morphologiques dont le fonctionnementn’est pas dépendant du sens du parcours. Par exemple, <strong>la</strong> di<strong>la</strong>tation morphologique <strong>pour</strong> <strong>la</strong>grille hexagonale et le 6-voisinage, présentée par <strong>la</strong> fonction dilHEXR :dilHEXR :: (Ordα) ⇒ α → Ngb → Ar ( I , I ) α → Ar ( I , I ) αdilHEXR brdval ngb ar = ngbAlgo indices (extrNgbHEXR ( cBor<strong>de</strong>r brdval ) ngb) ngbDi<strong>la</strong>te arNous pouvons voir que ce n’est que <strong>la</strong> fonction d’extraction <strong>de</strong> voisinage (extrNgbHEXR) qui a changédans cet algorithme par rapport à l’algorithme dilSQR travail<strong>la</strong>nt sur <strong>la</strong> grille carrée. Le kernel <strong>de</strong> réductionqui assure l’opération morphologique effectuée sur ce voisinage est resté le même (ngbDi<strong>la</strong>te).5.1.2 Division du problème en traitement <strong>de</strong> l’intérieur et en traitement du bordLa première <strong>de</strong>s implémentations plus é<strong>la</strong>borées <strong>de</strong> travail sur le voisinage consiste à séparer letraitement <strong>de</strong> l’intérieur et le traitement du bord. Il s’agit, en effet, d’i<strong>de</strong>ntifier l’ensemble <strong>de</strong>s in<strong>de</strong>x<strong>de</strong>s pixels dont le voisinage est inclus entièrement dans l’image. Pour ces pixels, nous pouvons utiliserl’extraction directe sans nous préoccuper du travail spécial effectuée aux bords <strong>de</strong> l’image. Les voisins<strong>de</strong>s pixels restants sont ceux qui ont au moins un voisin au-<strong>de</strong>là <strong>de</strong>s bords et l’algorithme d’extraction<strong>de</strong>s voisins, spécifique <strong>pour</strong> le traitement <strong>de</strong>s bords, peut y être appliqué.Quelle est <strong>la</strong> raison qui nous pousse à effectuer cette division ? Démontrons-<strong>la</strong> sur l’exemple <strong>de</strong> <strong>la</strong>fonction sampGen d’échantillonnage général. Sa définition (q.v. page 90) contient un test conditionnel :λ x → if inRange(bounds $ar) x then(sampI ar x)else(sampB brdfnc ar x)Nous y testons si l’in<strong>de</strong>x qui désigne un pixel à extraire est à l’intérieur <strong>de</strong> l’array. Si tel est le cas, nousprocédons à l’échantillonnage <strong>de</strong> l’image <strong>de</strong> l’image sampI. Dans le cas contraire, c’est-à-dire dans lecas où l’in<strong>de</strong>x pointe au-<strong>de</strong>là <strong>de</strong>s bords <strong>de</strong> l’array, nous appelons une fonction d’échantillonnage sampBqui traite les effets <strong>de</strong> bords par <strong>la</strong> fonction brdfnc avec l’in<strong>de</strong>x x comme paramètre et qui nous fournit<strong>la</strong> valeur correspondante. L’idée que nous exploitons en divisant le traitement en <strong>de</strong>ux parties est <strong>la</strong>suivante : le test qui, dans l’approche naïve, était incorporé dans <strong>la</strong> fonction d’extraction du voisinage, estdép<strong>la</strong>cé à l’échelle <strong>de</strong> l’array. Ce que nous faisons c’est <strong>la</strong> division <strong>de</strong> l’array à une zone (<strong>de</strong> l’intérieur)où <strong>la</strong> condition décrite ci-<strong>de</strong>ssus est toujours va<strong>la</strong>ble <strong>pour</strong> tous les pixels du voisinage et à une zonerésiduale (du bord) où cette condition n’est pas remplie <strong>pour</strong> au moins un in<strong>de</strong>x du voisinage.Il est évi<strong>de</strong>nt que <strong>pour</strong> <strong>la</strong> plupart <strong>de</strong>s éléments structurants utilisés couramment en pratique dont <strong>la</strong>taille est <strong>la</strong>rgement plus petite que les dimensions <strong>de</strong> l’image, <strong>la</strong> zone <strong>de</strong> l’intérieur contiendra une trèsgran<strong>de</strong> portion <strong>de</strong>s pixels et il est donc préférable <strong>de</strong> spécialiser le traitement <strong>pour</strong> cette zone. Le gainque nous pouvons réussir à obtenir avec une telle approche est dépendant du fonctionnement <strong>de</strong> notrearchitecture car certaines architectures assurent l’exécution <strong>de</strong> ce type <strong>de</strong> condition efficacement et sansdé<strong>la</strong>i supplémentaire. Mais il est également évi<strong>de</strong>nt que s’il faut tester les dépassements du bord <strong>pour</strong>tous les in<strong>de</strong>x d’un élément structurant et <strong>pour</strong> tous les pixels <strong>de</strong> l’image avec succès par <strong>la</strong> conditionif inRange(bounds $ ar) x thenqui est, <strong>pour</strong> une donnée x <strong>de</strong> <strong>de</strong>ux dimensions, assurée en général par 4 instructions <strong>de</strong> test (plus grand/ plus petit dans <strong>la</strong> première / <strong>de</strong>uxième dimension), il serait plus avantageux <strong>de</strong> pouvoir éviter ce test,au moins, sur une partie <strong>de</strong> l’image. Sachant que <strong>la</strong> majorité <strong>de</strong>s pixels convient à cette condition, toutes102

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

Saved successfully!

Ooh no, something went wrong!