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

Algorithmes et structures de données Discussion :

Squelette 3D avec Voronoi


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Par défaut Squelette 3D avec Voronoi
    Bonjour,

    Je souhaiterais squelettiser un volume 3D d'une structure vasculaire en utilisant les diagrammes de Voronoi, le problème c'est que je ne sais pas ce qu'il faut faire exactement et à chaque fois que je lis un document qui en parle je ne comprends rien !!

    est ce que vous pouvez me dire qu'elle sont les étapes à suivre pour obtenir un squelette avec les diagrammes de Voronoi?

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    salut,

    tu as deux grandes approches pour les squelettes : discrète et géométrique.

    Pour le squelette discret, on travaille dans l'espace image, et on cherche l'ensemble des pixels ou voxels équidistants a plusieurs points de la frontière. C'est souvent basé sur des fonctions distance, et c'est ce qui me semble le plus robuste.

    Pour le squelette géométrique, c'est plus complexe. Faisable en 2D, mais en 3D je sais pas.
    L'idée (comme je la comprends de ce que j'ai pu voir) : on a des points sur la frontière de la forme. On calcule le diagramme de Voronoi 3D avec ces points comme germes. Le résultats est une structure de complexe cellulaire, avec des faces et des arêtes qui sont équidistantes à 2 ou 3 germes. On a par contre beaucoup de faces/arêtes qui sont séparent des germes proches sur la frontière, et il faudrait les filtrer. C qu'il faut ensuite, c'est arriver à isoler les sommets/arêtes/faces du diagramme qui se trouvent à l'intérieur de la structure d'origine, ce qui donne une première approche du squelette.

    Je suis pas sur d'être tres clair... Mais a priori ce n'est pas forcement évident. Pour l'implémentation, c'est pas gagné non plus.. regarder vers CGAL ?

    a++

  3. #3
    Membre éclairé Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Par défaut
    Salut,

    tu as deux grandes approches pour les squelettes : discrète et géométrique
    Je ne le savais pas !! quelle est la différence entre les deux approches ?

    On calcule le diagramme de Voronoi 3D avec ces points comme germes. Le résultats est une structure de complexe cellulaire, avec des faces et des arêtes qui sont équidistantes à 2 ou 3 germes.
    J'ai pu calculer le diagramme de Voronoi avec Matlab (Dieu merci, il y a une fonction toute prête) mais je n'arrive toujours pas à interpreter le résultat que j'ai trouvé, les points obtenus sont loin du centre de la forme et la topologie n'est pas conservée. je me dis qu'il certainement un truc à faire avant ou après le calcul du diagramme de Voronoi...je suis perdue

  4. #4
    Membre émérite
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    salut,

    Par "approche discrète" je parlais d'approche 'image' (2D ou 3D). Le résultat donné par la squletisation sera une autre image, contenant les pixel ou voxels du squelette.

    Par "approche géométrique", je pensais à des structures de données de type "nuage de points", ou maillages surfaciques. Dans ce cas le squelette consiste a calculer des hyper-plans (droites, plans...) entre les points, et à les combiner pour refaire une forme. D'après ce que j'en ai vu, ce type d'approche n'est pas forcément simple à mettre en oeuvre.

    De plus, en 3D la notion de squelette est multiple :
    • squelette filaire, composé de plusieurs courbes
    • squelette surfacique, composé de morceaux de surfaces.


    A voir lequel est le plus adapté, ou lequel il est possible de calculer...

    Dans le cas où les données de départ sont un ensemble de points (les "germes") situés à la surface de la structure d'intérêt, une idée est effectivement de passer par Voronoi.
    On obtient un ensemble de cellules (des polyèdres), chaque cellule correspondant à un germe. Sous Matlab, ces cellules sont représentées par un tableau N*3 de coordonnées de sommets, et une série d'indices de sommets pour chaque cellule.

    Une proposition de traitement :
    1. trouver les sommets qui sont "a l'intérieur" de la structure
    2. pour chaque cellule, calculer le polyèdre convexe équivalent (fonction convhulln) -> on obtient un ensemble de faces triangulaires
    3. ne garder que les faces dont les sommets sont à l'intérieur, c'est à dire dont les indices correspondent avec les indices des sommets trouvés à la première étape
    4. afficher un patch ou équivalent des triangles qu'on a gardés.
    5. si on essaie de trouver les arêtes communes à 3 triangles intérieurs, j'imagine qu'on trouve un squelette filaire... mais à vérifier.


    Sinon un problème avec Voronoi est qu'on a des cellules avec un point à l'infini. C'est casse-pied... Une solution simple est de rajouter des germes artificiels autour de la structure. Du coup, les cellules correspondantes aux points de la structure seront bornées.

    bon courage...

  5. #5
    Membre éclairé Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Par défaut
    Citation Envoyé par Kangourou Voir le message
    salut,

    Par "approche discrète" je parlais d'approche 'image' (2D ou 3D). Le résultat donné par la squletisation sera une autre image, contenant les pixel ou voxels du squelette.

    Par "approche géométrique", je pensais à des structures de données de type "nuage de points", ou maillages surfaciques. Dans ce cas le squelette consiste a calculer des hyper-plans (droites, plans...) entre les points, et à les combiner pour refaire une forme. D'après ce que j'en ai vu, ce type d'approche n'est pas forcément simple à mettre en oeuvre.

    De plus, en 3D la notion de squelette est multiple :
    • squelette filaire, composé de plusieurs courbes
    • squelette surfacique, composé de morceaux de surfaces.


    A voir lequel est le plus adapté, ou lequel il est possible de calculer...

    Dans le cas où les données de départ sont un ensemble de points (les "germes") situés à la surface de la structure d'intérêt, une idée est effectivement de passer par Voronoi.
    On obtient un ensemble de cellules (des polyèdres), chaque cellule correspondant à un germe. Sous Matlab, ces cellules sont représentées par un tableau N*3 de coordonnées de sommets, et une série d'indices de sommets pour chaque cellule.

    Une proposition de traitement :
    1. trouver les sommets qui sont "a l'intérieur" de la structure
    2. pour chaque cellule, calculer le polyèdre convexe équivalent (fonction convhulln) -> on obtient un ensemble de faces triangulaires
    3. ne garder que les faces dont les sommets sont à l'intérieur, c'est à dire dont les indices correspondent avec les indices des sommets trouvés à la première étape
    4. afficher un patch ou équivalent des triangles qu'on a gardés.
    5. si on essaie de trouver les arêtes communes à 3 triangles intérieurs, j'imagine qu'on trouve un squelette filaire... mais à vérifier.


    Sinon un problème avec Voronoi est qu'on a des cellules avec un point à l'infini. C'est casse-pied... Une solution simple est de rajouter des germes artificiels autour de la structure. Du coup, les cellules correspondantes aux points de la structure seront bornées.

    bon courage...
    Wow...je n'aurais jamais compris tout ça toute seule

    Merci beaucoup, je vais suivre les étapes que tu viens de m'expliquer et je t'informerai du résultat.

    Merci encore

Discussions similaires

  1. SPIP erreur à l'activation du plugin saisies avec le squelette collezion
    Par claudelefevre dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 01/09/2014, 01h50
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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