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ÉMATIQUECette fonction est spécialisée <strong>pour</strong> le travail avec le voisinage défini, par convention, sur <strong>la</strong> ligne paire <strong>de</strong><strong>la</strong> grille carrée équivalente à <strong>la</strong> grille hexagonale décalée par lignes (eg. ngbSQR6).4.6.4.2 Traitement <strong>de</strong> l’extérieur du domaine fini <strong>de</strong> l’imageLe traitement <strong>de</strong>s valeurs <strong>de</strong>s voisins ou <strong>de</strong>s valeurs définies par un élément structurant et qui n’appartiennentpas au domaine <strong>de</strong> l’image mais à son extérieur constitue l’activité <strong>la</strong> plus problématique dutraitement par les kernels du calcul. Ce qui nous pose <strong>de</strong>s problèmes ici c’est le fait que nous n’avons pasun élément <strong>de</strong> l’image correspondant aux in<strong>de</strong>x <strong>de</strong> dép<strong>la</strong>cement définissant les voisins en-<strong>de</strong>hors du domainefini <strong>de</strong> l’image. Par conséquent, nous sommes obligés d’utiliser <strong>de</strong>s approches particulières <strong>pour</strong>l’extraction <strong>de</strong>s valeurs à partir <strong>de</strong>s in<strong>de</strong>x qui se trouvent à l’extérieur <strong>de</strong> l’image. Un certain nombre <strong>de</strong>techniques existe et leur utilisation précise est déterminée par l’application pratique. L’approche utiliséele plus souvent est celle <strong>de</strong> <strong>la</strong> valeur du bord constante.Pour pouvoir traiter les valeurs extérieurs du domaine <strong>de</strong> l’image, nous définissons un type Bor<strong>de</strong>rFnc<strong>de</strong> fonctions qui vont se charger <strong>de</strong> nous retourner, <strong>pour</strong> un array donnée et <strong>pour</strong> une position concrète(I, I) n’appartenant pas au domaine <strong>de</strong> l’image, une valeur précise :type Bro<strong>de</strong>rFnc α = ( Ar ( I , I ) α → ( I , I ) → α)La fonction cBor<strong>de</strong>r qui travaille sur les valeurs sca<strong>la</strong>ires α nous retourne toujours <strong>la</strong> constante valindépendamment <strong>de</strong> <strong>la</strong> valeur concrète <strong>de</strong> l’in<strong>de</strong>x pos.cBor<strong>de</strong>r :: (Ordα) ⇒ α → Bro<strong>de</strong>rFnc αcBor<strong>de</strong>r val = ( λ ar pos → val)Pour le traitement SIMD, <strong>la</strong> définition <strong>de</strong> <strong>la</strong> fonction cBor<strong>de</strong>rSIMD percevant les bords comme leséléments paquetés <strong>de</strong> <strong>la</strong> valeur constante est un peu différente mais elle assure <strong>la</strong> fonctionnalité du mêmetypecBor<strong>de</strong>rSIMD :: PVec I α → Bro<strong>de</strong>rFnc(PVec I α)cBor<strong>de</strong>rSIMD val = ( λ ar pos → val)D’autres fonctions <strong>de</strong> gestion particulière <strong>de</strong> l’extérieur <strong>de</strong> l’image peuvent être envisagées est définies<strong>de</strong> <strong>la</strong> même manière. Notons que vu le caractère local <strong>de</strong>s opérations dans <strong>la</strong> <strong>morphologie</strong>, nous parlonsà l’occasion du traitement <strong>de</strong>s in<strong>de</strong>x extérieurs au domaine <strong>de</strong> l’image également du traitement <strong>de</strong>s bordsou <strong>de</strong> <strong>la</strong> gestion <strong>de</strong>s bords <strong>de</strong> l’image.4.6.4.3 ÉchantillonnagePour assurer l’extraction du voisinage à partir <strong>de</strong>s éléments <strong>de</strong> l’image, les accès à <strong>la</strong> mémoire sontnécessaires. Pourtant, si les in<strong>de</strong>x désignés par l’élément structurant ne sont pas du domaine <strong>de</strong> l’image,nous <strong>de</strong>vons faire appel à une quelconque technique <strong>de</strong> gestion <strong>de</strong>s bords, comme on vint <strong>de</strong> le décriredans <strong>la</strong> section précé<strong>de</strong>nte.Il semble convenable <strong>de</strong> formaliser à l’échelle <strong>de</strong>s fonctions du Haskell l’obtention <strong>de</strong>s valeurs correspondantaux in<strong>de</strong>x concrets. Ce processus va intégrer dans un seul type <strong>de</strong> fonctions les fonctionnalitésd’in<strong>de</strong>xation <strong>de</strong>s éléments à l’intérieur <strong>de</strong> l’array et les fonctionnalités <strong>de</strong> traitement <strong>de</strong>s valeur àl’extérieur du domaine <strong>de</strong> ce <strong>de</strong>rnier. Nous allons appeler ces fonctions sous un terme commun échantillonnage.Ces fonction seront du type SampFnc :SampFnc α :: ( Ix β) ⇒ Ar β α → β → αLa fonction d’échantillonnage est une fonction qui nous retourne, <strong>pour</strong> un in<strong>de</strong>x concret du type β,une valeur qui est du type α – du même type que les éléments <strong>de</strong> l’image. Soit elle va incorporer letraitement <strong>de</strong>s valeurs <strong>de</strong> bords déjà dans sa définition, soit, dans le cas où nous savons explicitement quenous n’allons pas in<strong>de</strong>xer les éléments au-<strong>de</strong>là du domaine <strong>de</strong> l’image, elle n’a pas besoin d’assurer letraitement <strong>de</strong>s bords et par conséquent, elle n’est pas obligée d’incorporer une telle fonctionnalité.89

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

Saved successfully!

Ooh no, something went wrong!