|
Publicité ' | ||||||||||||||||||||||||
|
|
#41 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Citation:
Iteration 0: u=0 v=0 Iteration 1: u=Mu*delta2(0)-(0-fx).(fx²+fy²) = fx.(fx²+fy²) ~ d( gradient² ) / dx v=Mu*delta2(0)-(0-fy).(fx²+fy²) = fy.(fx²+fy²) ~ d( gradient² ) / dy Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#42 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
J'ai mis au propre une de mes implémentations Java, si ca peut aider...
Code java :
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#43 | ||||
|
Membre expérimenté
![]() |
Citation:
![]() Citation:
Visuellement que représentent ces matrices?et comment pourrais je créer une énergie externe à minimiser à partir de u et v? J'ai affiché la matrice u calculée a partir de cette image : ![]() et voici la matrice u qui est obtenue Est normal que je n'obtienne que du "bruits"?! PS:J'ai testé le filtre de Laplace pour la même image,et voici ce que j'obtient : C'est bon vous pensez?
__________________
« 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!!» |
||||
|
|
00
|
|
|
#44 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Citation:
=> Pour un pixel de coordonée (x,y) le vecteur de flux est Flux(x,y) = ( U[x][y] , V[x][y] ) Citation:
Tu peux également favoriser les déplacement qui remontent le flux (i.e là où le produit scalaire déplacement*flux est le plus négatif). Bref plein de choix possibles.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#45 | |||||||
|
Membre expérimenté
![]() |
Citation:
Code :
J'ai testé avec une image 7*7 qui contient un point noir au centre sur un fond blanc : Code :
Or, Après avoir normalisé cette image sur [0,1],voici l'intensité du flux que j'obtient : Code :
à la rigueur les zéros qui enveloppent cette matrice je comprends ( car le traitement commence à partir de l'indice [1][1] dans l'image).Mais les valeurs à l'intérieur de cette matrice n'ont aucun sens,non ?
__________________
« 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!!» |
|||||||
|
|
00
|
|
|
#46 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
hum... je n'obtiens pas les mêmes valeurs
![]() - image de test 7x7 normalisée : 1.0 partout sauf au centre 0.0 - ITER = 25, mu=0.1 - resultat : r[x][y] = Math.sqrt(u[x][y]*u[x][y] + v[x][y]*v[x][y]) Code :
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#47 |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Le "vrai" GVF calculé sur l'image d'exemple "trefle":
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
00
|
|
|
#48 |
|
Membre expérimenté
![]() |
Il doit avoir quelque chose qui cloche dans mon code...
Merci pour tous ces renseignement ! Le GVF a été introduit pour pouvoir faire une diffusion de l'information des contours sur l'ensemble de l'image afin de pouvoir rapprocher le snake du contour et cela même s'il n'est pas situé (initialement) prés de l'objet d'intérêt(n'est ce pas ?)Mais aussi parce qu'en utilisant le gradient comme énergie externe il a été constaté que le snake ne convergeait pas vers les zones à forte concavité. Est ce que l'approximation du GVF par la carte de distance permettra de rapprocher le Snake vers les zones à forte concavité? En jouant sur les paramètres pour faire des essais,j'ai constaté que le snake convergeait difficilement vers les zones à forte concavité.Mais je pense que c'est le mécanisme d'auto-adaptation qui à permis au snake d'entrer vers zones concaves.non?
__________________
« 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!!» |
|
|
00
|
|
|
#49 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Citation:
Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#50 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 4 ![]() |
Est-ce que quelqu'un pourrait nous montrer un exemple de methode snake sous Matlab? J'en ai fort besoins pour mon projet
|
|
|
00
|
|
|
#52 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 4 ![]() |
Merci bcp,b_reda
|
|
|
00
|
|
|
#53 |
|
Membre expérimenté
![]() |
Bonjour,
Il y a une question qui me trotte la tête dont je n'arrive à trouver la réponse. Pour résumer, on a l'énergie interne qui gère la cohésion du contour et on a l'énergie externe qui tente de rapprocher ce contour vers l'objet d'intérêt dans l'image. L'énergie interne peut être décomposée en deux énergies :l'énergie de courbure et l'énergie de continuité: Energie interne = Alpha *||v'(s)||² + Beta *||v''(s)||² Tel que V(s) représente les coordonnées du point s dans le Snake. D'un point de vu analytique : L'énergie de continuité dépend de la dérivée des coordonnées des points du Snake.Minimiser cette énergie revient à minimiser la Variation des coordonnées entre elles, soit donc rapprocher les points. Mais pour l'énergie de courbure,j'admet être un peu perdu cette énergie va tenter pour chaque point du Snake de maximiser l'angle formé entre ce point ,son successeur et son prédécesseur...Je ne comprend pas pourquoi utiliser la seconde dérivée pour ça!La seconde dérivée a t elle un rapport avec la variation de la tangente ou quelque chose du genre?j'avoue avoir oublié quelques notions fondamentales en analyse.
__________________
« 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!!» |
|
|
00
|
|
|
#54 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Citation:
v'(s) représente la variation des points de la courbe (abcisse curviligne) => un vecteur tangeant au déplacement s. La courbure représente géometriquement la variation de ce vecteur tangeant v'(s) par rapport au déplacement s, donc c'est d(v'(s))/ds = v"(s)
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
00
|
|
|
#55 | |
|
Membre expérimenté
![]() |
Citation:
__________________
« 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!!» |
|
|
|
00
|
|
|
#56 |
|
Membre expérimenté
![]() |
Bonjour,
En essayant de faire un résumé de cette méthode (Snake), je suis tombé sur un gros problème concernant toujours l’énergie de courbure. Dans le schéma suivant j’illustre les déplacements possibles du point P4 de coordonnées (5,1), en considérant seulement l’énergie de Courbure. L’origine est en bas à gauche. ![]() En appliquant les différences finies pour la seconde dérivée ( au carré), l’énergie de courbure s’exprimera par : ( Xi-1 - 2*Xi + Xi+1 )² + ( Yi-1 - 2* Yi +Yi+1 | )² J’ai calculé ces énergies pour tous les voisins de P4 (Ce dernier y compris) avec une fenêtre 3X3, afin de déterminer quel serait le déplacement optimal qui minimiserait l’énergie. Les résultats des calculs sont dans la sous-matrice (Zoom sur P4) Hélas je ne comprends vraiment ces résultats : Pour les 3 voisins au-dessus de P4, ne devons nous pas obtenir la même valeur d’énergie ?!! car chacun des 3 voisin formera une ligne droite (180°) avec le successeur et prédécesseur (P3 et P5) . Par ailleurs je ne comprends pas aussi pourquoi la valeur d’énergie du voisin au-dessous de P4, cette valeur devrai être supérieure à l’énergie de P4 car l’angle va s’accentuer La formule de différence finie que j’ai cité est elle correcte ?En ajoutant des valeurs absolues aux différence des x et de cette manière (| Xi-1 - Xi | + |Xi+1 – Xi | )² + (| Yi-1 - Yi | + |Yi+1 – Yi | )² Cela permettrait de rendre les résultats plus cohérents, mais je ne peux citer cette formule dans mon résumé à moins qu’elle existe.
__________________
« 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!!» |
|
|
00
|
|
|
#57 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Citation:
C'est donc normal que le point au dessus de P4 soit le meilleur car a la fois: - il diminue l'angle entre les vecteurs - il maintient le ratio (grandeur a gauche)/(grandeur a droite) Citation:
Ce point a pour energie 16 et pas 4: E.x = (0 - 2*5 + 10)² = 0 E.y = (2 - 2*0 + 2)² = 16
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#58 | ||
|
Membre expérimenté
![]() |
Citation:
Citation:
![]()
__________________
« 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!!» |
||
|
|
00
|
|
|
#59 | |||
|
Membre expérimenté
![]() |
Bonjour,J'ai une petite question concernant la normalisation des énergies
Citation:
Si oui,est ce que ça reviendrait au même de diviser chaque sous-matrice d'énergie par sa plus grande valeur? Bien entendu les valeur ne seront pas les mêmes mais les "proportions" entre énergies seront conservées.
__________________
« 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!!» |
|||
|
|
00
|
|
|
#60 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Citation:
Citation:
Dans ton cas, ca voudrait dire utiliser la distance Linfinie = max(abs(x)). Je n'ai jamais testé. Dans mon code j'utilise la distance L1 = sum(abs(x))
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
Copyright © 2000-2013 - www.developpez.com