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

Contribuez Discussion :

[image] Snake (contour actif)


Sujet :

Contribuez

  1. #61
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par haloumg Voir le message
    bonjour,
    merci pour votre repense pour centre de gravité il marche bien.
    j'ai un petit probleme concernant contour,si j'ai plus qu'un objet dans l'image le contour detecte tous les objets.
    comment je peux faire pour l'adapter a un seul objet de l'image.
    merci d'avance
    Un snake ne délimite qu'un seul objet. Donc les choix sont limités:

    - Ne pas utiliser les Snakes

    - Segmenter l'image en images plus petites qui ne contiennent qu'un seul objet.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  2. #62
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Bonsoir,

    IL y a un code java pour faire la Segmentation en régions ????

    Question : Comment réalise cette deux étape s.v.p
    - Colorée l'intérieur du contour a la fin de la segmentation ?
    - l'initialisation du contour en rectangle (largeur et l’hauteur de l’image) ?

  3. #63
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par hk0006 Voir le message
    Bonsoir,

    IL y a un code java pour faire la Segmentation en régions ????
    Il y a du code Java dans ImageJ pour faire de la segmentation. Il y en a aussi dans JAI si je me souviens bien.

    Question : Comment réalise cette deux étape s.v.p
    - Colorée l'intérieur du contour a la fin de la segmentation ?
    Il te faut un algo de remplissage de polygones. On en a déjà parlé sur le forum.

    - l'initialisation du contour en rectangle (largeur et l’hauteur de l’image) ?
    public Snake(int width, int height, int[][] gradient, int[][] flow, Point... points)

    Le dernier paramètre du constructeur est la liste des points du snake. Tu peux les positionner comme tu veux.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #64
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for (int i = 0; i < circle.length; i++) {
     
    double x = (W / 2 + 0) + (W / 2 - 2) * Math.cos((6.28 * i) / circle.length);
    double y = (H / 2 + 0) + (H / 2 - 2) * Math.sin((6.28 * i) / circle.length);
    circle[i] = new Point((int) x, (int) y);
     
            }

    L’initialisation de ce code est un cercle, j'ai besoin que l'initialisation est un rectangle de largeur et l’hauteur égale à l'image


    et merci ...

  5. #65
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Un truc comme ca ?
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int MARGIN=8, STEP=16;
    List<Point> points = new ArrayList<Point>();
    for(int x=MARGIN;x<W-MARGIN;x+=STEP) points.add(new Point(x,MARGIN));
    for(int y=MARGIN;y<H-MARGIN;y+=STEP) points.add(new Point(W-MARGIN,y));
    for(int x=W-MARGIN;x>MARGIN;x-=STEP) points.add(new Point(x,H-MARGIN));
    for(int y=H-MARGIN;y>MARGIN;y-=STEP) points.add(new Point(MARGIN,y));
     
    Point[] rectangle = new Point[points.size()];
    points.toArray(rectangle);
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #66
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut La Force Interne
    Je vous remercie, Monsieur pseudocode, pour cette illustration, J'ai lu tout ce débat sur les contours actifs, il est vraiment m'aidé beaucoup
    J'ai quelques questions concernant la force interne.

    Le code pour calculer la force continuité et la force courbure
    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
     
    private double f_uniformity(Point prev, Point next, Point p) {
     
    	// length of previous segment
    	double un = distance2D(prev, p);
     
    	// mesure of uniformity
    	double avg = snakelength/snake.size();
    	double dun = Math.abs(un-avg);
     
    	// elasticity energy
    	return dun*dun;
    }
     
    private double f_curvature(Point prev, Point p, Point next) {
    	int ux = p.x-prev.x;
    	int uy = p.y-prev.y;
    	double un = Math.sqrt(ux*ux+uy*uy);
     
    	int vx = p.x-next.x;
    	int vy = p.y-next.y;
    	double vn = Math.sqrt(vx*vx+vy*vy);
     
    	if (un==0 || vn==0) return 0;
     
    	double cx = (vx+ux)/(un*vn);
    	double cy = (vy+uy)/(un*vn);
     
    	// curvature energy
    	double cn = cx*cx+cy*cy;
    	return cn;
    }

    Le code est écrit pour les contours actifs fermer,
    Ma question est dans le cas des contours actifs ouvert,
    Est-ce qu'on met la force continuité = 0 pour le 1er point
    Et la force coubure =0 pour le 1er et le dernier point?
    Puisque dans le cas d'un contour actif ouvert il n'y a pas de précédent pour le premier point; et il n'y a pas le point suivant pour le dernier point.
    MERCI D'avance Mr PseudoCode

  7. #67
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Faudel24000 Voir le message
    Le code est écrit pour les contours actifs fermer,
    Ma question est dans le cas des contours actifs ouvert,
    Est-ce qu'on met la force continuité = 0 pour le 1er point
    Et la force coubure =0 pour le 1er et le dernier point?
    Puisque dans le cas d'un contour actif ouvert il n'y a pas de précédent pour le premier point; et il n'y a pas le point suivant pour le dernier point.
    MERCI D'avance Mr PseudoCode
    Je n'ai pas testé le cas des contours ouverts mais ca me semble une bonne idée de mettre ces deux énergies à 0 pour le premier et le dernier point.

    Il faudra également modifier le mécanisme d'auto-adaptation si vous comptez l'utiliser car le calcul utilise le fait que la courbe est fermée.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #68
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    51
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    Bonsoir
    j'ai besoin de cet algorithme malheureusement je travaille sur matlab ;je ne sais pas si il y' a un moyen pour faire la liaison de matlab et java et je ne sais pas vraiment comment exécuter cet algorithme dans le netbeans???
    si vous pouvez m'indiquez la procédure de l'exécuter j'en serais reconnaissante
    merci

  9. #69
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par aichaeside Voir le message
    Bonsoir
    j'ai besoin de cet algorithme malheureusement je travaille sur matlab ;je ne sais pas si il y' a un moyen pour faire la liaison de matlab et java
    Je ne connais pas assez Matlab pour être sur, mais ca m'étonnerait qu'on puisse faire faciliement une interop Matlab/Java. D'un autre coté, je suis certain qu'on doit pouvoir trouver sur le net une implémentation des "Contours Actifs" en matlab.

    et je ne sais pas vraiment comment exécuter cet algorithme dans le netbeans??? si vous pouvez m'indiquez la procédure de l'exécuter j'en serais reconnaissante
    Il y a un fichier "*.jar" dispo dans le post #2. Il suffit de le télécharger et de l'executer (double-clic si java est installé).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #70
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Je ne connais pas assez Matlab pour être sur, mais ca m'étonnerait qu'on puisse faire faciliement une interop Matlab/Java.
    Si si => http://www.mathworks.com/support/sol...n=1-179EJ&BB=1

    Citation Envoyé par pseudocode Voir le message
    je suis certain qu'on doit pouvoir trouver sur le net une implémentation des "Contours Actifs" en matlab.
    Par exemple => 2D/3D image segmentation toolbox
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  11. #71
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Ah. C'est donc possible a condition d'avoir du code Java 1.3.x. Le problème c'est que le code actuel nécessite Java 1.5 minimum (utilisation des generics).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #72
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Ah. C'est donc possible a condition d'avoir du code Java 1.3.x. Le problème c'est que le code actuel nécessite Java 1.5 minimum (utilisation des generics).
    Non... c'est juste que le lien pointe vers une solution pour une vieille version de MATLAB.

    Par exemple sous MATLAB R2008b (sortie en octobre 2008) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Java VM Version: Java 1.6.0_01
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  13. #73
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par ghorbel Voir le message
    Excusez moi de poser des questions qui seront peut etre naives mais je suis débutante en java et traitement d'image et je dois développer dans 7 jours qui me reste l'algorithme des contours active (snake) sur des contours ouverts pour détecter la ligne médiane qui divise les deux lobes.
    L'image "h.jpg" de la pièce jointe est l'image initial.et l'image "h1.jpg" et l'image que cherche à avoir sachant que j'ai qq point appartenant à cette ligne.
    Est ce que vous pouvez SVP?
    merci d'avance
    Bonjour,

    Pour obtenir un snake ouvert j'ai changé la méthode Step() pour ne pas tenir compte des énergies internes dans le cas du premier et dernie point du snake.

    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
     
    // find the point with the minimum sum of energies
                        double emin = Double.MaxValue, e = 0;
                        int x = 0, y = 0;
                        for (int dy = -1; dy <= 1; dy++)
                        {
                            for (int dx = -1; dx <= 1; dx++)
                            {
                                if ((i == 0) || (i == snake.Count - 1))
                                {
                                    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
     
                                }
                                else
                                {
                                    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; }
                            }
                        }


    Ce calcul me donne un bon Résultat sauf que la Méthode rebuild(int space) Reconstruit le snake et redonne une snake fermé.
    - Comment dois je procéder pour modifier cette méthode et garder un snake ouvert??
    - Est ce que vous pouvez m'expliquer comment procède cette méthode. car franchement j'ai du mal à la comprendre?
    Merci.

  14. #74
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par smaouiomar Voir le message
    - Est ce que vous pouvez m'expliquer comment procède cette méthode. car franchement j'ai du mal à la comprendre?
    Cette méthode effectue un resampling uniforme du snake. C'est à dire qu'on calcule la position de N points "uniformément espacés" sur la courbe du snake. Pour cela, on procède en deux étapes:

    1. Pour chaque point "i" du du snake actuel, on calcule la distance totale depuis le point de départ jusqu'au point "i".

    (cf. la 1ere boucle for() )

    2. On calcule la position "idéale" du point "i" dans le nouveau snake, c'est à dire le point qui est a la distance (i/snake.size())*taille_totale. Bien sur, cette position idéale tombe souvent "entre deux points" du snake actuel. Pour calculer au mieux cette position, on fait une interpolation (spline cubique)

    (cf. la 2nde boucle for() )

    Ce calcul me donne un bon Résultat sauf que la Méthode rebuild(int space) Reconstruit le snake et redonne une snake fermé.
    - Comment dois je procéder pour modifier cette méthode et garder un snake ouvert??
    Dans la 1ere boucle, on calcule la distance entre le point "cur" et le point "next". On considère la courbe comme fermée, donc le point "next" du dernier point est en fait le 1er point. Ce qui est codé en utilisant l'opérateur modulo :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    Point next  = snake.get( (i+1)%snake.size() );

    Pour simuler une courbe ouverte, il suffit de dire que le point "next" du dernier point n'existe pas... ou, plus simplement, qu'il est confondu avec le dernier point.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    Point next  = snake.get( Math.min(i+1,snake.size()-1) );


    De meme dans la deuxième boucle, on utilise 4 points consécutifs et à nouveau on utilise un modulo pour considèrer la boucle fermée:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Point prev  = snake.get((i+snake.size()-1)%snake.size());
    Point cur   = snake.get(i);
    Point next  = snake.get((i+1)%snake.size());
    Point next2  = snake.get((i+2)%snake.size());

    On peut également utiliser la meme astuce que précédemment pour simuler une courbe ouverte:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Point prev  = snake.get( Math.max(i-1,0) );
    Point cur   = snake.get(i);
    Point next  = snake.get( Math.min(i+1,snake.size()-1) );
    Point next2  = snake.get( Math.min(i+2,snake.size()-1) );
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  15. #75
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    On peut également utiliser la meme astuce que précédemment pour simuler une courbe ouverte:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Point prev  = snake.get( Math.min(i-1,0) );
    Point cur   = snake.get(i);
    Point next  = snake.get( Math.min(i+1,snake.size()-1) );
    Point next2  = snake.get( Math.min(i+2,snake.size()-1) );


    Merci énormément pour votre réactivité
    Juste une petite remarque pour le point prev il faut prendre le Math.max(i-1,0).

  16. #76
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par smaouiomar Voir le message
    Merci énormément pour votre réactivité
    Juste une petite remarque pour le point prev il faut prendre le Math.max(i-1,0).
    Effectivement. J'ai corrigé.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  17. #77
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    désolé de ressortir ce topic, je ne sais pas si je dois en ouvrir un autre ou continuer sur celui-ci, vu que ma question a un rapport très étroit avec ce topic ^^
    Tout d'abord un grand merci pour ce code qui m'a été énormément utile.
    Je travail sur un volume d'image IRM, et mon but et de segmenter une tumeur cérébrale.
    J'ai donc utilisé ce code pour effectuer un snake sur chaque coupes de la tumeur, et je voudrais à présent travailler directement "en 3D".
    Avez vous des sources pour implémenter ce snake ? ou des idées pour généraliser ce code a la 3D ?

    Merci d'avance, et longue vie a ce forum qui m'a sauvé la vie plus d'une foie :p

  18. #78
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par galadorn Voir le message
    J'ai donc utilisé ce code pour effectuer un snake sur chaque coupes de la tumeur, et je voudrais à présent travailler directement "en 3D".
    Avez vous des sources pour implémenter ce snake ? ou des idées pour généraliser ce code a la 3D ?
    Le principe est le même, quel que soit le nombre de dimension:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Créer un snake initial ( 2D:courbe/polygone, 3D:surface/maillage)
    Tantque nonconvergence
        Pour chaque point du snake
            Calcul des energies dans le voisinage du point ( 2D: voisins 3x3, 3D: voisins 3x3x3) en utilisant les formules d'énergie (2D/3D)
            Déplacer le point vers le minimum d'energie
        Fin Pour
    Fin Tantque
    Le mécanisme d'autoadaptation que j'ai rajouté dans mon implémentation peut aussi etre étendu à la 3D.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  19. #79
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 38
    Points
    38
    Par défaut
    merci, je vais donc fouiller dans cette direction.

  20. #80
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/09/2012, 08h07
  2. Réponses: 1
    Dernier message: 06/05/2011, 16h16
  3. Snake : contours actifs
    Par gilsub dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 24/04/2011, 13h15
  4. [Débutant] Snake (contour actif) pour les images
    Par ikrame dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/01/2011, 11h33

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