Académique Documents
Professionnel Documents
Culture Documents
Practice 3: Segmentation
2 Modèle de Chan-Vese 2
2.1 Modèles classiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Modèle de Chan-Vese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.1 Déscription du modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.2 Relation avec la fonctionnelle de Manford-Shah . . . . . . . . . . . . . 4
2.2.3 Formulation d’ensembles des niveaux de Chan-Vese . . . . . . . . . . 5
6 Conclusion 14
1 Introduction
Dans ce TP on fera une ségmentation d’image. Il y a plusieurs façons de segmenter les im-
ages (par région, par pixel...) mais nous nous concentrons sur les "contours actifs sans bords"
aussi appelés le modèle Chan-Vese. Les modèles classique dont on donnera quelques exem-
ples dans la suite sont basés sur le comportement du gradient pour détecter les contours et
donc les objets dans une image donnée. Une image dont le bord n’est pas défini par un gra-
dient pose un problème pour ces méthodes classiques. Le modèle de Chan-Vese qu’on verra
par la suite échape à cette nécessitée de regarder le gradient, et offre aussi plus de propriétés
comme la possiblité de commencer par n’importe quelle courbe dans l’image. Les contours
actifs sont utilisés dans le domaine du traitement d’images pour localiser le contour d’un ob-
jet. Pour y parvenir, il existe différents types de modèles, dont certains ne sont pas toujours
applicables à un problème donné comme ça a été mentionné précedement. le modèle de con-
tours actifs Chan-Vese implique des techniques d’évolution de courbe, des fonctionnelles
de Mumford-Shah pour la segmentation. On introduira un algorithme numérique utilisant
des différences finies, implémenté comme un schéma explicite en temps, Le modèle Chan-
Vese est implémenté ainsi que deux autre formulations qui vont être plus éfficaces et plus
générale que la ségmentation binaire. Des résultats d’expériences seront présentés qui servi-
ront de validation que l’algorithme fonctionne à ce qu’il est censé faire.
1
2 Modèle de Chan-Vese
Soit Ω un ouvert borné de R2 , dont la frontière est définie par ∂Ω.
Soit u0 : Ω → R2 une image donnée. C : [0, 1] → R2 une courbe paramétrique qui représen-
tra la courbe variable autour de notre objet à détecter.
le détecteur de bord peut être défini par une fonction positive décroissante g, qui dépend du
gradient de l’image u0 avec lim g(x) = 0.
x→+∞
1
Par exemple g(|∇u0 (x, y)|) = 1+|∇Gσ (x,y)∗u0 (x,y)|p
avec p≥ 1.
2 2
Gσ ∗ u0 est la version lisse de u0 avec Gσ est un noyau gaussien, Gσ (x, y) = √1σ exp(− x 4σ+y
).
k
Comme c’est connu l’opération de convolution avec une fonction de classe C donne une
fonction de classe C k (c’est l’idée à utiliser pour démontrer par exemple la densité de l’ensemble
des fonctions continues à support compact dans les espaces Lp ).
Dans les modèles classique de détection de contours actifs, le détecteur de bord est utlisé et
dépend du gradient de l’image u0 ppur arrêter la courbe à la limite de l’objet désiré, par la
suite nous faisons un rappel de deux modèles.
∂φ ∇φ
∂t
= g(|∇u0 |)|∇φ|(div( |∇φ| ) + ρ)
R1
inf J2 (C) = 2 0
|C 0 (s)|g(|∇u0 (C(s))|ds
C
2
∂φ ∇φ
∂t
= |∇φ|(div(g(|∇u0 |) |∇φ| ) + ρg(|∇u0 |))
Ces modèles ne peuvent détecter que les objets dont les bords sont définis par le gradient. Et
en pratique les gradients discrets sont bornées puis la fonction d’arrêt n’est jamais nulle sur
les bords et la courbure peut passer par la frontière.
Le modéle de Chan-Vese de contour actif est un modèle sans fonction d’arrêt, c’est à dire
qu’il n’est pas basé sur le gradient de l’image pour le processus d’arrêt (de détection du bord
de l’objet).
Le critère d’arrêt est basé sur les techniques de ségmentations de Manford-Shah. De cette
façon nous obtenons un modéle capable de détecter les contours à la fois avec ou sans le gra-
dient. En outre les contours intérieur sont automatiquemennt détectés et la courbe initiale
peut être n’importe où dans l’image.
R courbe C l’expréssion
Considérons pour une suivante
R :
F1 (C) + F2 (C) = inside(C) |u0 (x, y) − c1 | dxdy + outside(C) |u0 (x, y) − c2 |2 dxdy
2
3
2.2.2 Relation avec la fonctionnelle de Manford-Shah
4
Ce que Chan et Chambolle et autres ont proposé comme remède à ce problème de convexité
et donc d’unicité de la solution recherchée et même son éxistence pour des problèmes plus
complexes est la formulation d’ensembles de niveaux.
La formulation par ensembles de niveaux consiste à définir une fonction φ qui remplace la
courbe C dans le problème de minimisation de l’énergie et qui vérifie:
1. C = ∂O = {(x, y) ∈ Ω; φ(x, y) = 0} avec O ⊂ Ω
2. inside(C) = O = {(x, y) ∈ Ω; φ(x, y) > 0}
3. outside(C) = Ω − O = {(x, y) ∈ Ω; φ(x, y) < 0}
En utilisant la fonction de Heaviside H et la mesure de Dirac δ0 en zéro.
H(x) = 1 si x ≥ 0 et H(x) = 0 sinon.
La dérivation au sens des distribution de la fonction de Heaviside est égale à la mesure de
Dirac.
La fonctionnelle d’énergie se réecrit : R
FR(c1 , c2 , φ) = η longueur({φ = 0}) + λ Ω |u0 (x, y) − c1 |2 H(φ(x, y))dxdy+
λ Ω |u0 (x, y) − c2 |2 (1 − H(φ(x, y)))dxdy
R
longueur({φ = 0})= Ω δ0 (φ)||∇φ(x, y)||dxdy
C’est la définition de la longueur d’une courbe paramétrique de classe C 1 et donc pour avoir
la longueur de la courbe C, ||∇φ(x, y)|| doit être égale à 1 pour tout (x, y) ∈ {φ = 0}.
Fixons la focntion φ et chorchons le minimum de la fonctionnelle par rapport à c1 et c2 .
On trouve c1 et c2 quand
R le gradient de F par rapport à cesR deux variables s’annule:
0R2 = ∇c1 ,c2 F = (2λ Ω (u0 (x, y)−c1 )H(φ(x, y))dxdy,
R
2λ Ω (u0 (x, y)−c2 )(1−H(φ(x, y)))dxdy)T
R u (x,y)H(φ(x,y))dxdy
Donc pour Ω H(φ(x, y))dxdy > 0 on a c1 (φ) = Ω R0 H(φ(x,y))dxdy
R Ω
Ω uR0 (x,y)(1−H(φ(x,y)))dxdy
R
et pour Ω (1 − H(φ(x, y)))dxdy > 0 on a c2 (φ) = (1−H(φ(x,y)))dxdy
Ω
En ce qui concerne le calcul de la fonction φ, nous allons définir une fonctionnelle qui dépen-
dra de et qui fait intervenir une fonction régularisée (de classe C 2 ) H de la focntion de
Heaviside et qui vérifie H0 = δ (c’est la dérivation au sens classique).
Cette fonctionnelle est exactement de la même expression que F mais en remplaçant H par
H et nous la notons par F .
Gardons c1 et c2 fixe et cherchons le minimum de F par rapport à φ.
En rajoutant une variable du temps artificielle le probème de minimisation est équivalent la
résolution de cette équation différentielle:
∂φ ∇φ
∂t
= δ (φ)[ηdiv( |∇φ| ) − λ(u0 − c1 )2 + λ(u0 − c2 )2 ] (1)
φ(0, x, y) = φ0 (x, y)
Une discrétisation par différence finie par rapport au temps et aussi par rapport à l’espace
donne un schéma explicite pour le calcul de φ.
5
3 Résolution numérique de Chan-Vese
Nous commençons par présenter deux approximations des fonctions de Heaviside H et la
mesure de Dirac δ0 .
Une régularisation de la fonction de Heaviside Nous allons voir que la fonction de
Heaviside peut être approchée par une fonction de classe C ∝ sur Ω.
Pour tout > 0 : H (x) = 21 (1 + π2 arctan( x ))
Cette fonction positive ou nulle converge vers H quand tend vers 0. La dérivée de H est la
fonction δ définie par δ (x) = π1 2 +x 2
A l’aide de ces deux fonctions nous pouvons calculer maintenant c1 et c2 et aussi δ (φ) dans
l’équation différentielle (1).
Nous discrétisons l’équation (1) par rapport au temps et nous trouverons ce schéma explicite
∇φ k
k+1 2
φk+1 = φk + τ δη (φk )[div( ||∇φ k || ) − λ(I − c1
) + λ(I − ck+1 2
2 ) ]
Avec R
u (x,y)H (φk (x,y))dxdy u0 (x,y)(1−Hη (φk (x,y)))dxdy
R
c1 = Ω R0 Hη (φkη(x,y))dxdy , c2 = Ω R
k
Ω Ω (1−Hη (φ (x,y)))dxdy
3.2 Implémentation
L’implémentation de cette méthode sera faite sur Matlab, nous commençons par la lecture de
l’image ’eight.tif’, et ensuite nous sélectionnons le mask en utilisant la fonction "roipoly", la
fonction φ sera égale à la distance donnée par le mask.
phi = chanvese( image, phi, lambda, eta, tau, epsilon, n, threshold, param )
Nous reconnaissons les constantes de l’équation discrétisée trouvée en haut, un argument de
plus qui est "param" qui prend deux valeurs, 1 pour désigner qu’on effectuera l’accélération
recommandée dans le TP et 0 pour ne pas l’activer.
L’execution a été faite sur une machine de Cremi (ODO) CPU : Xeon Gold 5118 64Go.
1-Nous commençons par initialiser une courbe autour d’une seule piéce et regardons les ré-
sultats:
6
Le temps d’éxecution était de 0.67 secondes aprés 47 itérations. λ = 0.001, η = τ = = 1,
threshol = 0.1 et n = 10. Nous voyons que l’algorithme a réussi à reconnaître une seule
pièce. le temps d’éxecution est petit et l’algorithme converge après seulement 47 itérations.
2- Une courbe autour de deux pièces :
Le temps d’éxecution était de 1.78 secondes aprés 129 itérations. λ = 0.001, η = τ = = 1,
threshol = 0.1 et n = 10.
7
Ceci est dû au fait que la ségmentation est binaire c’est à dire que l’algorithme sépare en
deux zones l’image et cherche les contours dans une des zone (l’intérieur de la courbe ini-
tiale) et n’arrive pas à détecter les objets de mêmes natures dans la zone exterieure car la
valeur de λ est proche de zéro ce qui empêche les parties u0 − c1 et u0 − c2 d’influencer trop
dans la recherche de l’énergie minimale.
Nous allons voir que pour λ ∈ {0.1, 1}, la recherche des pièces dans l’images sera meilleures
mais avec des erreurs dans la détection des contours.
1- Pour λ = 0.1 Nombre d’itération égal à 51 et temps d’éxecution était de 0.8 secondes.
Nous voyons que l’algorithme a réussi à trouver les deux pièces en partant d’une courbe
qui couvre seulement une pièce, une valeur plus grande de λ a augmenté la performance
de l’algorithme. Nous constatons par contre une erreur dans la détection des contours dans
le résultat final, la présence des tâches rouges dans l’image démontre que la qualité de la
reconnaissance des contours est moins que celle quand λ est plus petit.
Il faut signaler aussi que la courbe initiale doit être un peu plus élargie afin d’obtenir ces
résultats. Prendre une courbe qui est plus petite que celle prise dans l’image de gauche en
haut renvoie au mêmes résultats que pour λ = 0.001, c’est à dire l’algorithme trouvera une
seule pièce mais pas deux avec des contours moins bons.
2- Pour λ = 1, nombre d’itération égal à 35 et temps d’éxecution était de 0.54 secondes.
En partant d’une courbe qui couvre une pièce et un facteur λ = 1, l’algorithme a réussi à re-
connaître trois pièces. La valeur de λ joue un rôle important, c’est celui de donner du poids
aux expréssions où l’image initiale est apparue et donc la participation de celle-ci influence
la recherche des contours, ce qui est attendu car en gardant le maximum d’information de
l’image durant la recherche des objets dans la même image facilitera la reconnaîssance de
ces derniers. Nous remarquons toujours des contours moins bons.
8
3.3.3 Avec du bruit
Nous remarquons qu’il y a effectivement du bruit dans les contours, et aussi une détection
plus lente par rapport à l’éxecution avec argument l’image originale.
L’image bruitée a influencé le temps du calcul et la détection était comme dans le cas λ =
0.001, c’est à dire avec une courbe qui entoure 3 pièces, l’algorithme a détecté seulemnt les
trois pièces qui se placent à l’intérieur de la courbe initiale malgré que la valeur de λ est plus
grande que 0.001.
2- En partant d’une courbe qui entoure les quatre pièces, λ = 1, nombre d’itération égal à 78,
le temps d’éxecution était de 1.1 secondes.
Nous constatons la présence d’un contour bruit au centre de l’image mais qui disparait et
l’algorithme a réussi à trouver les quatre pièces.
9
4 Formulation convexe de Chan, Esedoglu et Nikolova
Prolonger le problème de ségmentation binaire en une ségmentation en présence d’une fonc-
tion u qui a des valeurs dans [0,1] et pas dans {0,1} est possible par une formulation convexe:
(c∗1 , c∗2 , u∗ ) = argmin Ω ||∇u|| +λ Ω |I(x, y)−c1 |2 u(x, y)dxdy+λ Ω |I(x, y) − c2 |2 (1 − u(x, y))dxdy
R R R
∇u k
uk+1 = PA (uk + τ [div( ||∇u 2 2
k || ) − λ(I − c1 ) + λ(I − c2 ) ])
4.1 Implémentation
En prenant des différentes initialisations nous constatons que l’algorithme converge trop
vite quand la valeur de τ = 0.1 et λ = 1, en effet après seulement 3 itérations et un temps de
0.29 seconde l’algorithme converge.
En prennant une image aléatoire en entrée dont chaque élément est dans [0,1], l’algorithme
a convergé trop vite et arrive à des trés bons résultats. les contours sont bruités mais le bruit
est dans le centre de la pièce, la détection des 4 pièces a été bien faite comme nous le voyons
dans les deux images.
En gardant τ = 0.1 et λ = 0.1 le nombre d’itération est maintenant égal à 7 et temps
d’execution est de 0.53 secondes.
En gardant τ = 0.1 et λ = 0.01 le nombre d’itération est maintenant égal à 35 et temps
d’execution est de 0.65 secondes.
10
4.2.2 Compute_energy_smooth et comparaison
Voici les deux graphes de l’énergie pour les deux modèles Chan-Vese et Chan-Esedoglu-
Nikolova :
On voit que les valeurs pour le modèle Chan-Vese sont plus grandes que celles de modèle
Chan-Esedoglu, et la convergence est plus rapide pour le premier modèle, donc la formula-
tion convexe est une amélioration de la formulation binaire.
11
où B est la boule unitée euclidienne.
Nous fixons toujours la valeur de c1 = 110 et c2 = 227 et le problème de Chan-Vese devient
(u∗ , z ∗ ) =argminu∈A argmaxz∈B J(u, z) avec la focntionnelle J est maintenant continue-
ment différentiable
R en (u, z) R R
J(u, z) = Ω udiv(z)dxdy+λ Ω |I(x, y)−c1 |2 u(x, y)dxdy+λ Ω |I(x, y) − c2 |2 (1 − u(x, y))dxdy
Une discrétisation du temps et application du descente du gradient donne ce schéma numérique
explicite en temps:
z k+1 = PB (z k + σ∇uk )
uk+1 = PA (uk + τ (div(z k+1 ) − λ(I − c1 )2 + λ(I − c2 )2 ))
Avec
z
PB (z) = z si ||z|| ≤ 1 et PB (z) = ||z|| si ||z|| > 1
présence d’une quantité du bruit importante des les contours, la détection était trop rapide et
les résultats sont satisfaisants.
En prenant λ = 0.001 le nombre d’itérations était égal à 10 et le temps d’éxcution égal à 0.61
secondes.
12
En regardant ce graphique, on constate que la convergence est rapide et que pour ce modèle,
l’énergie est plus petite (2.56 ∗ 105 ) par rapport aux deux autres modèles présentés dans la
section précédente (2.64 ∗ 106 et 3.32 ∗ 105 ). Une amélioration dans ce modèle est repérée et
l’influence de la constante λ est moins forte par rapport aux modèles précédents.
13
6 Conclusion
Dans l’ensemble, le modèle de Chan-Vese binaire semble faire une très bonne ségmentation
de l’image ’eight.tif’ qui contient des objets dont la couleur est en contraste avec l’arrière-
plan. Nous pouvons donc conclure de nos tests que la méthode fonctionne vraiment bien.
De tous ces exemples, nous voyons également que le paramètre de régularisation λ joue
un rôle important pour une détection plus performante. La fonction régularisée de Heavi-
side H nous a permet de passer de partie théorique à la partie pratique et par suite implé-
menter le modèle en Matlab. La formulation convexe de Chan-Esedoglu a amélioré le temps
d’execution et les résultats obtenus ont permet aussi de remonter à la solution du problème
binaire. L’implémentation avec ces versions de Chan-Vese ont très bien fonctionné.
14
References
[1] https://www.math.ucla.edu/ lvese/PAPERS/IEEEIP2001.pdf
15