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

Images Discussion :

Dicom, garder le contraste en 3D


Sujet :

Images

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 48
    Points : 25
    Points
    25
    Par défaut Dicom, garder le contraste en 3D
    Bonjour,

    je me pose une question d'ordre pratique pour visualiser et traiter des fichiers dicom en 3D. En effet, le format Dicom contient des voxels d'intensité si bien que le code suivant donne une image contrastée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a = dicomread(file);
    imshow(a);
    Cependant, lorsqu'on étend cela a du 3D, cela se complique. D'apres ce que je comprends,le format dicom ne contient pas de coordonné, mais des intensités en voxel (qui ont une taille donnée). Donc, pour lire plusieurs image Dicom en 3D je fais un tableau où j'empile les images dans le bon ordre. Jusque la, rien de surprenant. Le probleme arrive au moment du rendu où j'utilise patch qui ne tient compte QUE de l'enveloppe plutot que de tous les voxels.

    Dois je utiliser autre chose que matlab, ou vous pensez qu'il y a une solution a ca ?
    Si vous avez des idees, je suis preneur bien entendu,

    Merci.

  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,

    j'ai l'impression que tu confonds les données de type "image" et les données de type "maillage" ?

    Une image DICOM est grosso-modo un tableau 3D, dans lequel chaque élément a une valeur de niveau de gris. Pour la visualisation, il y a plusieurs solutions :
    • afficher chaque coupe l'une apres l'autre
    • afficher trois coupes orthogonales
    • rendu volumqiue
    • ...

    Une recherche sur le FileExchange devrait donner qlq pistes.

    Quand on parle de coordonnées, c'est souvent pour des objets 3D comme des collections de points, ou des maillages. On peut représenter un maillage qui correspond au contour 3D de l'objet. Dans ce cas on a une étape de construction de la surface (par exemple via isosurface), et une étape de rendu de surface (fonction patch).

    Donc la visu dépend fortement de la méthode utilisée. Il faudrait préciser la question soit par rapport au type de méthode employée, soit par rapport au résultat recherché ?

    Edit : une interface qui semble populaire est le Viewer 3D de Dirk-Jan Kroon, mais je vois que as déjà questionné l'auteur !
    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 48
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    et merci de ton commentaire. Je fais bien la difference entre maillage et image. Le fichier dicom contient des données images. Matlab possede la fonction dicomread qui permet justement de voir l'image correctement.

    Je prends tte ces images et j'en fais une matrice. Mais pour lire cette matrice sous matlab, comment faire ?

    Il n'existe pas dicomread3D, et les seuls outils que je connaisse sous matlab c'est la creation de surface... Ce qui donne un resultat mediocre sans contraste...
    Pourtant, la personne l'a fait donc ca doit bien etre possible ?

    je vois pas comment faire

  4. #4
    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,

    ok, donc tu arrive à lire une matrice 3D à partir d'une série de fichiers, et le probleme concerne bien l'affichage du volume en 3D;

    A partir du moment où tu as ton volume3D, tu peux afficher les coupes une par une avec imshow. Dans ce cas tu as une option pour maximiser le contraste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imshow(vol(:,:,5), []);
    Evidemment, ce n'est pas le plus pratique.
    Quel est le type de données du tableau 3D ? Et as-tu pu utiliser le Viewer 3d ?
    Si oui, tu peux l'utiliser en ajustant le contraste de l'image au préalable. Changer le type de donnée peut aussi parfois aider (si un pixel a un valeur très élevée, cela peut donner un rendu général très sombre). En gros, essayer un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    img2 = uint8(img * 2.5);
    La solution alternative au rendu volumique ou au rendu par coupes (slices) est d'afficher une isosurface. Mais dans ce cas il n'y a plus de question de contraste. Ce que tu peux regler c'est la finesse du maillage en lissant un peu l'image au préalable. Tu peux aussi ajouter un éclairage (fonction light) et changer le rendu (shading), ca peut donner un meilleur aspect.

    en esperant que ca aide un peu...

    A+

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 48
    Points : 25
    Points
    25
    Par défaut
    La solution avec imshow ne me permet que de lire les images une par une, alors que j'aurais aimé avoir le meme rendu en 3D.

    - Mon tableau est une pile de dicom (suivant l'axe Z). Il contient des données greyscale.

    - J'arrive pas a utiliser le viewer avec mon fichier (trop gros je crois [550,550,80]) mais j'ai pu en ouvrir un autre plus petit : possibilité de lire un volume 3D en greyscale, et meme de modifier les alphas pour jouer avec le contraste... (donc mon histoire est possible)


    La seule facon est d'afficher image par image avec le bon espacement pour que ce soit compact ? Et ensuite créer un outil pour la rotation en direct ? Sur le viewer, l'outil rotation a l'air d'avoir été modifié...


    merci

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Quel est ton but exactement? Visualiser en rendu volumique une pile d'image 3D? Si c'est ton seul objectif alors matlab n'est pas l'outil le plus adapté. Matlab ne possède pas de fonction prédéfinie pour cela et de plus l'affichage de données 3D sous matlab, ça rame énormément.

    Après tu peux utiliser les viewer disponible sur le file exchange et analyser le code pour comprendre comment ça marche.
    Si tu as des problèmes de mémoire, il suffit de faire des tests avec des données plus petites (par exemple en sous-échantillonnant ta pile d'images).
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 48
    Points : 25
    Points
    25
    Par défaut
    Mon but est d'obtenir un visuel 3D en greyscale...
    Je crois que je ferais mieux d'utiliser autre chose que matlab.

    Je vais utiliser ITK/VTK http://www.eecs.tufts.edu/~alauri02/install.htm pour ceux qui passeraient par la

  8. #8
    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,

    pour compléter sur la visu, ITK est assez complexe à utiliser, et VTK est assez puissant mais reste une bibliothèque, et nécessite donc d'écrire son code.

    Si le problème est uniquement la visu, la solution ImageJ permet de charger des images 3D et de les afficher en 3D, avec un investissement moindre.

    A+

  9. #9
    Membre régulier Avatar de Décembre
    Inscrit en
    Avril 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 277
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Je ne comprends pas très bien ton problème !! si c'est juste une histoire de visualisation il existe une panoplie de logiciels et même des codes matlab disponible sur le file exchange qui te permettent de la faire.

    à mon avis le fait d'empiler les dicoms est sans intêret car tu n'auras à la fin qu'un cube en niveaux de gris qui n'est pas très intéressant !! il faut d'abord segmenter la partie qui t'intéresse des dicom pour faire ton empilation par la suite et là tu auras des 3D assez intéressant à visualiser

  10. #10
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par Décembre Voir le message
    à mon avis le fait d'empiler les dicoms est sans intêret car tu n'auras à la fin qu'un cube en niveaux de gris qui n'est pas très intéressant !!
    Il y a un intérêt : faire du rendu volumique en jouant sur la transparences des niveaux de gris, ce que fait la plupart des logiciels d'imagerie médicale. Ainsi on est pas obligé de segmenter pour voir ce qu'il y a dans nos images 3D.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

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

Discussions similaires

  1. Réponses: 21
    Dernier message: 24/06/2014, 12h28
  2. Réponses: 3
    Dernier message: 11/01/2005, 12h41
  3. Garder un PID
    Par tomsoyer dans le forum Linux
    Réponses: 3
    Dernier message: 30/11/2004, 14h16
  4. garder en memoire un resultat d'une fonction
    Par khadidja dans le forum C++
    Réponses: 6
    Dernier message: 26/07/2004, 14h52
  5. garder un FIFO ouvert en lecture
    Par OuiOui dans le forum Réseau
    Réponses: 4
    Dernier message: 05/01/2003, 19h24

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