Vous êtes sur la page 1sur 17

Image processing with variational approaches

Practice 3: Segmentation

Rapport écrit par SAHKI Lyes

Le code a été fait en groupe de deux

SAHKI Lyes et DEHMANE Chadi

Department de mathématiqes appliqées,


statistiqe Université de Bordeaux
Contents
1 Introduction 1

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

3 Résolution numérique de Chan-Vese 6


3.1 L’algorithme de Chan-Vese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3 Résultats des tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3.1 Différentes initialisations . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3.2 λ ∈ {0.1, 1} et η = τ =  = 1, threshol = 0.1 et n = 10 . . . . . . . . 8
3.3.3 Avec du bruit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4 Formulation convexe de Chan, Esedoglu et Nikolova 10


4.1 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2 Résultats des tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2.1 Différentes initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2.2 Compute_energy_smooth et comparaison . . . . . . . . . . . . . . . . 11

5 Une formulation dual des variations totales 11


5.1 Implémentation algorithme 4.10 . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.1.1 Résultats des tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.1.2 Compute_energy et comparaison des deux derniers algorithmes . . . . 12
5.2 Implémentation algorithme 4.12 . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.2.1 Résultats des tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

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.

2.1 Modèles classiques

Le premier modèle est le suivant :


R1 R1 R1
inf J1 (C) = α 0
|C 0 (s)|2 ds + β 0
|C 00 (s)|ds − λ 0
|∇u0 (C(s))|2 ds
C

α, β et λ sont des constantes positives.


α et β controlent l’inérgie dite interne (les contours sont lisses ou pas)
λ attire le contour vers l’objet dans l’image, c’est l’inérgie externe.
La courbe C est représentée implicitement par une focntion lipschitzienne φ par
C = {(x, y); φ(x, y) = 0} et l’évolution de la courbe C par φ(t, x, y).
Faire évoluer la courbe C avec une vitesse F revient à résoudre l’équation suivante :
∂φ
∂t
= |∇φ|F avec φ(0, x, y) = φ0 (x, y).
Un cas particulier du mouvement est le mouvement par courbure moyenne, et ceci quand
∇φ
F = div( |∇φ| )
Maintenant, le modèle de contour actif géométrique basé sur le mouvement de courbure
moyenne est donné par l’équation d’évolution suivante :

∂φ ∇φ
∂t
= g(|∇u0 |)|∇φ|(div( |∇φ| ) + ρ)

Dans ce cas on prend la fonction g définie en haut avec p = 2.

Le deuxième medèle est le suivant :

R1
inf J2 (C) = 2 0
|C 0 (s)|g(|∇u0 (C(s))|ds
C

et la formulation associée est :

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.

2.2 Modèle de Chan-Vese

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.

2.2.1 Déscription du modèle

Nous définissons la courbe C comme étant la frontière d’un ouvert O ⊂ Ω, ie ∂Ω = O,


inside(C) = O et outside(C) = Ω − O
Cette méthode est une minimisation de la ségmentation basée sur l’énergie. Voici l’idée de
base de ce modèle sur un cas simple.
Nous supposons que l’image u0 est formée de deux régions d’intensités approximativement
constantes par morceaux, de distictes valeurs ri et sj , supposont en outre que l’objet à dé-
tecter est représenté par la région avec les valeur ri .
On note le bord de cet objet par C0 et alors dans inside(C0 ) on a u0 = ri et u0 ∈ outside(C0 )
implique que u0 = sj .

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

Avec c1 et c2 les moyenne de u0 dans l’intérieur et l’extérieur de C respectivement.


Dans ce cas le bord de l’objet recherché est la courbe qui résout le problème de minimisation
suivant:
inf (F1 (C) + F2 (C)) ≈ F1 (C0 ) + F2 (C0 ) ≈ 0 puisque C0 c’est le bord de notre objet.
C
On peut constater ça dans la figure suivante:
Nous rajoutons quelques régularisations à notre problème de minimisation et nous définis-
R C et des moyennes c21 et c2 :
sons une fonctionnelle dite d’énerige qui dépend de la courbe
F (c1 , c2 , C) = η longeur(C) + ρ surface(inside(C)) + λ1 inside(C) |u0 (x, y) − c1 | dxdy +
R
λ2 ouside(C) |u0 (x, y) − c2 |2 dxdy
Les constantes sont positives oyu nulles.

3
2.2.2 Relation avec la fonctionnelle de Manford-Shah

La fonctionnelle de Manford-Shah de ségmentation est définie pour une image u0 et une


courbe C par:
R R
F M S (u, C) = η longueur(C)+λ Ω |u0 (x, y) − u(x, y)|2 dxdy + Ω−C |∇u(x, y)|2 dxdy
On voit que dans le cas où on définit la fonction u par:
moyenne(u0 ) à l’intérieur de C c à l’intérieur de C
u= { = 1
moyenne(u0 ) à l’extérieur de C c2 à l’extérieur de C
Dans ce cas la fonction u est constante et donc son gradient est nul et le dernier terme de
F M S est nul et le deuxième terme se décompose en deux intégrales
et donc :
R R
F M S (u, C) = η longueur(C)+λ C |u0 (x, y) − c1 |2 dxdy + λ Ω−C |u0 (x, y) − c2 |2 dxdy
On voit que pour ρ = 0 et λ1 = λ2 = λ on a :
F M S (u, C) = F M S (c1 , c2 , C) = F (c1 , c2 , C)
Nous constatons que la minimisation de la fonctionnelle de Manford-Shah c’est à dire chercher
la courbe C qui minimise F M S dans le cas où la fonction u est définie comme précedement
est équivalent à trouver la courbe C0 pour F et donc trouver les bord de l’objet désiré ou
même minimiser l’énerige F . On remarque aussi que les valeurs de c1 et c2 dépendent de la
courbe C.
1 à l’intérieur de C
On définit une fonction c(x, y) =
0 à l’extérieur de C
Et donc :
R R
F (c1 , c2 , c) = η longueur(C)+λ Ω
|u0 (x, y)−c1 |2 c(x, y)dxdy+λ Ω
|u0 (x, y) − c2 |2 (1 − c(x, y))dxdy
Ce problème de ségmentation binaire n’est pas toujours facile à résoudre puisque dans ce cas
la fonctionnelle de Manford-Shah n’est pas convexe par rapport à toutes ses variables, mais
plutôt convexe séparament par rapport à (c1 , c2 ) et par par rapport à c.

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.

2.2.3 Formulation d’ensembles des niveaux de Chan-Vese

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.1 L’algorithme de Chan-Vese

Nous voyons par la suite les principales étapes de cet algorithme :


1- Initialiser φ, c’est la fonction φ0 (x, y)
2- Calculer c1 et c2
3- Calculer φk+1
4- Chaque n itération, réinitialiser φk+1 comme distance à {φk+1 = 0}
5- Vérifier si la solution est bonne par le critère ||H(φk+1 ) − H(φk )|| < thresold

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.

3.3 Résultats des tests

3.3.1 Différentes initialisations

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.

3- Une courbe autour de trois pièces :


Le temps d’éxecution était de 4.33 secondes aprés 307 itérations. λ = 0.001, η = τ =  = 1,
threshol = 0.1 et n = 10.

4- Une courbe autour des quatres pièces :


Le temps d’éxecution était de 5.15 secondes aprés 367 itérations. λ = 0.001, η = τ =  = 1,
threshol = 0.1 et n = 10.
Interpreter les résultats
Nous voyons qu’après diverses initialisations des courbes de départ, l’algorithme a réussi à
reconnaître seulement les pièces de monnaie qui étaient à l’intérieure de la courbe initiale.

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.

3.3.2 λ ∈ {0.1, 1} et η = τ =  = 1, threshol = 0.1 et n = 10

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

En utilisant la fonction add_gaussian_noise, nous abtenons une image bruitée.


Nous éxecutons la fonction chanvese avec, λ qui varie , et les autres constantes sont gardées
comme dans l’éxecution précedente.
1- En partant d’une courbe qui couvre trois pièces, λ = 0.1, nombre d’itération égal à 178 et
temps d’éxecution égal à 2.4 secondes.

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 ) ])


