+ Répondre à la discussion
Page 6 sur 8 PremièrePremière ... 2345678 DernièreDernière
Affichage des résultats 101 à 120 sur 147
  1. #101
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par co2gaz Voir le message
    Bonjour pseudocode,
    J'ai une petite question concernant cette fonction:

    f_uniformity(Point prev, Point next, Point p)

    il n'y a que deux points qui sont utilisés. Est ce qu'on peut utiliser les 3 points pour avoir plus de robustesse.
    Merci
    Bien sur. On peut utiliser toutes les énergies que l'on souhaite. C'est tout l'avantage du Snake.

    Pour ma part, j'ai pris des formules d'énergies assez simplistes dans mon exemple. Libre a chacun de les améliorer.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  2. #102
    Futur Membre du Club
    Inscrit en
    octobre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 51
    Points : 19
    Points
    19

    Par défaut

    encore une toute dernière questions sur ce code...
    Sur quelle théorie s'appuie le calcule de la courbure ? je n'arrive pas bien à saisir le sens des calculs..
    Merci !

  3. #103
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par galadorn Voir le message
    encore une toute dernière questions sur ce code...
    Sur quelle théorie s'appuie le calcule de la courbure ? je n'arrive pas bien à saisir le sens des calculs..
    Merci !
    Oui, j'avoue que c'est assez étrange comme formule. Je ne me souviens plus trop comment j'en suis arrivé là, mais ca ne doit pas être très orthodoxe.

    Ca ressemble à une dérivée seconde discrète, avec des points de sampling non uniforme.

    http://fr.wikipedia.org/wiki/Dérivée_seconde_discrète
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #104
    Futur Membre du Club
    Inscrit en
    octobre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 51
    Points : 19
    Points
    19

    Par défaut

    hehe merci !
    Sinon je me disait aussi que l'énergie de courbure pouvait être approchée par la distance que fait le point par rapport au barycentre des points de son voisinage (donc le milieu du segment Pprev et Pnext dans le cas de la 2D). Mais il reste quelque chose qui me chiffonne dans cette faàon d'exprimer l'énergie de courbure : si le point P est situé sur le segment, mais pas au milieu, l'énergie de courbure voudra le faire déplacer vers le milieu du segment, alors que sa courbure sera nulle. Donc si elle est calculée comme ça, son effet accentuera l'effet de l'énergie de continuité, ce que je ne veux pas vraiment.

  5. #105
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par galadorn Voir le message
    Mais il reste quelque chose qui me chiffonne dans cette faàon d'exprimer l'énergie de courbure : si le point P est situé sur le segment, mais pas au milieu, l'énergie de courbure voudra le faire déplacer vers le milieu du segment, alors que sa courbure sera nulle. Donc si elle est calculée comme ça, son effet accentuera l'effet de l'énergie de continuité, ce que je ne veux pas vraiment.
    Oui, c'est vrai. Cette énergie n'est pas vraiment de la pure "courbure".

    Au départ, si je me souviens bien, j'avais fait une énergie basée sur l'angle entre les 2 segments (enfin son cosinus, via le produit scalaire). Je ne sais pas trop pourquoi j'ai changé d'idée.

    Sinon, il reste le 'vrai' calcul de la courbure : http://en.wikipedia.org/wiki/Curvatu...al_expressions
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #106
    Futur Membre du Club
    Inscrit en
    octobre 2007
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 51
    Points : 19
    Points
    19

    Par défaut

    oki thanks !
    je penserai a dresser une statue a ton effigie, ton code m'a beaucoup aidé ^^

  7. #107
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par galadorn Voir le message
    oki thanks !
    je penserai a dresser une statue a ton effigie, ton code m'a beaucoup aidé ^^
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #108
    Invité de passage
    Inscrit en
    avril 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : avril 2010
    Messages : 2
    Points : 2
    Points
    2

    Par défaut Petite question

    Bonjour Pseudocode, je n'ai pas compris l'expression suivante qui était située dans la step() de ta contribution. Pourrais tu brievement me l'expliquer?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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; }
    			}
    		}
    J'ai lu toutes la discussion et j'ai pas trouvé, ou c'est que j'ai des problèmes en java .
    Merci d'avance pseudocode .
    PS: Merci pour ta contribution m'a permis de mieux comprendre le fonctionnement des snakes et leurs implémentations.

  9. #109
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par polasky Voir le message
    Désolé, j'ai mal formulé ma question. Je voulais parler dans le code, à quoi correspond Double.MAX_VALUE?? Sinon tout est clair, j'ai compris les principes en majeure partie grâce à cette discussion.

    PS: Après cela je vais effacer mes posts pour ne pas polluer la discussion.
    Ah. C'est juste une astuce a deux balles pour initialiser la valeur de "emin" au premier passage dans la boucle.

    Vu que "emin" est un type double, je n'ai pas de moyen de dire qu'il est "non initialisé" par défaut. En le forcant à une valeur "infinie", je suis sur que la première comparaison "if (e<emin)" sera vraie, et donc que emin sera initialisée avec la valeur de "e"
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #110
    Invité de passage
    Inscrit en
    avril 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : avril 2010
    Messages : 2
    Points : 2
    Points
    2

    Par défaut

    Ok, je vois.
    Encore merci, pour la spontanéité de tes réponses et pour toutes les explications précedentes.

  11. #111
    Nouveau Membre du Club
    Profil pro
    Inscrit en
    mai 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : mai 2008
    Messages : 46
    Points : 25
    Points
    25

    Par défaut

    Bonjour à tous,
    J'ai essayé d'adapter cette source pour faire du tracking dans des videos mais je n'y arrive pas.
    Quelqu'un aurait il une idée?
    Merci

  12. #112
    Nouveau Membre du Club
    Profil pro
    Inscrit en
    mai 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : mai 2008
    Messages : 46
    Points : 25
    Points
    25

    Par défaut

    Bonjour Pseudocode,

    Est ce que c'est possible de m'expliquer le choix de ces coefs (me donner un lien).
    // precomputed Uniform cubic B-spline for t=0.5
    double c0=0.125/6.0, c1=2.875/6.0, c2=2.875/6.0, c3=0.125/6.0;

    j'ai vu partout sur le web, que pour une interpolation cubique, on utilise les points eux même pour déterminer ces 4 coefs d'un polynôme de degré 3.


    Merci

  13. #113
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par co2gaz Voir le message
    Bonjour Pseudocode,

    Est ce que c'est possible de m'expliquer le choix de ces coefs (me donner un lien).
    // precomputed Uniform cubic B-spline for t=0.5
    double c0=0.125/6.0, c1=2.875/6.0, c2=2.875/6.0, c3=0.125/6.0;

    j'ai vu partout sur le web, que pour une interpolation cubique, on utilise les points eux même pour déterminer ces 4 coefs d'un polynôme de degré 3.


    Merci
    Comme indiqué, ce sont les coefficients d'une B-splines cubique uniforme pour t=0.5



    c0 = [0.5^3 0.5^2 0.5 1].1/6.[-1 3 -3 1] = (0.125*-1 + 0.25*3 + 0.5*-3 + 1)/6 = 0.125/6
    c1 = [0.5^3 0.5^2 0.5 1].1/6.[3 -6 0 4] = (0.125*3 + 0.25*-6 + 0.5*0 + 4)/6 = 2.875/6
    c2 = [0.5^3 0.5^2 0.5 1].1/6.[-3 3 3 1] = (0.125*-3 + 0.25*3 + 0.5*3 + 1)/6 = 2.875/6
    c3 = [0.5^3 0.5^2 0.5 1].1/6.[1 0 0 0] = (0.125*1 + 0.25*0 + 0.5*0 + 0)/6 = 0.125/6
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  14. #114
    Nouveau Membre du Club
    Profil pro
    Inscrit en
    mai 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : mai 2008
    Messages : 46
    Points : 25
    Points
    25

    Par défaut

    Merci,

  15. #115
    Membre chevronné
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2004
    Messages : 821
    Points : 675
    Points
    675

    Par défaut

    Désolé si je re-re-re-déterre cette discussion qui commence à dater un peu, mais il faut bien avouer que parmi l'ensemble de forums et d'articles que j'ai lu sur le sujet, c'est le seul qui m'a permis de comprendre vraiment ce que je fais...

    Je cherche à faire de la détection d'objets de la façon suivante :
    - l'utilisateur dessine un cercle (ou un rectangle ou autre) autour de l'objet
    - un algorithme à base de contours actifs vient le "coller" à l'objet

    Mon problème est que les objets peuvent être
    - relativement "grands" : 200px par 200px environ
    - plutôt "petits" : 10 pixels par 10 pixels environ

    Un "grand" objet ne me pose à priori pas de soucis... par contre, pour obtenir un contour intéressant sur un petit objet, il faudrait que l'écart entre les points du snake soit de 1 pixel, voir moins pour que le snake puisse en suivre vraiment le contour.

    Est-ce que cette contrainte est compatible avec la méthode décrite dans cette discussion ?

    Comment choisir "intelligemment" le nombre de points initial du snake en fonction de la taille du contour initial entré par l'utilisateur ?

    Comment choisir "intelligemment" la distance entre ces points (distance à partir de laquelle on ajoute un point) ?

    Et question subsidiaire : (pour un grand objet)

    Est-ce qu'il est envisageable de commencer le snake avec des points "écartés" et de réduire cet écart (pour ajouter plus de points) au fur et à mesure des itérations (et donc que l'on se rapproche de l'objet) afin d'avoir un contour "plus fin" ?

    Merci !

  16. #116
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par buzzkaido Voir le message
    Un "grand" objet ne me pose à priori pas de soucis... par contre, pour obtenir un contour intéressant sur un petit objet, il faudrait que l'écart entre les points du snake soit de 1 pixel, voir moins pour que le snake puisse en suivre vraiment le contour.

    Est-ce que cette contrainte est compatible avec la méthode décrite dans cette discussion ?
    A priori oui. Quoique des methodes comme les Level-Set seraient peut-être mieux adaptées, en particulier s'il y a plusieurs objets dans la zone, ou s'ils comportent des trous.

    Sinon il est tout a fait possible de faire un snake initial avec des points tous les 1 pixels et de les "fusionner" (ou au contraire d'en ajouter) suivant les contractions (dilatations) du snake. C'est d'ailleurs ce que j'ai fait dans mon code.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  17. #117
    Membre chevronné Avatar de b_reda31
    Homme Profil pro Réda Bentata
    Étudiant
    Inscrit en
    avril 2007
    Messages
    594
    Détails du profil
    Informations personnelles :
    Nom : Homme Réda Bentata
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2007
    Messages : 594
    Points : 624
    Points
    624

    Par défaut application de l'algorithme dans un volume

    Bonjour,

    Dans le cadre de mes étude, je travaille actuellement sur des volumes cérébraux. Dans certain cas je voudrai isoler une pathologie (tumeur ou kyste) présente dans le volume, je me suis donc tout de suite retourné vers l'algorithme du Snake.
    J'ai fais quelques recherches sur son application en 3D (Volume), j'ai constaté que dans ce cas le snake est généralement représenté par un maillage...

    J'avais cependant penser à une autre approche , bien qu'elle soit certainement plus couteuse, elle me serait plus facile à implémenter (malheureusement,je suis un peu limité en temps) :

    - L'utilisateur se positionne d'abord approximativement sur la coupe où la pathologie est "discernable".
    - Il initialise le contour (2d) puis lance le processus.
    - Le contour final (après convergence) serai alors le contour initiale des coupes (suivante et précédente) -je suppose ici que le contour ne doit pas changer brusquement d'une coupe à sa voisine-
    - arrêter le processus (passage d'une coupe à une autre) à la coupe dont la surface (en pixel) est inférieure à un certain seuil ou après un certain nombre max d'itérations.

    Avant de me lancer vers cette implémentation, j'aurai aimer avoir vos suggestions.

    Merci d'avance.
    « 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!!»

  18. #118
    Membre chevronné
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2004
    Messages : 821
    Points : 675
    Points
    675

    Par défaut

    Je te conseille la bibliotheque "ITK" : fonctionne tres bien, simple à prendre en main si on prend le temps de suivre 2-3 exemples, et il y a les alos dejà tout fait pour extraire un volume 3D a partir de plans de coupe.

    http://www.itk.org/

    (en plus, c'est LGPL)

  19. #119
    Membre chevronné Avatar de b_reda31
    Homme Profil pro Réda Bentata
    Étudiant
    Inscrit en
    avril 2007
    Messages
    594
    Détails du profil
    Informations personnelles :
    Nom : Homme Réda Bentata
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2007
    Messages : 594
    Points : 624
    Points
    624

    Par défaut

    Merci pour cette suggestion et désolé du retard!
    Cette biblio a l'air super, cependant je ne suis pas parvenu à l'integrer à C++ Builder, je pense d'ailleurs que cela n'est pas possible.

    Je vais tenter d'implémenter l'approche que j'avais décrit en vous tenant au courant des résultats...
    « 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!!»

  20. #120
    Membre chevronné
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2004
    Messages : 821
    Points : 675
    Points
    675

    Par défaut

    Si C++ Builder sait compiler du C++, ce dont je ne doute pas, c'est possible. Suffit de recompiler.

    Pour plus d'infos, inscrit-toi à leur mailing-list et poses-y tes questions, y'a des gens très compétents et sympas qui la fréquente.

    Vu le boulot de déjà fait dans ITK, ce serait dommage de ne pas en profiter

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •