# TIFO: Introduction a la morphologie mathematiques, partie 2
# Rappels
- erosion et dilatation
- z erosions de taille y = une erosion de taille $z\times y$
- z ouverture de taille y $\neq$ une ouverture de taille $z\times y$

## Niveau de gris
On peut voir l'erosion et la dilatation comme une etude des niveaux de gris presents dans une fenetre glissante representee par l'element structurant

On regarde le ixel de l'origine de l'element structurant. On attribue le min ou max pour les pixels correspondants a l'element structurant de leurs niveaux de gris

## Filtres alternes sequentiels
:::info
Une repetetition des compositions (fermeture et ouverture) pour debruiter progressivemenent en perdant le moins d'infos possible
:::


- alternes: on alterne les filtres
- sequentiel: on augmente la taille de l'element structurant au fur et a mesure
## *Top hat*



## Exemple pas du tout scientifique
> J'ai pris Harry et je l'ai ouvert
Harry en gris - Harry en gris ouvert =

> Dindon is that you ??
La dinde a un niveau de gris d'ecart avec l'image originale
## Bilan
- Le nom "morphologie mathematiques" a ete choisi dans un bar
- Morpho = considerer les images commes des paysages ~~Minecraft~~
- Non-lineaire: insensible au contraste
- Erosion et dilatation sont amis pour la vie
- On peut selectionner des objets grace a leur forme/taille (geometrie)
- La morpho est tres utile pour le filtrage d'image
- LES DINDES ONT PRIS LE CONTROLE DU MONDE
# De nouveaux outils
## Retournons sur Harry et son patronus

On augmente la taille de l'element structurant = tout est plus visible (image incoming)
Simple dilatation

## Gradients morphologiques
Dinde binaire:

:::warning
La dilatation va *"augmenter les bords"*
:::
:::danger
Soustraire les 2 images, c'est le **gradient externe**
:::
Avec une erosion:

:::warning
L'erosion va *"grignoter les bords"*
:::
:::danger
C'est le **gradient interne**
:::
En niveau de gris:

### Bilan du gradient


:::warning
Ces gradients se ressemblent beaucoup!
:::
Il faut choisir le gradient au cas par cas.
## La squeletisation
:::info
On va chercher le **squelette** de notre objet.
:::
L'idee c'est de prendre la position des centres des boules max inclues dans l'objet etudie
- On fait grossir des boules au fur et a mesure (ray marching style)

:::warning
A partir du moment ou l'objet touche le bord, ca fait n'importe quoi
:::
## Carte des distance
:::info
Attribuer a chaque pixel de l'ojet concerne sa distance au bord
:::

## Outil de segmentation: le Watershed
> Ou ligne de partage des eaux


:::info
On *"inonde"* les vallees (minima locaux) au fur et a mesure que l'on "monte" en niveau de gris.
:::
- Quand 2 vallees se recontrent, cela cree une ligne qui est la limitation entre 2 objets.
- En fonction de l'implem, il faut des marqueurs ou non
:::warning
Toujours lire la doc de la fonction de Watershed qu'on utilise
:::
:::warning
S'il n'y a pas de marqueurs et que l'image a beaucoup de minima locaux, on a une **sur-segmentation**
:::
## Les minima/maxima locaux
:::info
**Extrema local**: point ou groupe de point dont la valeur est extreme dans un voisinage donne
:::

### Les maxima locaux
On peut definir des profondeurs de maxima

:::info
On peut selectionner les maxima qui se "distinguent" vraiment du reste
:::
- On calcule sa profondeur pour chaque maxima
- Niveaux de gris necessaire pour qu'il n'y a plus de maxima
- On vide l'eau qui a inonde partout sous la courbe
- On regarde quand les regions fusionnent
:::success
C'est *l'inverse* du Watershed
:::
## Reconstruction geodesique
:::info
Recuperer uniquement certains objets a l'aide de marqueurs
:::

Implem: dilatations successives jusqu'a **idempotence**
## Bouchage de trous

Rectangle rouge = marqueur du fond
## Elimination d'objets touchant les bords
