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 BRAMBORpv11 2 3 4 5 6 7 8pv21 2 3 4 5 6 7 8off56 7 8 1 2 3 4Vecteur paqueté résultantFIG. 4.14 : Illustration du fonctionnement <strong>de</strong> <strong>la</strong> fonction extract <strong>pour</strong> les vecteurs paquetés <strong>de</strong> 8 éléments et <strong>la</strong>valeur d’of f égale à 4unaLoadSQR :: (Num α)⇒ [Char] → I → SampFnc(PVec I α)→ Ar ( I , I ) (PVec I α) → ( I , I ) → ( I , I ) → PVec I αunaLoadSQR how n sampl ar (x ,y) (dx,dy)| how == "Fst" = extract (mod dx n)(sampl ar (x+(div dx n),y+dy))(sampl ar (1+x+(div dx n),y+dy))| how == "Snd" = extract (mod dy n)(sampl ar (x+dx,y+(div dy n)) )(sampl ar (x+dx,1+y+(div dy n)) )Le processus décrivant <strong>la</strong> lecture non-alignée sur les grilles hexagonales peut être construit suivant <strong>la</strong>même logique et en respectant les particu<strong>la</strong>rités du travail avec les lignes/colonnes décalées.Le principe d’extraction <strong>de</strong>s voisins lors du travail avec <strong>de</strong>s vecteurs paquetés est illustré sur <strong>la</strong>fig. 4.15 <strong>pour</strong> un exemple concret du voisinage comptant 4 voisins sur <strong>la</strong> grille carrée dont les vecteurs<strong>de</strong> dép<strong>la</strong>cement sont définis par ngbSQR4.Regardons maintenant comment nous mettons tous ces outils <strong>pour</strong> le travail sur les vecteurs paquetésensemble. Ayant défini d’une façon générale le type <strong>de</strong> fonctions d’échantillonnage, <strong>la</strong> fonctionextrNgbSQRSIMD définit l’extraction <strong>de</strong>s voisins <strong>de</strong>s vecteurs paquetés et a le caractère d’un skeletonalgorithmique car nous ne donnons pas une prescription exacte <strong>pour</strong> l’accès aux éléments. Pourtant, l’accèsaux éléments est bien spécifié par le type SampFnc et c’est <strong>pour</strong>quoi nous pouvons l’utiliser dans <strong>la</strong>fonction <strong>de</strong> <strong>la</strong> lecture non-alignée unaLoadSQR sans restreindre à <strong>la</strong> généralisation. La manière exacte<strong>de</strong> l’échantillonnage n’est donnée qu’après <strong>la</strong> spécification <strong>de</strong> <strong>la</strong> fonction d’échantillonnage sampl parune fonction concrète.extrNgbSQRSIMD :: (Ordα) ⇒ [Char] → I → SampFnc(PVec I α) → Ngb→ ExtrNgb (PVec I α)extrNgbSQRSIMD how n sampl ngbs ar pos = map (unaLoadSQR how n sampl ar pos) ngbs4.6.5 Kernels <strong>de</strong> <strong>la</strong> <strong>morphologie</strong> <strong>mathématique</strong> travail<strong>la</strong>nt sur le voisinage localUne fois les valeurs du voisinage local extraites (ou plus généralement les valeurs <strong>de</strong>s élémentsdésignés par <strong>la</strong> liste <strong>de</strong>s vecteurs <strong>de</strong> dép<strong>la</strong>cement), nous appliquons une fonction locale sur ces valeurs.La fonction est re<strong>la</strong>tive à l’opérateur morphologique que nous construisons et sera du type NgbOp :type NgbOp α = ( [α] → α)Elle peut être perçue comme un kernel <strong>de</strong> réduction qui à partir d’une liste <strong>de</strong>s valeurs crée une seulevaleur. Regardons alors les exemples <strong>de</strong>s définitions <strong>de</strong>s fonctions.Le kernel <strong>de</strong> <strong>la</strong> di<strong>la</strong>tation morphologique ngbDi<strong>la</strong>te utilise en interne <strong>la</strong> fonction foldl1 <strong>pour</strong> implémenter<strong>la</strong> réduction par <strong>la</strong> fonciton max du stream xs <strong>de</strong>s valeurs du voisinage local <strong>pour</strong> évaluer lesupremum <strong>de</strong>s valeurs discrètes.ngbDi<strong>la</strong>te :: (Ordα) ⇒ NgbOp αngbDi<strong>la</strong>te xs = foldl1 max xsDe <strong>la</strong> même manière, nous définissons le kernel <strong>de</strong> l’érosion morphologique ngbEro<strong>de</strong> qui utilise<strong>la</strong> fonction min comme <strong>la</strong> fonction par <strong>la</strong>quelle nous réduisons le stream <strong>de</strong>s valeurs du voisinage local<strong>pour</strong> évaluer l’infimum <strong>de</strong>s valeurs discrètes.92

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

Saved successfully!

Ooh no, something went wrong!