Qu’apprend-on dans ce chapitre Qu’est-ce que la segmentation d’une image ; Des exemples de segmentation ‘simple’ : Par étiquettage en composantes connexes ; Par croissance de régions ; Représentation à base de graphe et fusion de régions dans un graphe ; Qu’est-ce que des superpixels.
Segmentation : principes Objectif : décomposer l’image X en un ensemble de sous-parties connexes et homogènes formant une partition de l’image Notations : NR : nbre de régions, Ri région n°i, Segmentation vérifie : i[1,NR], Ri est connexe Image de ‘super’ pixels Généralisation de l’étiquettage en compo. connexes aux images à niv. de gris Suppose 1 connexité Rappel : application du théorème de Jordan sur la trame carrée : la 4 et la 8 connexité sont duales (région n-connexe courbe (12-n) connexe)
Segmentation : principes Prédicats de base : La région Ri est homogène i[1,NR], H(Ri) vrai La région Ri est distincte de ses voisines segmentation maximale (i,j)[1,NR]2, H(RiRj) faux Recherche de zones possédant des attributs similaires Ex : segmentation en 17 régions 4-connexes non maximale en 8-connexité Segmentations maximales : 4-connexité → 17 régions, 8-connexité → 11 régions, 12-connexité → 4 régions
Cas où on a déjà le découpage en classes homogènes Classification ≡ partition en c classes homogènes (du point de vue de la loi supposée) ayant chacune 1 ou plus composantes connexes Etiquetage en composantes connexes des c classes → segmentation algorithme : Initialisations : k=0, sS, zs=0 Pour chaque classe wi Créer l’im. bin. Bi de la classe (bs=1 xs=wi) Pour tout pixel sS : Si bs=1 et zs=0, alors : Calcul de la comp. connexe CC{s} de s dans Bi (cf. algo. d’étiquetage en comp. connexes) k=k+1 tCC{s}, zt=k NR=k sortie
Étiquetage en composantes connexes Algo. 1 : Calcul de la composante connexe CC{s} par reconstruction géodésique (voir cours MM binaire) Algo. 2 : Etiquetage (cas 4-connexité) en 2 balayages initialiser l’image des étiquettes Z à 0 balayer l’image, soit s le pixel courant soit l1 et l2 les 2 étiquettes des voisins de s (masque causal 2-connexité) si (l1=l2) ou (li 0 et l3-i=0, i{1,2}), affecter li à s dans Z si (l1l2), affecter min(l1,l2) à s dans Z, et mettre à jour la table d’équivalence entre les étiquettes : l1l2 si (l1=l2=0), créer une nouvelle étiquette l et affecter l à s dans Z Re-balayer l’image pour uniformiser les étiquettes selon la table d’équivalence Ex. (en 8 connexité): 79
Cas où on construit les régions Pb principal : comment construire les régions dans l’espace image et dans l’espace des caractéristiques 1ère approche : croissance de régions À partir de pixels-germes, on fait croître les régions en ‘agglomérant’ les pixels pas de contrainte spatiale sur les régions hormis connexité peu robuste (dépendant bruit, initialisation, critère homogénéité…) 2ème approche : fusion de régions À partir de d’un ensemble de régions, on fait croître les régions en leur ‘agglomérant’ des régions connexes un peu plus robuste que croissance de région contrôle du nombre de régions final
Critères d’homogénéité d’1 région Exemples de critères globaux à la région Contraste : H(Ri) vrai Variance : H(Ri) vrai Distance interquartiles : H(Ri) vrai Entropie : H(Ri) vrai Exemples de critères locaux à la région Distance avec pixels voisins : H(Ri{s}) vrai
Croissance de région (region growing) Pb du choix des germes : Dans le cas général, la croissance de région s’arrête avant d’avoir obtenu une segmentation : Si on part de la segmentation triviale (chaque pixel est un germe) résultat dépendant de l’ordre de fusion des régions Algorithme de sélection de germes sur histogramme k=0 tant que pixels non labelisés Calcul de l’histogramme Hres des pixels non labelisés val = mode de Hres, s_germe / xs_germe= val k=k+1 Croissance de région à partir de s_germe : zs_germe=k Tant que t connexe à Rk et Rk{t} vérifie prédicat d’homogénéïté, Rk ← Rk{t} tRk, zt=k NR=k
Sélection de germes sur histogramme .... 30 régions significatives sur 213!
Croissance de régions Exemple : Sélection de germes sur histogramme ≠ Cmax = 100 → NR = 6 Cmax = 80 → NR = 6 Cmax = 70 → NR = 17 Sélection de germes sur histogramme ≠ ≠ ≠ Cmax = 100 → NR = 6 Cmax = 80 → NR = 5 Cmax = 70 → NR = 12 Sélection de germes aléatoire
Pyramide du Quadtree Construction du quadtree par parcours de Peano : 1 2 3 00 01 02 03 10 11 12 13 000 001 002 003 010 011 012 013 100 101 102 103 110 111 112 113 020 021 022 023 030 031 032 033 120 121 122 123 130 131 132 133 20 21 22 23 30 31 32 33 200 201 202 203 210 211 212 213 300 301 302 303 310 311 312 313 220 221 222 223 230 231 232 233 320 321 322 323 330 331 332 333 Ex. : (2,3) 13 = 341+140 Clé de Peano : Pixel de coordonnées-image (i,j) (6,2) 44 = 242+341+040 i7 i6 i5 i4 i3 i2 i1 i0 j7 j6 j5 j4 j3 j2 j1 j0 + i7 j7 i6 j6 i5 j5 i4 j4 i3 j3 i2 j2 i1 j1 i0 j0
Partage / fusion de régions region splitting : soit Ri / H(Ri) faux, alors diviser Ri region merging : soit Ri , Rj connexes / H(RiRj) vrai, alors Ri=RiRj, supprimer Rj Application à la structure du quadtree (image NxN) Initialisations : l0 niveau de départ dans la pyramide, t0=N/2l0 , n=4l0 Fusion : j=l0, t=t0 , k=1 Tant que j>0 Pour i variant de 0 à n-1 par pas de 4l0-j+1 Si les 4 blocs i, i+k, i+2k, i+3k sont de taille t, et si le critère d’homogénéité est vérifié pour l’union des 4 blocs, alors Les fusionner : mise à jour des tailles et caractéristiques des blocs (on ne garde que le bloc n°i) Passage au niveau supérieur de la pyramide : j=j-1, t=2t, k=4k Division : j=l0 Pour i variant de 0 à n-1 Si la taille du bloc i est ≤t0 et >0 Tant que le critère d’homogénéité n’est pas vérifié pour le bloc i subdiviser le bloc i en 4 blocs : mettre à jour les paramètres de i à partir du sous-bloc et créer les 3 autres sous-blocs indicés n+1, n+2, n+3, et actualiser n à n+3 Longueur coté d’1 bloc au niveau l0 Nombre de pixels au niveau l0
Graphe de régions Le graphe est constitué de : Une liste de sommets LS : chaque région Ri est représentée par 1 sommet s auquel sont associés : les caract. de Ri, la liste des pixels de Ri, le nbre et la liste des arrêtes impliquant s Une liste d’arrêtes LA : chaque arrête a est caractérisée par les 2 sommets qu’elle relie, son coût ct(a), un indicateur de validité Exemple de construction du graphe d’adjacence : 1 2 3 5 6 7 8 4 1 2 3 5 6 7 8 4
Graphe de régions (suite) Coût des arrêtes du graphe : Fonction des caractéristiques des régions adjacentes Fonction de la pertinence (e.g. homogénéité) de la fusion des régions adjacentes Exemple de coût entre Ri et Rj disjointes : Contraste = Variance = (rq )
Sélection par accord mutuel : ex. m=1, s=1, N=50 m=4, s=1 , N=60 1 8 / 20,25 12,10 22,22 2,23 0,99 0,22 1,83 14,38 16 11,48 15,8 0,23 12 1 2 3 5 6 7 8 4 3 m=8, s=1 , N=40 m=11, s=1 , N=80 7 m=10, s=1 , N=50 m=2, s=1 , N=30 2 4 6 5 m=3, s=1 , N=100 m=11, s=1 , N=100 1 3 4 5 7 8 m=1, s=1, N=50 m=11, s=1 , N=80 m=8, s=1 , N=40 m=2, s=1 , N=30 m=3.4, s=1 , N=160 m=10.7, s=1 , N=150 / 12,10 17,64 1,05 1,21 10,51 13,31 12,83 1 3 5 7 8 4 / 7,73 13,29 13,43 5 7 8 4 4 5 7 8 m=11, s=1 , N=80 m=2, s=1 , N=30 m=2.8, s=1 , N=210 m=10.1, s=1 , N=190
Fusion de régions dans un graphe Exemple d’algorithme : Initialisations : nbe de régions = nbre pixels, initialisation de LS et LA Tant que segmentation non maximale Sélection des arrêtes a0 de moindre coût par accord mutuel (a0 relie si et sj et j=argmink{ct(a)/a=(si,sk)} et i=argmink{ct(a)/a=(sk,sj)} Fusion des régions associées aux arrêtes a0 : mise à jour de la liste des sommets (liste des arrêtes associées, liste des pixels, caractéristiques de la région représentée) Mise à jour de la liste des arrêtes (validité, coût, sommets associés) Mise à jour du nbre de régions = nbre sommets Création de l’image des régions (d’après liste de pixels des sommets)
Tests statistiques entre deux régions à fusionner Hyp. : bruit gaussien sur une image assimilée à une fonction 2D constante par morceau Test de Student d’égalité des espérances intervalle de confiance de l’estimateur de l’espérance m d’une loi normale dont la variance est inconnue avec Test de Fisher-Snedecor d’égalité des moyennes et des variances… Test du c2 d’homogénéité v.a. qui suit 1 loi du c2 à m-1 degrés de liberté ? Test de Wilcoxon : soit (somme pour chaque pixel de R1 du nbre de pixels de R2 de valeur inférieure) : on teste si U suit 1 loi normale N(n1n2/2, n1n2(n1+n2+1)/12) Comparaison des histo. des régions : nj et nj’ nb pixels du ‘bin’ j dans chaque histo.
Tests statistiques entre deux régions à fusionner Hyp. : bruit gaussien sur une image assimilée à une fonction 2D constante par morceau Test du c2 d’homogénéité v.a. qui suit 1 loi du c2 à m-1 degrés de liberté hyp. nulle H0 = les 2 histogrammes suivent la même loi ; test de niveau a rejetant H0 si la stat. de test excède le quantile 1- a ; Exemple : F(1-0.0001)=134.0 ; F(1-0.05)=168.3 ; F(1-0.1)=174.1 ; F(1-0.15)=179.4 Comparaison des histo. des régions : nj et nj’ nb pixels du ‘bin’ j dans chaque histo. j 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 err a H1 29 52 30 36 27 H2 18 22 33 42 35 19 16 42,98 >99,99% H3 32 25 350,9 <1% H4 28 21 20 177,8 <85%
Fusion de régions dans un graphe Exemple : NR = 4 NR = 5 NR = 8 NR = 12 NR = 16 NR = 20
Fusion de régions dans un graphe NR = 20 NR = 30
Comparaison de méthodes Croissance de régions Pyramide du Quadtree Fusion de régions
Superpixels : définition Superpixel groupe de pixels connexes et spatialement proches Propriétés (souhaitées) des superpixels : Adhérence aux frontières des objets dans l’image ; Compacité et régularité des bords ; Faible complexité (en tant que prétraitement visant à augmenter la vitesse et la qualité des traitements ultérieurs
Algorithme SLIC Simple Linear Iterative Clustering (Achanta et al., 2012) Algo des c-moyennes appliqué dans l’espace caractéristiques+position Notations : Nbre pixels = nbr_pix, nbre superpixels = K, rayon superpixel M=sqrt(nbr_pix/K) vecteur des niv. gris en chaque pixel s : ys=(y1,…,yN)st , position lig. ,col. : zs=(l,k)st , centres des classes Cj=(yj, zj)t Distance d(Cj,(ys,zs))=sqrt(||ys-yj||2+||zs-zj||2(m/M)2) Algo : Initialisation : les Cj correspondent aux pixels de + faible gradient chaque fenêtre 33 centrée sur une grille régulière d’intervalle M ; Répéter jusqu’à vérification du critère d’arrêt : Pour chaque superpixel Cj, Pour chaque pixel s du voisinage 2M2M : Calcul de la distance d(Cj,(ys,zs)) et mise à jour de la distance min dmin(s) et du superpixel d’appartenance si d(Cj,(ys,zs))<dmin(s) ; mise à jour (e.g. par la moyenne des vecteurs (ys,zs) sur les pixels associés à Cj ) ; Calcul du critère d’arrêt m coef. normalisation radiom. versus localisation
Exemples de résultats (I) Nombre régions 50, (m/M) {10,20,40,80} Nombre régions 200, (m/M) {10,20,40,80}
Exemples de résultats (II) 200 régions 1000 régions (m/M) =40 (m/M) =80
Difficulté de régler les paramètres Sur image originale Sur image filtrée par médian 33 200 régions 1000 régions, (m/M) =40 1000 régions, (m/M)=20 Sur image filtrée par médian 55