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 :

Detection et correction d'intersection dans un contour


Sujet :

Traitement d'images

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 32
    Points : 19
    Points
    19
    Par défaut Detection et correction d'intersection dans un contour
    Hello, dans le cadre de mon projet je dois segmenter un tumeur dans une images et pour cela j'utilise un snake

    Malheureusement dans la déformation de ce snake il arrive des croisements / intersection du contour. Connaissez vous une méthode qui permettent de modifier cela ?

    Voila un exemple :
    Avant déformation

    après deformation

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    Citation Envoyé par Wyfrel
    Malheureusement dans la déformation de ce snake il arrive des croisements / intersection du contour. Connaissez vous une méthode qui permettent de modifier cela ?
    - Je ne suis pas sûr que ce que tu cherches soit direcement implentable dans tes snakes. Recherche plutôt des algos d'intersections de segments et appliques les sur l'ensemble de tes points.
    - Ton snake a l'air mal initialisé, il se place plutôt mal sur le bord.
    -> utilises un fonction d'énergie de type variance.
    -> utilises un fonction d'énergie de type gradient.
    -> Les snakes connaissent de gros soucis d'initialisation, les levelset sont beaucoup plus stables.
    - On vient de me conseiller dans un poste, un bibliothèque nommée ITK, qui possède les snakes, levelset et des méthodes de segmentation de tumeur et autres cellules, ça peut peut être t'intéressé.

    En quel langage as tu développé tes snakes ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Pourquoi ne pas simplement tester successivement chaque point en éliminant les points situés à l'intérieur du polygone ?

    Le sujet "point à l'intérieur d'un polygone" a souvent été traité sur ce forum.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par ToTo13
    Bonjour,



    - Je ne suis pas sûr que ce que tu cherches soit direcement implentable dans tes snakes. Recherche plutôt des algos d'intersections de segments et appliques les sur l'ensemble de tes points.
    C'est exactement ce que je cherche tu sait m'aider ?
    - Ton snake a l'air mal initialisé, il se place plutôt mal sur le bord.
    -> utilises un fonction d'énergie de type variance.
    -> utilises un fonction d'énergie de type gradient.
    J'utilise un sanke avec comme énergie un GVF, et c'est la mieu que je puisse avoir.
    -> Les snakes connaissent de gros soucis d'initialisation, les levelset sont beaucoup plus stables.
    Un level-set je connais pas bien tu sais me renseigner un algorithme clair ?

    - On vient de me conseiller dans un poste, un bibliothèque nommée ITK, qui possède les snakes, levelset et des méthodes de segmentation de tumeur et autres cellules, ça peut peut être t'intéressé.
    Je dois malheureusement utiliser la bibliothèque mitk chinoise (www.mitk.net) qui ne contient pas de snake.

    En quel langage as tu développé tes snakes ?
    Le projet c'est du c++ sous Visual 6.0

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,

    Pourquoi ne pas simplement tester successivement chaque point en éliminant les points situés à l'intérieur du polygone ?

    Le sujet "point à l'intérieur d'un polygone" a souvent été traité sur ce forum.
    J'ai pas compris là ...

    Je connais mon polygone car j'ai la liste des points qui sont les uns à la suites des autres comment définir les points plus intérieurs ...

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    tu trouveras ton bonheur (si tu lis l'anglais) ici :

    http://www.faqs.org/faqs/graphics/algorithms-faq/ question

    1.03: How do I find intersections of 2 2D line segments?

    Tu prends un segment du polygone et tu vérifies si il intersecte les suivants, etc...

    J'ai l'algo, mas ce serait mieux si tu le trouvais (basé sur l'équation donnée dans le lien)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    j'ai déjà rencontré ce genre d'algo implémenté en faisant des recherches sur le web. Tu devrais pouvoir retrouver sans aucuns problèmes.
    Cela fait parti de l'algorithmique géométrique.

    Pour les levelset, je n'ai pas fait personnellement, mais je sais qu'au niveau recherche, les snakes sont délaissés au profit des levelset.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par souviron34
    tu trouveras ton bonheur (si tu lis l'anglais) ici :

    http://www.faqs.org/faqs/graphics/algorithms-faq/ question

    1.03: How do I find intersections of 2 2D line segments?

    Tu prends un segment du polygone et tu vérifies si il intersecte les suivants, etc...

    J'ai l'algo, mas ce serait mieux si tu le trouvais (basé sur l'équation donnée dans le lien)

    Ok pour l'algorithme je vois comment tu veux faire... mais une fois que je connais deux segments qui se croisent et même le point d'intersection, comment faire pour eviter/ Enlever l'intersection sachant que tous mes points sont utiles.

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    c'est juste un ré-arrangement des points....

    Petit exemple simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            1
          4  |
           \ |
            \|
             |\ 
             | \
             |  \
             |   \
             |    \
             |     \
             2------3
    1-2 intercepte 3-4 donc 4 s'insère entre 1 et 2

    et si tu modèlises avec (n,n+1) et (m,m+1), c'est pareil :

    m+1 vient entre n et n+1, donc tu sauvegardes m+1, tu déplaces [n+1,m] de 1 cran, et tu mets m+1 en n+1 ....
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  10. #10
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Un lien sur la discussion de l'alalgo pour déterminer si un point est à l'intérieur d'un polygone :
    http://www.developpez.net/forums/sho...d.php?t=162791
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par souviron34
    c'est juste un ré-arrangement des points....

    Petit exemple simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            1
          4  |
           \ |
            \|
             |\ 
             | \
             |  \
             |   \
             |    \
             |     \
             2------3
    1-2 intercepte 3-4 donc 4 s'insère entre 1 et 2

    et si tu modèlises avec (n,n+1) et (m,m+1), c'est pareil :

    m+1 vient entre n et n+1, donc tu sauvegardes m+1, tu déplaces [n+1,m] de 1 cran, et tu mets m+1 en n+1 ....

    Merci bcp tout fonctionne mais j'ai juste modifier un peu ce que tu m'as dit plutôt que de mettre m+1 en n+1 je met m en n+1 en effet j'ai trouver des exemples ou ta technique ne donnait pas d'intersection mais le contour n'etait pas toujours très logique.

    Donc Merci Beaucoup à tous pour votre aide !

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Wyfrel
    Merci bcp tout fonctionne mais j'ai juste modifier un peu ce que tu m'as dit plutôt que de mettre m+1 en n+1 je met m en n+1 en effet j'ai trouver des exemples ou ta technique ne donnait pas d'intersection mais le contour n'etait pas toujours très logique.
    :
    tiens OK je vais essayer sur mes applis pour voir...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Placer correctement des Composants dans un JPanel
    Par Lady dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 14/01/2007, 13h34
  2. Réponses: 5
    Dernier message: 27/02/2006, 19h38
  3. Réponses: 2
    Dernier message: 12/02/2006, 15h42
  4. [Shell]Détecter la version de java dans un script
    Par sc_wizard29 dans le forum Général Java
    Réponses: 4
    Dernier message: 01/07/2005, 10h00

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