Bonjour tous le monde;

Je suis entrain de programmer un logiciel pour segmenter une image à l'aide de la méthode des ensembles de niveaux (Level Sets); et pour cela j'utilise comme fonction distance "phi" un cercle (contour initial).

j'ai ecrit ce petit programme:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Initialisation de la matrice "Phi"
 
// choix du centre
float x0=76;
float y0=91;
// choix du rayon
float R=10;
 
 
// dessiner le cercle
 
for(int i=0;i<H;i++)
  for(int j=0;j<W;j++)
    {
    phi[i][j]=sqrt(((x0-j)*(x0-j))+((y0-i)*(y0-i)))-R;
    }
Avec le Matlab tous marche bien; j'ai eu un cercle bien dessiner, tel que avec l'utilisation de l'équation du cercle j'aurai des distance négatifs à l'intérieur du cercle et positifs à l'extérieur et le "zéro" sera pour les pixels qui appartient aux cercle => c'est mon but.

mais le problème, comme "i" et "j" sont des entier et la matrice phi,x0,y0 sont des "float" on aura pas un 0 dans tous les points du cercle, peut être on trouve 0.000001 mais pas un 0.

alors comment on résout ce problème es qu'on change "float " ou int ou ...je ne sais pas...

Merci de bien vouloir répondre