# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  Segmentation Level Set

## b_reda31

Bonjour  tous, jai pass toute la matine  me documenter sur la segmentation d'images en particulier par la mthode Level Set .Hlas je nai pas compris grand-chose
Voici ce que jai trouv :
_Cette mthode permet de faire voluer une courbe paramtrique ferme C(p) suivant une quation de type dC/dt=FN_ 


Tel que :
t est le temps,
N : normale unitaire  la courbe
F : vitesse dvolution



Quelquun peut me donner plus de prcision SVP ?

----------


## ToTo13

Bonjour,

tu peux galement ajouter :
 - ce n'est pas forcment une courbe paramtrique, mais des fois justes des points relis entre eux.
 - La fonction est une fonction d'nergie !!! Avec une nergie interne et une nergie externe, plus quelques petits paramtres selon besoins. Tu fais donc varier ta courbe ou tes points grace  la fonction.

Si tu veux un exemple de Snake, il y a un plugin dj implment dans ImageJ.

----------


## b_reda31

Merci pour ces rponses, pouvez vous me donner un exemple d'application de cette formule car je dois l'implmenter et je ne sais par quoi commencer.
Sinon auriez vous un cours en franais sur cette mthode ?

----------


## pseudocode

La courbe C "bouge" en fonction du temps. Elle se dplace vers la contour de la zone a segmenter.

Pour savoir de combien elle bouge, on calcule la vitesse de dplacement de chaque point de la courbe. D'ou le calcul de dC/dt = vitesse de la courbe (en chaque point).

Dans ton cas, tu sais dja que ce calcul donne dC/dt=FN, c'est a dire que:
1. chaque point de la courbe se deplace perpendiculairement au rayon de courbure.
2. la grandeur (norme) du dplacement est F, qui est une fonction que l'on va devoir construire.

----------


## tiougare

