Topologie des images digitales

publicité
Topologie des images digitales - Algorithmes
Loı̈c Mazo
ICube -Équipe MIV
11 février 2015
()
1 / 30
Topologies
Voisins ?
()
2 / 30
Topologies
4-voisinage
()
3 / 30
Topologies
8-voisinage
()
4 / 30
Connexité
4-chemin
()
5 / 30
Connexité
8-chemin
()
6 / 30
Connexité
Composantes connexes objet/fond =⇒ paires d’ajacences
()
7 / 30
en 3D . . .
()
8 / 30
en 3D . . .
()
9 / 30
Suivi de contour
4-adjacence
()
8-adjacence
10 / 30
Algorithme
Dans l’algorithme suivant, on suppose une 4-connectivité pour l’objet.
p, p1, p2 : pixel noir courant, pixel devant p, pixel à
droite de p1.
Initialiser Contour avec {(p0, d0)} et droits = 0
Faire
Si p1 est blanc alors tourner à gauche
Sinon
Si p2 est blanc alors avancer
Sinon, avancer, tourner à droite, avancer
Ajouter p à Contour
Jusqu’à ce que p = p0 et droits ≥ 3
Renvoyer Contour
Graphe des composantes connexes
Graphe de la relation d’adjacence entre composantes connexes de l’objet
et du fond
etq ← 0, nb etq ← 1
Balayer l’image en propageant l’étiquette courante
Lorsqu’un contour est trouvé :
si le pixel est étiqueté, changer l’étiquette courante
sinon propager (etq, nb etq) sur le contour,
etq ← nb etq,
inc. nb etq
()
12 / 30
Graphe des composantes connexes
()
13 / 30
Caractéristique d’Euler
Caractéristique d’Euler (χ) d’un objet plan :
χ = nb c. connexes objet − nb trous objet
= (Image) nb de c. connexes objet − nb de c. connexes fond + 1
C’est un invariant topologique
Pour un graphe planaire :
χ=S −A+F
()
14 / 30
Calcul de χ
Hypothèse : les pixels du bord sont blancs.
4-adjacence :
χ4 = (Q1 − Q3 + 2X )/4
8-adjacence :
χ8 = (Q1 − Q3 − 2X )/4
où
Q1 : nb de carrés 2 × 2 avec 1 pixel objet
Q3 : nb de carrés 2 × 2 avec 3 pixels objet
X : nb de carrés 2 × 2 avec 2 pixels objet opposés
()
15 / 30
Algorithme
Hypothèse : 4-adjacence pour l’objet.
def euler(l, col):
n = len(l)
e = 0 # carac. d’Euler
c1 = 0 # demi-carré gauche
for p in range(col+1, n):
c2 = l[p-col] + l[p] #demi-carré droit
c = c1 + c2
if c == 1:
e += 1
elif c == 3:
e -= 1
elif c == 2 and l[p-col-1] == l[p]:
e += 2
c1 = c2
return e/4
Calcul local v. calcul global
Calcul de χ : local (calcul parallèle)
Calcul du nombre de composantes connexes ?
()
17 / 30
Insuffisance de la caractéristique d’Euler
=⇒ retrait séquentiel de points simples (homotopie)
()
18 / 30
Points simples
Amincissement
()
19 / 30
Points simples : nombre de Yokoı̈
8-voisinage :
Y4 = x0 (1 − x1 x2 ) + x2 (1 − x3 x4 ) + x4 (1 − x5 x6 ) + x6 (1 − x7 x8 )
Y8 : intervertir la valeur des pixels (0 ↔ 1)
Un pixel est simple ssi son nombre de Yokoı̈ vaut 1.
()
20 / 30
Algorithmes séquentiels v. parallèles
Critère : topologie + géométrie
Séquentiel : modification
≪
(Ex. : Yokoı̈ = 1 + Au moins 2 voisins)
sur place ≫
=⇒ autre balayage
Parallèle : modification sur une copie
=⇒ traitements alternés
()
21 / 30
Carte de distance
Transformée de distance : distance des points de l’objet au bord de l’objet.
Exemple :
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
1
1
1
1
1
0
0
1
1
1
1
1
0
0
0
1
1
1
1
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
−→
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
1
1
2
1
1
0
0
1
2
3
2
1
0
0
0
1
2
1
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
(distance de Manhattan)
()
22 / 30
Algorithme
Initialiser la carte C avec 0 pour le fond et ∞ pour l’objet
Faire un balayage :
C (p) ← min(C (p), 1 + C (p − 1), 1 + C (p − ℓ))
où ℓ est la largeur de l’image.
Retourner la carte et recommencer.
()
23 / 30
Carte de distance : exemple
()
24 / 30
Amincissements : exemples
()
25 / 30
Recherche
Travaux en cours
Point simples dans les images n-aires
Rotations discretes
()
28 / 30
Merci
de votre attention
Téléchargement