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 BRAMBOR4.6. PRIMITIVES DE LA MORPHOLOGIQUE MATHÉMATIQUEextrNgb :: (Ordα) ⇒ SpecNgb → SampFnc α → Ngb → ExtrNgb αextrNgb spec sampl ngbs ar pos = map (sampl$ar) (spec ngbs pos)Dans <strong>la</strong> pratique, nous utiliserons plutôt les fonctions spécialisées <strong>pour</strong> un type <strong>de</strong> grille. La définition<strong>de</strong> <strong>la</strong> fonction d’extraction du voisinage sur <strong>la</strong> grille carrée extrNgbSQR est définie comme :extrNgbSQR :: (Ordα) ⇒ SampFnc α → Ngb → ExtrNgb αextrNgbSQR sampl ngbs ar pos = map (sampl$ar) (specNgbSQR ngbs pos)Parmi les fonctions spécialisées <strong>pour</strong> un travail particulier sur le voisinage, nous montrons <strong>la</strong> définition<strong>de</strong> <strong>la</strong> fonction extrINgbSQR qui ne teste pas si l’in<strong>de</strong>x du pixel à extraire est inclus dans le domaine <strong>de</strong>l’image et qui est utilisée <strong>pour</strong> l’extraction <strong>de</strong>s voisins à l’intérieur du domaine :extrINgbSQR :: (Ordα) ⇒ Ngb → ExtrNgb αextrINgbSQR ngbs ar pos = extrNgbSQR sampI ngbs ar posLa fonction dont le fonctionnement est opposé à cette <strong>de</strong>rnière et qui, <strong>pour</strong> une liste <strong>de</strong> dép<strong>la</strong>cementdonnée, suppose que tous les in<strong>de</strong>x sont au-<strong>de</strong>là du domaine <strong>de</strong> l’image. Elle appelle, <strong>pour</strong> chaque in<strong>de</strong>xconcret, <strong>la</strong> fonction du bord brdf nc :extrBNgbSQR :: (Ordα) ⇒ Bro<strong>de</strong>rFncα → Ngb → ExtrNgb αextrBNgbSQR brdfnc ngbs ar pos = extrNgbSQR (sampB$brdfnc) ngbs ar posSuivant <strong>la</strong> même logique, nous pouvons définir les fonctions d’extraction du voisinage <strong>pour</strong> les grilleshexagonales (décalées par lignes) extrNgbHEXR, extrINgbHEXR et extrBNgbHEXR en remp<strong>la</strong>çantl’appel <strong>de</strong> <strong>la</strong> fonction specNgbSQR <strong>de</strong> concrétisation <strong>de</strong>s in<strong>de</strong>x re<strong>la</strong>tifs aux in<strong>de</strong>x absolus <strong>pour</strong> <strong>la</strong> grillecarrée par l’appel <strong>de</strong> <strong>la</strong> fonction correspondante. Dans le cas d’une grille hexagonale décalée par leslignes il s’agit <strong>de</strong> <strong>la</strong> fonction specNgbHEXR.4.6.4.6 Extraction du voisinage à partir <strong>de</strong>s vecteurs paquetésLe travail effectué lors d’extraction <strong>de</strong>s voisins dans le cas où les éléments d’un array sont les vecteurspaquetés n’est pas le même que celui d’extraction d’un élément voisin sca<strong>la</strong>ire. Les vecteurs <strong>de</strong>dép<strong>la</strong>cement d’un élément structurant définissent, en effet, les dép<strong>la</strong>cement en unités sca<strong>la</strong>ires. Pourtant,à l’échelle <strong>de</strong>s vecteurs paquetés, le groupe d’éléments que nous voulons obtenir comme <strong>de</strong>s voisinsre<strong>la</strong>tifs aux éléments d’un vecteur paqueté peut se trouver localisé partiellement dans un vecteur et partiellementdans le vecteur voisin.C’est <strong>pour</strong>quoi nous définissons <strong>la</strong> fonction extract d’extraction d’un nouveau vecteur paqueté àpartir <strong>de</strong> <strong>de</strong>ux vecteurs paquetés voisins. Cette fonction correspond sur les architecture multimédia SIMDdirectement aux instructions.extract :: (Num α)⇒ I → PVec I α → PVec I α → PVec I αextract of f pv 1 pv 2 = pvec (lo ,hi )( [ ( i , pv 1 ! ( i +of f ) ) | i ← [ lo .. (hi−of f )] ]+ [ ( j , pv 2 ! ( j −hi+of f )) | j ← [ (hi−of f +1) .. hi ] ])where (lo ,hi ) = bounds pv 1Le premier paramètre <strong>de</strong> cette fonction définit le déca<strong>la</strong>ge of f , le <strong>de</strong>uxième et le troisième paramètredésignent <strong>de</strong>ux vecteurs paquetés voisins. Dans le cas spécial où <strong>la</strong> valeur d’offset of f est 0, cette fonctionnous retourne le premier paramètre pv1, dans l’autre cas spécial où <strong>la</strong> valeur d’offset of f est égale à <strong>la</strong>longueur du vecteur paqueté, cette fonction nous retourne le <strong>de</strong>uxième paramètre pv2. Dans le cas <strong>de</strong>valeur of f intermédiaire, cette fonction nous retourne, en se basant sur cette valeur, un vecteur paquetécomposé à partir <strong>de</strong>s éléments <strong>de</strong>s <strong>de</strong>ux paramètres pv1 et pv2 re<strong>la</strong>tivement cette valeur.La fonction extract sera utilisée en interne dans <strong>la</strong> fonction unaLoadSQR <strong>de</strong> <strong>la</strong> lecture non-alignéesur <strong>la</strong> grille carrée qui extrait <strong>de</strong>s voisins d’un array ar <strong>pour</strong> un in<strong>de</strong>x concret (x, y) et un vecteur <strong>de</strong>dép<strong>la</strong>cement concret (dx, dy) ; n est <strong>la</strong> taille d’un vecteur paqueté et <strong>la</strong> fonction brdf nc nous définit <strong>la</strong>manière d’extraction <strong>de</strong>s valeurs au-<strong>de</strong>là <strong>de</strong> l’image. Le paramètre how définit par sa valeur ”Fst” ou”Snd” l’axe <strong>de</strong> vectorisation <strong>de</strong> l’array ar. fonction91

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

Saved successfully!

Ooh no, something went wrong!