je suis la pour t'aider et de faire te comprendre la mthode level set
pour la segmentation d'image, gnralement soit en utilisant les contours actifs "snakes" sont des courbe paramtriques, enrgie interne qui dpend du snake lui mme c--d optimisation de la courbure et de la longueur,
si on a par exemple une courbe ouverte distance entre deux point (extr'miits)" la longueur optimale est bien une droite, si la courbe est ferm donc la forme la longueur optimale est un cercle, l'enrgie externe dpend de l'image, "des contours de l'image (le gradient d'image ou un variation de l'intensit des pixels)...etc
pour la mthode level set est une mthode gomtrique, son interet est l'adaptation topologique  la forme actuelle de l'objet sans connaissance pralable. la suite vient avec la discussion

----------


## navhpf

Attention  ne pas confondre les snakes (contours actifs dont on cherche  minimiser l'nergie, "invents" pour le traitement d'images)  avec les level sets (mthode numrique, beaucoup plus gnrale, de rsolution d'quations diffrentielles partielles qui apparaissent dans une modlisation du problme de segmentation).

Pour l'implmentation des level sets et leur application  la segmentation, voir par exemple le site de Baris Sumengen
http://barissumengen.com/level_set_methods/index.html
Son implmentation est trs facile  comprendre,  dfaut d'tre optimise.

Deux mises en garde : 
- si tu ne peux pas lire l'anglais
- si tu ne peux pas suivre les dveloppements mathmatiques derrire la mthode des level sets
tu finiras trs vite dans une impasse. Un seul conseil : lis!

Nous sommes ici pour te conseiller et t'orienter si tu as une question prcise et si tu as raisonnablement dfrich le terrain.

Bonne chance.

----------


## kaiseresis

Bonjour,
J'essaye de comprndre la diffrence entre level set et les snakes et ce que j'ai compris c'est que avec les snakes ont connait  prioris la forme gomtrique de l'objet qu'ont cherche par contre avec le level set c'est tout  fait le contraire.
 est ce que c'est vrais?



> pour la mthode level set est une mthode gomtrique, son interet est l'adaptation topologique  la forme actuelle de l'objet sans connaissance pralable. la suite vient avec la discussion


d'apres cette explication je comprend que l'interret de level set est l'adaptation topologique vous pouvez m'expliquez un peux plus svp

Merci

----------


## tiougare

salam,
la diffrence entre level set et les snakes, la mthode level set est un mthode appartient aux modles gomtrique, et les contours actifs appariennent aux modles paramtriques, de point de vu topologique 
de prfrence de travailler par la mthode level set qui est une quation diffrentielle,  rsoudre, par contre les contours actifs sont bass sur la minimisation d'nergie interne "dpendant de la courbe (minimisation de la longueur + minimisation de courbure" et externe dpendant de l'intensit des pixels le gradient des pixels trs important ce qui est le contour.

----------


## Abrahib

Salam,

Un modle de contour actif : un ensemble  de points mobiles et rpartis sur une courbe en deux dimensions.  Dans le cas de la segmentation, on fait voluer la courbe vers les frontires de lobjet a segmenter par des forces internes et externes.
Les forces internes dpendent des proprits de la courbe (Courbure, Longueur),
Les forces externes dpendent des caractristiques de limage (Gradient, Bruits,)
Cette mthode nest  plus utilise actuellement parce quelle prsente plusieurs limitations :

- Pas de Stabilit numrique : si des points se trouvent trs rapprochs lors de lvolution de la courbe, il serait trs difficile destimer les drives.

- Pas de changement de topologie : la courbe ne peut pas se scinder pour segmenter plusieurs objets. Pas de fusion de courbes.

Solution : LevelSet

Faire voluer la courbe de faon implicite : LevelSet
La courbe (2D) est reprsente comme le niveau zro dune surface (3D). On fait voluer la surface sous leffet dune force de telle sorte que la courbe reste toujours son niveau zero. 
La force dpend des quantits gomtriques  et des caractristiques de limage.

Segmentation par LevelSet:

1 - Dfinir une nergie qui dpend de la courbe (Frontires ou rgion internes de lobjet  segmenter)
2 - Minimiser cette nergie par rapport a la courbe : ceci conduit a une quation dvolution de la courbe : dC/dt = FN
3 - Intgrer cette quation dans une formulation LevelSet
d(Phi)/dt = F |grad(Phi)|, Phi est la fonction LevelSet
4 - Discrtiser :
d(Phi), dt, F, |grad(Phi)|
5 - Implmenter

----------


## djelouze

Bonjour, 

Je regrette, je ne peux pas laisser passer cela :




> Cette mthode nest  plus utilise actuellement parce quelle prsente plusieurs limitations :


Vu la biblio existante sur les contours actifs paramtriques bass 'snakes', c'est une norme imprudence que de dire que ceux-ci ne sont plus utiliss ! 

Premirement, 



> - Pas de Stabilit numrique : si des points se trouvent trs rapprochs lors de lvolution de la courbe, il serait trs difficile destimer les drives.


le problme de stabilit numrique vient simplement du passage de la modlisation continue du 'snake'  l'implantation discrte. Une reparamtrisation de la courbe est triviale, rapide, et rsoud le problme sans avoir recours  une dimension suprieure (cf plus loin)

Deuximement,



> - Pas de changement de topologie : la courbe ne peut pas se scinder pour segmenter plusieurs objets. Pas de fusion de courbes.


Si ne pas changer de topologie est une limitation, je peux dire de mme sur le fait que changer de topologie  tout va en est une !! Un avantage des contours actifs paramtriques explicites est donc d'avoir une topologie dfinie a priori. Un avantage des contours actifs implicites (level-set) est de ne pas en avoir. tout dpend de l'application. Si je cherche UN cercle dans une image, je ne veux pas en trouver DEUX.

De plus, plusieurs ides existent pour l'adaptation de la topologie d'un contour actif paramtrique (cf les travaux de McInerney).

Donc :



> Solution : LevelSet
> 
> Faire voluer la courbe de faon implicite : LevelSet
> La courbe (2D) est reprsente comme le niveau zro dune surface (3D). On fait voluer la surface sous leffet dune force de telle sorte que la courbe reste toujours son niveau zero.


Exactement : les level-set impliquent l'utilisation d'une fonction implicite 2D pour reprsenter une courbe 1D. D'o les problmes d'optimisation rcurrents, pour lesquels des solutions de paramtrisation de la courbe (!) ainsi qu'une recherche de solutions dans une zone restreinte autour du niveau zero (narrow band) sont proposes.

Je regrette de ne pouvoir rpondre  la question initiale - il semble que le lien donn par navhpf soit amplement suffisant pour comprendre l'implantation level-set dont je ne suis pas spcialiste. Par contre, pour des questions sur les contours actifs paramtriques, je peux m'en sortir.

----------


## hasnam3i

est ce que vous pouvez m'envoy le code de la methdes level sets implmeneter en java et merci

----------


## INFOset

slt, mon projet de fin d'tude porte sur la segmentation par les level sets, est ce que vous pouvez me donner un algorithme simple de la mthode. ::calim2::  Merci

----------


## pseudocode

> slt, mon projet de fin d'tude porte sur la segmentation par les level sets, est ce que vous pouvez me donner un algorithme simple de la mthode. Merci


Hum... le principe de l'algo en lui meme est assez simple, mais il ncessite quelques bases mathmatiques pour le comprendre et donc l'implmenter correctement.

Je conseille la lecture du papier "Distance Regularized Level Set Evolution and its Application to Image Segmentation", Li, Xu & co.

Tu peux passer directement au chapitre 3 (APPLICATION TO IMAGE SEGMENTATION) si la partie thorique des level-sets ne t'intresse pas.

----------


## INFOset

Merci pour le pdf  ::ccool:: , c vraiment gentil

----------


## INFOset

slt, je suis un peu perdu dans la mthode level set , est ce que le modle de Chan & Vese est le mme que le modle de Munford? et est ce qu'il ya deux Approches de level set "approche rgion et approche contour"? et Merci

----------


## pseudocode

> slt, je suis un peu perdu dans la mthode level set , est ce que le modle de Chan & Vese est le mme que le modle de Munford? et est ce qu'il ya deux Approches de level set "approche rgion et approche contour"? et Merci


Heu... les 2 ont une approche "rgion".

La mthode "level set" est une mthode permettant de minimiser une fonction. 

Cette fonction est gnralement une nergie qui mesure la segmentation de l'image (longueur des contours, nombre de rgions, homognit des rgions, ... ). Plus l'nergie est petite (proche de 0), plus la segmentation est idale.

----------


## INFOset

slt, l'algorithme de model Chan et Vese est comme suit:

-initialisation de phi
pour un nombre fixe d'itrations
-calcul des coefficients c1 et c2
-calcul de k (courbure)
-calcul de phi (n+1) par
phi(x,y,n+1)= phi(x,y,n)+fonction de vitesse
avec la fonction de vitesse = dirac [uk-v-lamda1(I-c1)+lamda2(I-c2)]

donc dans chaque itration on calcul phi (x,y,n+1) et on crase le phi(x,y,n).

Dans l'algorithme, Est ce qu'il y a une autre tape  de calcul d'nergie et de minimisation d'nergie?
Merci

----------


## pseudocode

> Dans l'algorithme, Est ce qu'il y a une autre tape  de calcul d'nergie et de minimisation d'nergie?
> Merci


Non, ca m'a l'air d'tre cela.

La fonction d'nergie du modele de Chan-Vese est, sauf erreur, un truc du genre :

E(Rsultat) = Longueur(Contour) + coef*Diffrence(Image,Rsultat)

o "Image" est l'image source et "Rsultat" est l'image segmente (=reconstruite). Le contour est dfini comme le niveau 0 de la fonction Phi: Contour={pixel | Phi(pixel)=0 }.

----------

