[Dcmlib] converting itk,vtk or any other 3D images into dicom.

Mathieu Malaterre mathieu.malaterre at kitware.com
Wed Nov 10 19:37:17 CET 2004


Pendant que je recompile ParaView, j'ai commite' ton patch, en fait que 
la moitie.

Je reste assez contre l'ajout d'une multitude de nouvelle methodes dans 
gdcmHeader (qui est deja trop complexe a mon avis). Mes raisons:

- Comme je viens de le dire, ca rend l'API de gdcmHeader + complexe, 
pareil pour la dll, encore plus de symboles a exporter.

- Pour moi la vraie notion c'est plutot 'initialisation de champs par 
defaut'. Je rajouterai plutot qu'une seule methode (privee, protege'e), 
genre 'InitializeDefaultDicomFields'.

- Je ne veux pas vraiment exposer a l'utilisateur un nombre 'n' de 
methode wrapper. On sait jamais peut etre qu'osirix a besoin a tout prix 
d'un autre champ non present. Ca veut dire qu'il faudra editer le 
fichier gdcmHeader.h, gdcmHeader.cxx (a 2 endroits)...

- Tout ce que l'utilisateur recherche c'est vraiment ecrire un fichier 
DICOM valide (lisible par pas mal de viewer). S'il veut a tout prix 
changer le nom de son patient, alors il lit la doc doxygen, trouve le 
DICOM tag qu'il veut et change son nom de patient.

Les methodes GetXSpacing, GetSize ne sont la que parce l'on veut 
renvoyer des valeurs par defaut (heuristique). Une application tierce 
peut se brancher sur gdcm, lire l'image, extraire XSpacing sans se poser 
la question:'Que faire si XSpacing n'est pas speficier dans le fichier 
DICOM ?'

Avis/Commentaires ?


Mathieu

jean-michel.rouet at philips.com wrote:
> Hello everybody,
> 
> bon j'en suis a une version a peu pres corecte (a mon avis) de mon writer.
> J'ai du changer quelques petites choses dans gdcm pour que ca fonctionne 
> bien, mais rassurez vous, rien de bien méchant.
> 
> Dans le principe:
> + J'ai utilisé le constructeur par défaut, celui qui ne prend aucun 
> argument, de gdcm::Header. Ma version initialise les principaux tags 
> utiles.
> + J'ai rajouté quelques setters pour positionner des tags tels que 
> PatientName, image position, etc.
> + J'ai initialisé quelques membres pour eviter quelques warning de Purify 
> dans:
>         gdcmDocEntry (ReadLength, Usable,Length et PrintLevel)
>         gdcmDocument (SwapCode, Filetype)
> + J'ai rajouté quelques barricades autour de Document::OpenFile(), quand 
> justement il n'y a pas de fichier a ouvrir
> + Quelques petites choses pour eviter des warnings de visual (variable i 
> dans gdcmSQItem.cxx ligne 109, 123)
> 
> 
> Voila donc le patch contre la version courante de cvs. (gdcm.patch)
> 
> Et un petit programme d'exemple qui utilise itk pour lire une image 3D en 
> entrée, et qui sauve ensuite le dicom sous forme d'une série de fichier 
> dans un répertoire. (volume2dcm.cxx)
> 
> Je mets le tout dans un zip...
> 
> 






More information about the Dcmlib mailing list