L’opérateur PA est défini par PA (u) = min(max(u, 0), 1).


Dans cette partie nous fixons c1 = 110 et c2 = 227.
Un résultat trés intéressant est celui qui fait une relation entre la fonction u∗ trouvée pour
pour cette ségmentation ’continue’ et la fonction binaire ub qui sera à son tour une solution
du premier problème de ségmentation binaire.
Ce résultat dit que pour tout µ dans ]0,1[, la fonction uµ = H(u∗ −µ) est un minimum global
pour la fonctionnelle F du problème binaire.
Et donc trouver une solution de ce problème continue permet de résoudre aussi le problème
de ségmentation binaire.

4.1 Implémentation

La fonction qui a été définie c’est lla suivante :


y = algorithm37( u, I1, I2, lambda, tau, epsilon, threshold )
I1 = (u0 − 110)2 avec u0 l’image initile.
I2 = (u0 − 227)2
On programme aussi une fonction appellée compute_energy_smooth qui calcul l’énergie
à chaque itération, c’est à dire on calcule ’u’ et après on calcule l’intégrale en haut. Et on
stoque cette valeur dans un vecteur pour afficher le graphe de l’énergie dans la partie résul-
tats.

4.2 Résultats des tests

4.2.1 Différentes initialisation

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.

5 Une formulation dual des variations totales


La formulation précédente implique encore la régularisation ||∇u|| de la variation totale,
définie pour les fonctions prenant leurs valeurs dans l’intervalle continu [0; 1]. Une idée est
alors
R de considérer la double
R formulation de la variation totale:

|Du|dxdy = sup z∈B Ω udiv(z)dxdy

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

5.1 Implémentation algorithme 4.10

La fonction définie pour ce schéma est la suivante :


y = algorithm410( u, z, I1, I2, lambdaaa)
On programme aussi une fonction appellée compute_energy qui calcul l’énergie à chaque
itération, c’est à dire on calcule ’u’ et après on calcule l’intégrale en haut. Et on stoque cette
valeur dans un vecteur pour afficher le graphe de l’énergie dans la partie résultats.

5.1.1 Résultats des tests

En partant des initialisations aléatoire de u et de z et on prend λ = 0.1, la convergence


est trop rapide, en seulement 3 itération et un temps égal à 0.31 secondes. On constate la

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.

5.1.2 Compute_energy et comparaison des deux derniers algorithmes

Voici le graphe obtenu par la fonction qui calcule l’énergie de ce modèle:

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.

5.2 Implémentation algorithme 4.12

La fonction définie pour ce schéma est la suivante :


y = algorithm412( u, z, I1, I2, lambda, teta)
On programme aussi une fonction appellée compute_energy_412 qui calcul l’énergie à chaque
itération.

5.2.1 Résultats des tests

Pour λ = 0.001 et θ = 1, u et z aléatoires.

Le nombre d’itération égal à 11 à et le temps d’éxecution était de 0.61 seconde.


Nous allons voir les courbes de l’énergie pour des valeurs différentes de θ
On voit que l’énergie

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

Vous aimerez peut-être aussi