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 :

Perte d'informations sur des images de format DICOM


Sujet :

Images

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 34
    Points
    34
    Par défaut Perte d'informations sur des images de format DICOM
    Bonsoir tout le monde,

    En fait j'ai créé un petit programme en matlab qui me permet de renommer automatiquement des fichiers DICOM.
    En fait j'ai des clichés, il crée le nom en fonction de divers informations de ces fichiers et écrit des fichiers DICOM avec ce nom.

    C'est grossomodo un copier-coller seul le nom change, cependant dans les nouveaux clichés que je crée je perd de l'information, mes images se retrouvent fortement bruité et leur taille diminuée (d'où ma déduction de perte d'information).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      for n = 1:nfiles
                 nomImage = [handles.dfolder '\' dfiles(n).name];
     
                 headers = dicominfo(nomImage);   
     
                 if(headers.InstanceNumber<10)
                     nomNouveauImage = strcat(handles.dfolder,'\ImagePerfu0',num2str(headers.InstanceNumber),num2str(headers.SeriesNumber));
                 else
                     nomNouveauImage = strcat(handles.dfolder,'\ImagePerfu',num2str(headers.InstanceNumber),num2str(headers.SeriesNumber)); 
                 end
                image = dicomread(nomImage);
                dicomwrite(image,nomNouveauImage,headers);
     
            end
    Aurai-je oublié des paramètres dans la fonction dicomwrite?

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 311
    Points : 52 902
    Points
    52 902
    Par défaut
    C'est assez bizarre... il faudrait comparer les informations fournies par DICOMINFO avant et après la modification...

    Tu peux t'aider de cette contribution sur le FEX : STRUCTCOMPVIS

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 34
    Points
    34
    Par défaut
    Merci.

    Alors j'ai comparé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Avant :                                          Après :
    
    
    BitDepth: 12                                    BitDepth: 16      
    BitsStored: 12                                  BitsStored: 16                                                            
    FileMetaInformationGroupLength: 212   FileMetaInformationGroupLength: 224                              
    FileSize: 172174                               FileSize: 100516                                            
    HighBit: 11                                      HighBit: 15                  
    Voila ce qui en ressort.
    La diminution de taille s'expliquerait par le fait que je ne peux pas copier les infos dans les tags constructeurs.
    Mais les autres différences aucune idée.
    J'ai l'impression que plutot une perte, cela rajoute plus d'information d'où le bruit sur l'image.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 311
    Points : 52 902
    Points
    52 902
    Par défaut
    Citation Envoyé par gwal21 Voir le message
    La diminution de taille s'expliquerait par le fait que je ne peux pas copier les infos dans les tags constructeurs.
    Tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dicomwrite(...,'WritePrivate',true);
    Citation Envoyé par gwal21 Voir le message
    J'ai l'impression que plutot une perte, cela rajoute plus d'information d'où le bruit sur l'image.
    MATLAB a converti les données codées sur 12bits initialement en 16bits car c'est la seule classe appropriée.

    C'est ce qui est expliqué dans la documentation de DICOMREAD :
    Class Support

    X can be uint8, int8, uint16, or int16. map must be double. alpha has the same size and type as X. overlays is a logical array.
    Je n'ai jamais eu à traiter d'images comme celle-ci (toujours 8 ou 16 bits) et je n'ai, me semble-t-il, pas de fichier DICOM de ce type pour faire des tests

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 34
    Points
    34
    Par défaut
    Erf la galère.
    Sinon faudrais que je puisse changer les noms de mes images via mon petit programme plutot que de réécrire les mêmes images avec un nom différent, en theorie je ne devrai plus avoir de problème.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 311
    Points : 52 902
    Points
    52 902
    Par défaut
    Euh... au fait pourquoi ne pas simplement utiliser une commande Dos ou Unix pour renommer tes fichiers ?

    Sous Windows :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for n = 1:nfiles
     
        currentname = fullfile(handles.dfolder ,dfiles(n).name);
        newname = fullfile(handles.dfolder,sprintf('ImagePerfu%02d%d',headers.InstanceNumber,headers.SeriesNumber));
     
        cmd = sprintf('rename %s %s',currentname,newname);
     
        dos(cmd);
     
    end
    Je crois que j'avais lu un peu trop rapidement ton premier message

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 34
    Points
    34
    Par défaut
    Oups désolé je répond un peu tardivement. Je m'excuse, j'ai eut une coupure d'internet -_-' vive les travaux du tram...

    Je ne savais pas que c'était possible d'utiliser des commandes win dans matlab, je vais me pencher la dessus.

    Je te remercie.

  8. #8
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 34
    Points
    34
    Par défaut
    J'ai encore un soucis. Quand je rentre la commande dos comme tu me l'as donné, je compile et il me met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La syntaxe de la commande n'est pas correcte.
    Donc j'ai cherché à comprendre le code, et j'ai retapper la même chose pour renommer d'autre fichier. Et la commande a parfaitement marchée.

    Je comprend pas pourquoi dans un cas ça marche et pas dans l'autre .

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 311
    Points : 52 902
    Points
    52 902
    Par défaut
    Les noms des fichiers contiennent-ils des caractères spéciaux ou des espaces ?

    Essaie comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd = sprintf('rename "%s" "%s"',currentname,newname);
    Si ça ne fonctionne toujours pas, retire le point-virgule à la fin de la ligne ci-dessus est montre nous ce qui s'écrit dans le Command Window

  10. #10
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 34
    Points
    34
    Par défaut
    J'ai retiré les espaces dans les noms de dossier.

    Voila ce que j'obtiens dans la command window :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cmd =
     
    rename "E:\Perfusion\681314" "E:\Perfusion\ImagePerfu1432"
    et toujours le même soucis.

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 311
    Points : 52 902
    Points
    52 902
    Par défaut
    Une version un peu plus robuste :

    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
    for n = 1:nfiles
     
        currentname = fullfile(handles.dfolder ,dfiles(n).name);
        newname = fullfile(handles.dfolder,sprintf('ImagePerfu%02d%d',headers.InstanceNumber,headers.SeriesNumber));
     
        if exist(currentname,'file')~=2
            error('Impossible de trouver le fichier "%s" ',currentname);
        end
     
        if exist(newname,'file')~=2
            error('Impossible de trouver le fichier "%s" ',newname);
        end
     
        cmd = sprintf('rename "%s" "%s"',currentname,newname);
     
        dos(cmd);
     
    end
    Voir la : Comment tester l'existence d'un fichier ou d'un dossier ?

  12. #12
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 311
    Points : 52 902
    Points
    52 902
    Par défaut
    Arf... il suffit de vérifier la syntaxe de la commande "rename"

    Renomme un ou plusieurs fichiers.

    RENAME [lecteur:][chemin]nom_de_fichier1 nom_de_fichier2.
    REN [lecteur:][chemin]nom_de_fichier1 nom_de_fichier2.

    Vous ne pouvez pas spécifier un nouveau lecteur pour votre destination.
    Le chemin du fichier cible ne doit pas être spécifié.

    =>

    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
    for n = 1:nfiles
     
        currentname = fullfile(handles.dfolder ,dfiles(n).name);
        newname = sprintf('ImagePerfu%02d%d',headers.InstanceNumber,headers.SeriesNumber);
     
        if exist(currentname,'file')~=2
            error('Impossible de trouver le fichier "%s" ',currentname);
        end
     
        if exist(newname,'file')~=2
            error('Impossible de trouver le fichier "%s" ',newname);
        end
     
        cmd = sprintf('rename "%s" "%s"',currentname,newname);
     
        dos(cmd);
     
    end

  13. #13
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2008
    Messages : 37
    Points : 34
    Points
    34
    Par défaut

    J'avais pas vu ça... Je lirai mieux les doc à l'avenir.

    En tout cas merci beaucoup pour ton aide, c'est parfait.

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

Discussions similaires

  1. [Débutant] Pertes d'informations sur l'image?
    Par kbazin dans le forum Images
    Réponses: 20
    Dernier message: 08/11/2010, 19h08
  2. Sauvegarder des images au format dicom
    Par Décembre dans le forum ImageJ
    Réponses: 0
    Dernier message: 28/07/2010, 14h51
  3. Demande d'informations sur des formations pour le DIF.
    Par MenshaKaine dans le forum Emploi
    Réponses: 0
    Dernier message: 29/01/2010, 12h26
  4. comment obtenir des informations sur des images
    Par thor76160 dans le forum C#
    Réponses: 1
    Dernier message: 15/05/2009, 11h37
  5. Manipulation des images au format Dicom
    Par Lost in dans le forum Images
    Réponses: 8
    Dernier message: 16/02/2008, 18h12

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