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 :

Comptage de voxels traversés par une droite 3D


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut Comptage de voxels traversés par une droite 3D
    Bonsoir,
    Je dois compter le nombre de voxels traversés dans un modèle 3D par une droite 3D. C'est en fait pour faire une simulation par rayons X à partir d'un modèle virtuel.

    Mon espace 3D est un espace idéal (j'ai fait une segmentation au préalable) où tout ce qui n'appartient pas à mon modèle 3D est mis à 0.

    Je voudrais lancer une droite à travers ce modèle et savoir en sortie quelle a été l'atténuation du rayon (chaque voxel non nul atténue d'un facteur l'énergie initiale du rayon).
    J'ai besoin, comme toujours, d'une grande précision et d'une très grande rapidité (mais pas très compatibles)!

    Je connais l'origine du rayon et sa fin qui se situe au niveau d'un plan 2D plongé dans l'espace 3D
    J'ai pensé à faire brésenham 3D mais le problème est que je risque de ne pas tomber "pil poil" sur mon extrémité finale, mais sur un pixel du plan 2D voisin du point que j'aurais du avoir.

    Ce qui fait que pour l'instant je fais mon comptage puis affecte cette valeur au pixel du plan 2D qui aurait du être le point final.

    Ce qui est gênant c'est que ça me paraît trop peu précis...
    Me conseillez-vous une interpolation ? En fait j'hésite à cause des temps de calculs trop importants...
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  2. #2
    Membre éclairé
    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
    Points : 859
    Points
    859
    Par défaut
    salut,

    Brensenham te permet d'avoir le trajet de la droite.
    En 3D il y a des petits soucis, car il me semble que le trajet n'est pas unique... Mais ca ne change pas grand chose au trajet global, je pense.

    Sinon si l'atteuation depend de la quantite de matiere traversee, j'en deduit que l'attentuation ne sera pas la meme si on traverse le pxel (qu'on va supposer cubique) du mileiu d'une face au milieu de la face opposée, ou alors d'un coin a un autre.
    Un ponderation dependant de la longueur de traversee serait a mon avis plus precis.

    A+

  3. #3
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 53
    Points : 64
    Points
    64
    Par défaut
    Salut,


    Tu peux peut-être utiliser l'algorithme de Bresenham avec une grille plus fine (d'un multiple puissance deux) poura améliorer la précision, mais ne vérifier le cube que tous les multiples de pixels pour déterminer l'atténuation. Sinon, les rayons ont-ils tous la même direction ? Ou bien peut-être tous la même orrigine ? Est-il possible d'utiliser des octrees pour accélérer un peu (si de larges zones ont la même atténuation) ?

  4. #4
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Salut,
    Oui effectivement mes rayons ont toujours la même origine mais l'autre extrémité est quelconque.
    Sinon tu peux développer ce qu'est un octree ? C'est séparer l'espace en fonction de régions plus ou moins homogènes ?
    En ce qui concerne la non unicité de la discrétisation de la droite selon breseham j'étais pas au courant, je vais regarder ça...

    Sinon si l'atteuation depend de la quantite de matiere traversee, j'en deduit que l'attentuation ne sera pas la meme si on traverse le pxel (qu'on va supposer cubique) du mileiu d'une face au milieu de la face opposée, ou alors d'un coin a un autre.
    Un ponderation dependant de la longueur de traversee serait a mon avis plus precis.
    Oui effectivement, sinon j'ai lu des articles qui discrétisent la droite en N tranches et qui font une interpolation à chaque tranche... Mais je sais pas trop si ça va être précis...

    Sinon le coup de prendre une grille plus fine ça m'attire pas mal, je vais regarder ça....

    A+ et merci
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  5. #5
    Membre éclairé
    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
    Points : 859
    Points
    859
    Par défaut
    salut,

    le fait de prendre une grille de plus en plus precise te donnera un nombre de pixels de plus en plus precis, mais pas a longeur de traversee. Si tu consideres un rayon traversant un cube par la diagonale, d'un sommet au sommet directement oppose, tu traverseras les pixels de coin en coin, et tu compteras autant de pixels que si tu traversais le cube orthogonalement, soit une erreur d'un rapport sqrt(3), et ce, quel que soit la resolution utilisee (-> pas de convergence de la mesure)

    Cela dit c'est peut-etre possible de s'en sortir en comptant les pixels, et en ajouteant une ponderation en fonction de l'angle du rayon (horizontal : on garde , diagonal du plan : *sqrt(2) , diagonale du cube : *sqrt(3)).

    A+

  6. #6
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Salut,
    Merci pour ces précisions.
    En y réfléchissant je ne pense pas descendre en dessous de l'échelle du voxel car en dessous ça ne correspond à aucune info réelle.
    Je pense que je vais faire un mix entre bresenham et une interpolation aux frontières de mon objet (c'est là qu'il y a problème car mon modèle est un modèle surfacique qui "traverse" les voxels).

    Je sais pas trop si ça va marcher cette histoire là, à suivre...

    Merci encore.
    A+
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  7. #7
    Membre éclairé
    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
    Points : 859
    Points
    859
    Par défaut
    salut,

    sinon une solution ca consiste a cacluler la ditance entre le pixle d'entree et le pixel de sortie. La detection se fait sur l'image discrete, et tu attenues le biais en calculant la distance entre 2 points.

    A+

  8. #8
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Oui ça peut le faire.
    Merci beaucoup, je vais tenter tout ça.
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  9. #9
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 53
    Points : 64
    Points
    64
    Par défaut
    Salut,


    Pour développer un peu, un octree est un type d'arbre qui permet de subdiviser l'espace en cubes avec chaque cube composé de huit cubes plus petits (si c'est nécessaire). Pour ce qui est d'une origine commune à tous les rayons, en fait je crois que je me suis trompé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] comptage des lignes retournées par une requête SELECT un peu complexe
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/02/2015, 21h37
  2. Tous les points traversés par une ligne
    Par Invité dans le forum Débuter
    Réponses: 1
    Dernier message: 20/02/2014, 09h03
  3. [Tomcat]Droit d'accès aux fichiers créés par une servlet
    Par loulouleboss dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 15/07/2004, 14h32
  4. [MATH] Point par rapport à une droite
    Par teska dans le forum Mathématiques
    Réponses: 6
    Dernier message: 14/05/2003, 16h11

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