[Dcmlib] modifier le header d'une serie dicom

Mathieu Malaterre mathieu.malaterre at kitware.com
Mon Apr 25 17:58:06 CEST 2005


Laurent,

	[Ton mail client est un peu special, ca rend la lecture des reply 
difficile...]

	Si tu utilises GDCM CVS, regarde le source de 
Insight/Code/IO/itkGDCMImageIO.cxx

Il y a une fonction : void GDCMImageIO::GetPatientName(...)
Et le code est:

   MetaDataDictionary & dict = this->GetMetaDataDictionary();
   ExposeMetaData<std::string>(dict, "0010|0010", m_PatientName);

C'est ce que tu veux je crois,

Mathieu
Ps: pour l'API de gdcm j'ai deja raler que l'acces au valeur via un clef 
etait bancal ou difficile pour un nouvel utilisateur. Meme moi je ne 
sais jamais qd utiliser un approche ou une autre. Bcp de methode devrait 
etre enlever de la partie public...


laurent.paul at club-internet.fr wrote:
> 
> 
> 
>  >laurent.paul at club-internet.fr wrote:
>  >>
>  >> Bonjour a tous!
>  >>
>  >> Ca fait plaisir d'avoir une mailling list sur le dicom en francais!
>  >> Ca me fait gagne un temps fou quand je poste une question!
>  >>
>  >> Alors voila, je cherche un exe qui serait capable de modifier un champ
>  >> dans le header d'une série Dicom.
>  >> Je vous explique:
>  >>
>  >> J'ai scanné une greffe pour un projet et lors du scan, la greffe etait
>  >> mal orientée (à l'envers) et le technicien qui a réalisé 
> l'acquisition a
>  >> juste mis un ecart entre les slices de "-1".
>  >> Ca resoud son probleme, mais pas le mien!
>  >> Lorsque j'ouvre cette série avec certains logiciels, ca pose des
>  >> problemes notamment pour ce qui est mesure de distances, cropping....
>  >> Bref, j'aimerais changer cette valeur dans chaque header de ma série.
>  >
>  >ca me parait pas insurmontable. Mais il va faloir que tu prennes exemple
>  >sur des exemples gdcm deja existant.
>  >Premiere etape reperer le champe DICOM auquel tu fais reference:
>  >
>  >../bin/PrintHeader dicom.dcm
>  >
>  >tu notes sur un papier le ref de la form "0028|0005"
>  >
>  >Et dans l'exemple tu fais:
>  >
>  >....
>  >header->InsertValEntry( "1", 0x0028, 0x0005);
>  >....
>  >file->Write("newdicom.dcm");
>  >
>  >
>  >ATTENTION: gdcm ne sauve qu'en RAW (pour l'instant) donc tes images
>  >seront alterer (par rapport a la solution consistant a faire un hexedit
>  >sur tous les fichiers).
> 
> 
> Si gdcm ne sauve qu'en raw, je vais faire autrement car je prefererais 
> garder mon format analyze.
> Par contre, j'ai deja eu une reponse de Jean-Pierre Roux que je posterai 
> egalement sur la mailinglist. Il m'indique un log pour editer les header.
> J'attends d'avoir la licence et j'essaie ca.
> 
> 
>  >> Autre solution:
>  >> J'utilise le format Analyze. Ma série est donc convertie en un fichier
>  >> et un header. Je ne sais pas exactement quelle est la structure mais il
>  >> doit bien y avoir un tag du meme style que celui du dicom. Peut etre
>  >> serait-ce plus facile de modifier seulement ce tag.
>  >
>  >Quoi les fichier en Analyze ont aussi le meme probleme ?
>  >
> 
> 
> Eh oui les fichiers analyze ont ce probleme vu qu'ils ont été crées a 
> partir de mes images Dicom. Je les genere avec MRicro. Dans le header 
> généré je devrais retrouver les proprietes de mes images (par ex 512 
> taille en X et Y) mais je trouve simplement le patient ID, Start & End 
> acq. time... Ca m'interresse pas!
> Je vais me renseigner sur MRicro et la generation de fichiers header.
> 
> 
>  >Mathieu
>  >Ps: comme tu utilises ITK pourquoi ne pas faire le traitement dans ITK
>  >directement:
>  >
>  >if( image == image_avec_faux_ecart )
>  > ecart = abs(ecart)
>  >
>  >ca evite de faire un batch sur les images original. Dans le future tu
>  >peux ne pas te rappeler si tu as preprocesser les fichiers ou non...
>  >
> 
> C'est vrai que j'avais pas pensé a ITK. Il fait tellement de choses que 
> j'y pense pas!
> J'ai trouvé un exemlpe deja construit qui modifie une ou plusieurs 
> valeur(s) (d'apres le code source). Par contre, j'arrive pas a 
> l'utiliser. J'ai un probleme pour lui passer la clé, je n'arrive pas a 
> lui passer sous le bon format.
> Ma clé est: 0018,0088
> J'ai essayé telquel, 00180088 et meme 0x0018,0x0088 mais sans resultat.
> Je asis que tu reponds sur la mailing list de ITK, donc si tu pouvais 
> m'aider en passant ce serait sympa.
> 
> Merci.
> 
> Laurent.
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Dcmlib mailing list
> Dcmlib at creatis.insa-lyon.fr
> http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib




More information about the Dcmlib mailing list