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

Calcul scientifique Python Discussion :

erreur in dicom.read_file [Python 2.X]


Sujet :

Calcul scientifique Python

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut erreur in dicom.read_file
    Salut à tus
    je veux travailler avec le python mais toujours j'ai des lacunes et des erreurs qui me perturbe.
    j'ai travailler déjà avec les images png sous python et j'ai effectuer des petit traitement, maintenant je veux passer au images DICOM alors que je me suis bloque en premier pas.
    voila une partie de mon code, là ou il y a l'erreur,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    def load_scan(path):
        slices = [dicom.read_file(path + '/' + s) for s in os.listdir(path)]
    et aussi les erreurs que j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    File "dcmsay.py", line 35, in load_scan
        slices = [dicom.read_file(path + '/' + s) for s in os.listdir(path)]
      File "/usr/local/lib/python2.7/dist-packages/dicom/filereader.py", line 614, in read_file
        force=force)
      File "/usr/local/lib/python2.7/dist-packages/dicom/filereader.py", line 515, in read_partial
        preamble = read_preamble(fileobj, force)
      File "/usr/local/lib/python2.7/dist-packages/dicom/filereader.py", line 489, in read_preamble
        raise InvalidDicomError("File is missing 'DICM' marker. "
    dicom.errors.InvalidDicomError: File is missing 'DICM' marker. Use force=True to force reading
    aidez moi svp.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Le message d'erreur est clair et donne une solution a essayer (pour autant que vous soyez sur que le fichier est "dicom"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dicom.errors.InvalidDicomError: File is missing 'DICM' marker. Use force=True to force reading
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    désolé mais j’ai pas compris votre réponse, j'ai bien défini le répertoire ou se trouve les images dcm

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    j'ai un peu modifie e code voila se que j'ai comme erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OSError: [Errno 2] No such file or directory:'/home/images/dcm/'

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par hadjira10 Voir le message
    j'ai un peu modifie e code voila se que j'ai comme erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OSError: [Errno 2] No such file or directory:'/home/images/dcm/'
    Ce qui vous permet de constater que lorsqu'il le fichier n'est pas trouvé, le message d'erreur est différent...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    bonjour
    je veux appliquer le code
    mais je suis bloquer en premier pas la déclaration de path, je ne sais pas pourquoi, j'utlise des fichiers "*.dcm" d'un examen IRM
    MR-001.dcm
    MR-002.dcm

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Commence d'abord par ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import glob
     
    def load_scan(path):
        paths = glob.glob(os.path.join(path, "*.dcm"))
        print(paths)
    et regarde ce qui sort.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par hadjira10 Voir le message
    mais je suis bloquer en premier pas la déclaration de path
    Côté Python, c'est juste un chaîne de caractères... et il n'y a que vous qui sachiez dans quel répertoire vous avez posé ces fichiers et s'il est plus astucieux de choisir un chemin absolu ou relatif pour les atteindre.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    input_data = "home/images/dcm/"
    patients = os.listdir(input_data)
    patients.sort()
    def load_scan(path):
        slices = [dicom.read_file(path + '/' + s) for s in os.listdir(path)]
    et tjr la meme erreurs
    patients = os.listdir(input_data)
    OSError: [Errno 2] No such file or directory:'home/images/dcm/'

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Il ne devrait pas y avoir ton nom entre /home et /Images ?

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    oui biensur
    le repertoire personnel
    /home/hajer/images/dcm/
    je me suis trompé

  12. #12
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    j'ai tjr le même problème

  13. #13
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Je t'ai proposé de tester ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import glob
     
    def load_scan(path):
        paths = glob.glob(os.path.join(path, "*.dcm"))
        print(paths)
    Autre chose, dans le dossier dcm clique droit sur une image, fais CTRL+C et ensuite dans ton éditeur de code tu fais CTRL+V ça devrait résoudre ton problème de chemin.

    D'ailleurs, es-tu sûre que le dossier images ne prend pas une majuscule ?

  14. #14
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    Slt voila mon code
    Code : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    import numpy as np # linear algebra
    import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
    import dicom
    import os
    import scipy.ndimage
    import matplotlib.pyplot as plt
    from glob import glob
    from skimage import measure, morphology
    from mpl_toolkits.mplot3d.art3d import Poly3DCollection
     
    import glob
     
    def load_scan(path):
        paths = glob.glob(os.path.join(path, "/home/hajr/data/*.dcm"))
     
        slices = [dicom.read_file(path + '/' + s) for s in os.listdir(path)]
        slices.sort(key = lambda x: float(x.ImagePositionPatient[2]))
        try:
            slice_thickness = np.abs(slices[0].ImagePositionPatient[2] - slices[1].ImagePositionPatient[2])
        except:
            slice_thickness = np.abs(slices[0].SliceLocation - slices[1].SliceLocation)
     
        for s in slices:
            s.SliceThickness = slice_thickness
     
        return slices
    def get_pixels_hu(scans):
        image = np.stack([s.pixel_array for s in scans])
        # Convert to int16 (from sometimes int16), 
        # should be possible as values should always be low enough (<32k)
        image = image.astype(np.int16)
     
        # Set outside-of-scan pixels to 1
        # The intercept is usually -1024, so air is approximately 0
        image[image == -2000] = 0
     
        # Convert to Hounsfield units (HU)
        intercept = scans[0].RescaleIntercept
        slope = scans[0].RescaleSlope
     
        if slope != 1:
            image = slope * image.astype(np.float64)
            image = image.astype(np.int16)
     
        image += np.int16(intercept)
     
        return np.array(image, dtype=np.int16)
    id=0
    patient = load_scan(path)
    imgs = get_pixels_hu(patient)
     
    np.save(output_path + "fullimages_%d.npy" % (id), imgs)

    et l'erreur que j'ai:
    Traceback (most recent call last):
    File "example.py", line 59, in <module>
    patient = load_scan(path)
    NameError: name 'path' is not defined

  15. #15
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Ben tu le vois bien que le nom du dossier n'est pas encore définit à ce stade.
    Tu auras la même erreur avec output_path.

    Définis ces chemins en début de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    import glob
    path = "/home/hajr/data"
    output_path = "/home/hajr/?"
    Et change ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def load_scan(path):
        paths = glob.glob(os.path.join(path, "*.dcm"))
        slices = [dicom.read_file(s) for s in paths]
        slices.sort(key = lambda x: float(x.ImagePositionPatient[2]))
        ...

  16. #16
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 67
    Points : 43
    Points
    43
    Par défaut
    merci pour votre réponse
    j'ai suivi tes conseils j'ai déclaré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import glob
     
    path="/home/hajr/data/"
    output_path="home/hajr/data_output/"
    et viola ce que j'ai comme des erreurs
    Traceback (most recent call last):
    File "example.py", line 62, in <module>
    np.save(output_path + "fullimages_%d.npy" % (id), imgs)
    File "/usr/local/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 490, in save
    fid = open(file, "wb")
    IOError: [Errno 2] No such file or directory: 'home/hajr/data_output/fullimages_0.npy'

  17. #17
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Si le dossier "home/hajr/data_output/" n'existe pas il ne sera pas créé, le fichier oui mais pas le dossier.

    Et il n'existe pas manifestement, donc crée-le d'abord.

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

Discussions similaires

  1. Erreur fréquente avec ASP et IIS
    Par Community Management dans le forum ASP
    Réponses: 2
    Dernier message: 11/02/2004, 22h20
  2. Check Url pour savoir si erreur 404 ou si le site existe
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 13h49
  3. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  4. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 15h05
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

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