Amincissement homotopique
				
				
					
						Amincissement homotopique : algorithme pour amincir un objet discret sans changer sa topologie ⇒ on ne peut que supprimer les points simples.
					
					
						On l'utilisera pour calculer les squelettes
					
				
				
					
						Remarque : on ne peut pas supprimer tous les points simples en même temps (en parallèle).
					
					
					
						Il faut supprimer les pixels itérativement
					
				
				
					Amincissement homotopique séquentiel
					
						- 
							Parcourir les pixels dans le scan order et supprimer les points simples.
						
 
						- 
							Répéter jusqu'à la stabilité
						
 
					
				
				
				
					Propriétés :
					
						- 
							Le squelette a la même topologie
						
 
						- 
							Squelette non centré
						
 
						- 
							Détails géométriques perdus. Le squelette ne représente que la topologie de l'objet.
						
 
					
					
						On pourrait parcourir les pixels dans un ordre aléatoire
					
				
				
				
					Propriétés :
					
						- Topologie conservée
 
						- Légèrement plus centré
 
					
					
						Il faut guider l'amincissement afin d'obtenir un squelette centré
					
				
				
					Amincissement homotopique par contours
					
						- 
							Sélectionner les pixels du contour de l'objet (4-adjacents du complémentaire)
						
 
						- 
							Supprimer itérativement tous les pixels dans ce sous-ensemble. Faire plusieurs passes jusqu'à la stabilité
						
 
						- 
							Passer au contours suivant
						
 
					
				
				
				
					Propriétés :
					
						- 
							Squelette centré
						
 
						- 
							Plusieurs passes avant stabilité
						
 
					
					
						Pourquoi ne pas utiliser la transformée en distance ?
					
				
				
					Amincissement homotopique par transformée en distance
					
						- 
							Mettre dans une file de priorité les pixels de l'objet avec leur transformée en distance
						
 
						- 
							Prendre le premier pixel. S'il est simple, le supprimer et ajouter ses 8-voisins dans la file (s'ils ne sont pas déjà là)
						
 
						- 
							Répéter jusqu'à vider la file.
						
 
					
				
				
				
					Propriétés :
					
						- 
							Squelette centré
						
 
						- 
							Une seule passe avant stabilité
						
 
					
					
						Peut-on faire pareil avec du calcul parallèle ?
					
				
				
					Amincissement homotopique par sous-grille
					
						- 
							Partition en 4 sous-grilles : 
							
								- \( (0,0) + (2 \mathbb{Z})^2 \)
 
								- \( (1,0) + (2 \mathbb{Z})^2 \)
 
								- \( (0,1) + (2 \mathbb{Z})^2 \)
 
								- \( (1,1) + (2 \mathbb{Z})^2 \)
 
							
						 
						- 
							Supprimer (en parallèle) les points simples dans la première sous-grille
						
 
						- 
							Passer à la sous-grille suivante
						
 
					
				
				
				
					
						Propriétés :
					
					
						- 
							On peut supprimer les pixels en parallèle car ils sont assez éloignés entre eux
						
 
						- 
							Squelette centré
						
 
						- 
							Plusieurs passes avant stabilité
						
 
					
				
				
					Amincissement homotopique par cliques critiques
					
						- 
							k-clique ensemble de pixels maximal dont l'intersection est un k-cube
						
 
						- 
							Une k-clique est critique si sa suppression change la topologie de l'objet
						
 
						- 
							Théorème : si \( Y \) contient au moins un pixel de chaque k-clique critique de \( X \) alors ils ont la même topologie
						
 
					
				
				
				
					
						Algorithme d'amincissement homotopique :
					
					
						- 
							Marquer les pixels des 2-cliques critiques (en parallèle)
						
 
						- 
							Marquer un pixel pour chaque 1-clique critique qui n'est pas couverte (en parallèle)
						
 
						- 
							Marquer un pixel pour chaque 0-clique critique qui n'est pas couverte (en parallèle)
						
 
						- 
							Supprimer les pixels non marqués
						
 
					
				
				
				
					Bref
					
						- Amincissement homotopique : supprimer les points simples
 
						- Squelette topologique, géométrie ignorée
 
						- Plusieurs méthodes pour diriger la suppression
 
					
					
						Il faudrait maintenant conserver la géométrie de l'objet
					
				
			
			
			
				
				
				
					
						Il ne faut pas supprimer les branches du squelette (même si elles ont des points simples).
					
					
						Première idée : on ne supprime pas les pixels dans l'axe médian
					
				
				
				
				
				
				
					
						Propriétés :
					
					
						- 
							L'amincissement homotopique fait conserver la topologie
						
 
						- 
							En fixant les pixels de l'axe médian, on conserve la géométrie
						
 
						- 
							Mais on a les mêmes défauts : squelette pas fin, pas robuste
						
 
					
					
						Il existe d'autres solutions : filtrer l'axe médian, méthodes topologiques
					
				
				
				
					Filtrer l'axe médian
					
						Sur chaque pixel de l'axe médian on définit :
					
					
						- 
							\( DT(x) \) : distance vers le complémentaire
						
 
						- 
							\( \Pi(x) \) : points de contact de la boule maximale avec le contour
						
 
						- 
							\( \theta(x) \) : plus grand angle entre les points de contact
						
 
						- 
							\( \delta(x) \) : plus grande distance entre les points de contact
						
 
					
					
						On peut filtrer l'axe médian suivant ces fonctions
					
				
				
					Filtrage par rayon
					
						- 
							Calculer la transformée en distance sur l'axe médian
						
 
						- 
							Supprimer les pixels avec \( DT(x) \) en dessous d'un seuil
						
 
					
				
				
					Filtrage par angle
					
						- 
							Calculer \( \Pi(x) \) = plus proches points du complémentaire : extension du calcul de la transformée en distance
						
 
						- 
							\( \Pi^e(x) = \cup \Pi(y) \) pour tout \( y \) 4-voisin de \( x \) tel que \( DT(y) \leq DT(x) \)
						
 
						- 
							Calculer \( \theta(x) \) : essayer toutes les paires de points dans \( \Pi^e(x) \)
						
 
						- 
							Supprimer les pixels avec \( \theta(x) \) en dessous d'un seuil
						
 
					
				
				
					Exercice
					
						Calculer \( \theta \) pour la distance \( d_4 \)
					
					
				
				
					Filtrage par distance
					
						- 
							Calculer \( \Pi^e(x) \)
						
 
						- 
							Calculer \( \delta(x) \) : essayer toutes les paires de points dans \( \Pi^e(x) \)
						
 
						- 
							Supprimer les pixels avec \( \delta(x) \) en dessous d'un seuil
						
 
					
				
				
					Conserver les extrémités
					
						- 
							Oublions l'axe médian. On supprime les points simples sauf s'ils sont une extrémité
						
 
						- 
							On utilise les mêmes masques que l'algorithme d'élagage
						
 
						- 
							On fixe les extrémités avant chaque passe d'amincissement homotopique
						
 
					
				
				
				
				
				
					Conserver les isthmes
					
						- 
							Isthme pixel dont son voisinage a plusieurs composantes connexes ⇒ pixel à l'intérieur du squelette
						
 
						- 
							Caractérisation : \( x \in X\) est un isthme ssi \( x \) n'est pas simple et \( x \notin A \odot B \) 
						 
					
					
				
				
				
				
				
					
						Comme pour l'axe médian, ces méthodes se comportent mal quand l'objet est bruité
					
				
				
				
					Filtrage des isthmes par persistance
					
						Algorithme pour calculer des isthmes avec une fonction \( \pi \) pour le seuillage
					
					
						- \( b(x) \gets \infty \) pour tout pixel ; \( g \gets 0 \)
 
						- Pour tout isthme, \( b(x) = \min(b(x), g) \)
 
						- Faire une passe d'amincissement homotopique. Pour chaque pixel supprimé, \( \pi(x) = g - b(x) \)
 
						- Passer à la génération suivante : \( g \gets g+1\)
 
					
					
						\( \pi(x) \) = persistance d'un isthme : grand pour les pixels qui sont des isthmes longtemps avant d'être supprimés
					
				
				
				
					Bref
					
						- 
							Axe médian : mauvaise topologie, bruité
						
 
						- 
							Axe médian + amincissement homotopique : topologie corrigée, toujours bruité
						
 
						- 
							Il faut des méthodes pour simplifier l'axe médian