IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement d'images Discussion :

Champ GVF : coefficient mu et énergie à minimiser


Sujet :

Traitement d'images

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 31
    Points : 27
    Points
    27
    Par défaut Champ GVF : coefficient mu et énergie à minimiser
    salut les informaticiens..j'ai deux questions :primo, je lù q: " la déformation se base sur la minimisation d'une énergie!!! " c'est quoi cette énergie (pas analytiquement mais au sens sémantique) ? et comment le compilateur utilise cette dernière? que je sache , lors de l'implémentation d'un GVF, le snake se déforme sous l'influence du flux du GVF ,donc sous l'influence des 'forces' ,et dans ce contexte , tout ce blabla concernant l’énergie n'a plus sa place..secondo, j'ai donné trois valeurs différentes à mu:

    m=0: un flux proche des frontieres.
    m==0.1: un résultat optimal (une bonne diffusion sur toute la carte).
    mu=0.3 : le flux du champ diverge des contours (impossible de voir le snake converger)..pourquoi ce résultat ?..merci

  2. #2
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    Bonjour,

    salut les informaticiens..j'ai deux questions :primo, je lù q: " la déformation se base sur la minimisation d'une énergie!!! " c'est quoi cette énergie (pas analytiquement mais au sens sémantique) ?
    Comme tu le dis,la déformation se base sur la minimisation d'une énergie globale, cette énergie est composée de plusieurs énergies : Internes, Externes et énergies de contexte.

    1. L'énergie interne est indépendante du contenu de l'image, elle gère uniquement la cohésion de la forme du Snake,le choix de Kaas et ses collaborateurs s'est porté sur la subdivision de cette énergie en deux sous-énergies : l'énergie de Continuité et l'énergie de Courbure.

    1.1. L'énergie de continuité tente de rapprocher les points du Snake entre eux , ce qui revient à minimiser la variation des coordonnées curvilignes, d'où l'utilisation de la dérivée première de coordonnées curvilignes v'(s).

    1.2. L'énergie de courbure incite le snake à avoir une forme plus ou moins arrondi s'il est fermé, ou une droite s'il est ouvert, de manière à éviter les angle trop anguleux. Le principe consiste donc à minimiser la variation de la pente de la tangente en chaque point du Snake. La pente étant exprimée par la dérivée première de v(s), sa variation est donc exprimé par la dérivée seconde des coordonnées curvilignes soit v''(s).

    D'autres énergies internes peuvent être introduites telles que l'énergie d'uniformité de cette contribution, celle-ci tente de répartir les points du Snake de manière équidistante.

    2. L'énergie externe est celle qui tente de rapprocher les point du Snake vers les points "intéressants" de l'image où il s'agit généralement des points de fort gradient. Ainsi le gradient (en signe inversé) peut être considéré comme énérgie externe (à minimiser).

    3. L'énergie de contexte est une énergie facultative que l'on peut introduire selon le contexte des images à traiter, il peut s'agir par exemple de l'énergie de ballon.

    et comment le compilateur utilise cette dernière?
    Le compilateur interprète et exécute ce que tu lui demande de faire. Si ta question se porte sur l'implémentation des dérivées, elles sont généralement calculées par la méthodes des différences finies.

    Voilà, j'éspère avoir pu t'apporter quelques éclaircissements.
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    slt..ce que je ne comprends pas, c'es en programmant, on a même pas besoin de cette notion d'énergie, il suffit de créer les forces et le snake évoluera sous l'influence eds forces.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    aussi, il y a deux trucs que je ne saisie pas encore: premièrement , pour le GVF il y a ce pas de temps deta T, mais en programmation aucune trace de lui!!!, pour ce qui est de la discrétisation avec la méthode des différences finies, on utilise un pas h (distance entre points du contours ), mais j'ai vu un code où on travaille plutot avec un intervalle (dmin,dmax): si distance entre deux points du snake < dmin , supprimer un point , si distance entre deux points du snake > dmax, insérer un point !!! , et troisièmement, le coefficient mu, donne un flux de vecteur qui diverge pour une valeur supérieure à 0.2 ? pourquoi ça diverge, et pourquoi à partir de cette valeur ?

  5. #5
    Membre éprouvé Avatar de b_reda31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 899
    Points : 961
    Points
    961
    Par défaut
    slt..ce que je ne comprends pas, c'es en programmant, on a même pas besoin de cette notion d'énergie, il suffit de créer les forces et le snake évoluera sous l'influence eds forces.
    Il existe surement d'autres techniques pour faire évoluer le Snake mais dans cette contribution, le code qu'a fournit pseudocode est basé sur la minimisation de l'énergie globale :
    Code java : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    private boolean step() {
    	boolean changed=false;
    	Point p = new Point(0,0);
     
    	// compute length of original snake (used by method: f_uniformity)
    	this.snakelength = getsnakelength();
     
    	// compute the new snake
    	List<Point> newsnake = new ArrayList<Point>(snake.size());
     
    	// for each point of the previous snake
    	for(int i=0;i<snake.size();i++) {
    		Point prev = snake.get((i+snake.size()-1)%snake.size());
    		Point cur  = snake.get(i);
    		Point next = snake.get((i+1)%snake.size());
     
    		// compute all energies
    		for(int dy=-1;dy<=1;dy++) {
    			for(int dx=-1;dx<=1;dx++) {
    				p.setLocation(cur.x+dx, cur.y+dy);
    				e_uniformity[1+dx][1+dy] = f_uniformity(prev,next,p);
    				e_curvature[1+dx][1+dy]  = f_curvature(prev,p,next);
    				e_flow[1+dx][1+dy]       = f_gflow(cur,p);
    				e_inertia[1+dx][1+dy]    = f_inertia(cur,p);
    			}
    		}
     
    		// normalize energies
    		normalize(e_uniformity);
    		normalize(e_curvature);
    		normalize(e_flow);
    		normalize(e_inertia);
     
    		// find the point with the minimum sum of energies
    		double emin = Double.MAX_VALUE, e=0;
    		int x=0,y=0;
    		for(int dy=-1;dy<=1;dy++) {
    			for(int dx=-1;dx<=1;dx++) {
    				e = 0;
    				e+= alpha * e_uniformity[1+dx][1+dy]; // internal energy
    				e+= beta  * e_curvature[1+dx][1+dy];  // internal energy
    				e+= gamma * e_flow[1+dx][1+dy];       // external energy
    				e+= delta * e_inertia[1+dx][1+dy];    // external energy
     
    				if (e<emin) { emin=e; x=cur.x+dx; y=cur.y+dy; }
    			}
    		}
     
    		// boundary check
    		if (x<1) x=1;
    		if (x>=(this.width-1)) x=this.width-2;
    		if (y<1) y=1;
    		if (y>=(this.height-1)) y=this.height-2;
     
    		// compute the returned value
    		if (x!=cur.x || y!=cur.y) changed=true;
     
    		// create the point in the new snake
    		newsnake.add(new Point(x,y));
    	}
     
    	// new snake becomes current
    	this.snake=newsnake;
     
    	return changed;
    }

    si distance entre deux points du snake < dmin , supprimer un point , si distance entre deux points du snake > dmax, insérer un point !!!
    Il s'agit ici du mécanisme d'auto-adaptation du Snake qui n'a rien à voir avec le pas de discrétisation, jettes un coup d'oeil sur le code du post #1
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

Discussions similaires

  1. Énergie GVF
    Par yacine.yacine98 dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 05/08/2015, 13h57
  2. [Robotique] Explorer des points dans un ordre qui minimise la consommation d'énergie
    Par redskyns dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 10/06/2015, 17h03
  3. [MySQL] Quel type pour un champ Coefficient
    Par Amaury_35 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/08/2009, 17h29
  4. Taille des champs proportionnelle...
    Par Depteam1 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2002, 11h48
  5. taille max du nom d'un champ
    Par hna dans le forum Paradox
    Réponses: 2
    Dernier message: 28/07/2002, 02h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo