[Dcmlib] [Gdcm2] Re: [Gdcm-cvs] gdcm TODO

Jean-Pierre Roux Jean-Pierre.Roux at creatis.insa-lyon.fr
Mon Jan 9 18:46:33 CET 2006


Mathieu Malaterre wrote:

> J'ai mis la terminology histoire de rentre consistant gdcm. Je trouve 
> que c'est aussi important pour que l'on se mette d'accord sur le nom 
> des classes. Si on est d'accord sur la termino alors le nom des 
> classes devraient etre deduit facilement.

Il est effectivement important de mettre des noms comprehensibles, afin 
que nous n'ayons pas a en changer 3 ou 4 fois, comme ca ete le cas pour 
gdcm.

> Sinon tu as raison gdcm2 fais un melange entre Read/Load sur les 
> sequences. Apres discussion avec Kitware, c'est assez mauvais comme 
> design (*) de mettre les methodes Read/Load dans l'objet.

En fait, ma question etait que je n'ai pas trouve ou tu avais fait (si 
tu avais fait) un code qui permettrait de programmer le Load recursif 
d'une sequence.
(dans le cas general, on n'utilise pas les Sequences, mais si 
l'utilisateur la demande, il faut lui chager entierement -l'affichage 
est prevu-)

> Il me faudra externaliser tout le code pour faire une classe identique 
> a gdcm::Parse pour faire un gdcm::Read et un gdcm::Skip ...
>
> Tu as aussi raison pour les info minimales. Un gdcm::ImageReader aura 
> besoin d'un gdcm::Parser (FileSeeker) pour acceder au groupe 0028. 

J'ai ajouter un test (qui devra aller ailleurs, plus tard), avec 3 Load 
de Tags, pour se souvenir de quels tags on a besion, selon que l'on 
voudra, par la suite,
- uniquement lire les pixels,
- traiter une eventuelle palette de couleur
- afficher intelligement les images 'Gray level'
- Utiliser les fichiers lus pour 'fabriquer' un DICOMDIR 'a la gdcm1' 
(ou faire un browser evolue).

(dans gdcm, un utilisateur peut demander, par programme, de faire 
figurer davantage de choses sans *son* DICOMDIR. Il faut qu'il puisse le 
faire de maniere simple avec gdcm2)

> Cette remarque devrait etre dans l'ImageReader, si c'est pas clair je 
> peux mettre plus de details. J'aime toujours pas le AddForceLoad, 
> surtout qd dans notre cas c'est linverse : par defaut on ne lit rien 
> (Parsing).

Effectivement, puisqu'on ne charge *rien* par defaut, ce n'est pas 
AddForceLoad, mais AddLoad qu'il faudrait l'appeler.

> Uniquement une classe specialiser pour les DICOMDIR pourra demander 
> des infos precises (intelligentes).

La liste des info pour creer le DICOMDIR est dans 
Tests/Parser/TestAllLoadMininumStuff.cxx (a mettre ailleurs, plus tard)
Mais cette liste 'minimum' de tags a charger le sera aussi si on veut 
faire un browser d'images médicales (cf celui de e-film, ou, encore 
mieux, celui de CreaTools.
L'utilisateur final (celui qui tape sur le clavier) peut demander, avant 
de selectioner le directory qu'il veut browser, des champs 
supplementaires a afficher (si, par exemple, il y a des info pertinentes 
pour lui dans un champ non prévu au depart)

>
> Mathieu
> (*) Read est different selon que l'on lit du DICOM ou ACR NEMA. 

Tu m'avais deja dit ca.
Je ne suis pas encore descendu dans le code suffisament profond pour en 
voir l'interet....
Ce que tu appeles DICOM, c'est un fichier commencant par un file 
preamble de 128 octets, puis 'DICM', puis le groupe 2, puis le groupe 8, 
c'est ca?
Et ACR-NEMA, tout le reste?
-> Il y a eu une transition lente entre ACR-NEMA et DICOM, ce qui fait 
que l'on a plein d'images 'deja plus ACR-NEMA' (elles sont, par exemple, 
Explicit VR), et 'pas encore DICOM' (elles n'ont pas de groupe 0002)

> Faire une classe laisse aussi l'option aux advanced users de faire une 
> sous classes plus intelligente...
>
> On 1/6/06, *Jean-Pierre Roux* <jpr at creatis.insa-lyon.fr 
> <mailto:jpr at creatis.insa-lyon.fr>> wrote:
>
>     Salut, Mathieu.
>
>     --> Veux-tu dire que ces options existent, ou bien que c'est qq
>     chose qui devra etre ajouté?
>
>     >+
>     >+ TERMINOLOGY:
>     >+ - SKIP: DICOM has Group Length which allow us to skip elements
>     >+ - Seek: Read a Group/Element+Length and then *seek* through an
>     element
>     >+ - Parse: Browse through a DICOM file without loading any
>     information other than the minimum need for it's parsing (almost
>     nothing for ACR, and group 0002 for DICOM)
>     >+ - Load: Actually load each and every single element of a DICOM
>     file. Very usefull for a PRINT operation
>     >+ - DUMP/PRINT: Operation that consist of displaying all
>     information (up to a certain level of detail) contained in a DICOM
>     file
>     >
>     -->J'ai modifie l'operateur << de Value pour qu'il affiche, lorsque
>     c'est possible la valeur des DataElement.
>     L'option par defaut est donc actuellement Load, c'est ca?
>
>     --> Je n'ai pas trouve ce qu'il fallait faire, (ou si ca existe) pour
>     charger (recursivement) une SequenceOfItems.
>     Ca n'est pas fait par defaut, n'est ce pas?
>     C'est une bonne option, car dans 99% des cas, on se tape de leur
>     contenu.
>     Si l'utilisateur en a besoin (par exemple 'Icon Image Sequence'), il
>     devrait pouvoir faire qq chose comme 'ForceLoad(tag)'.
>     Dans le cas d'un DICOMDIR, *toutes* les info pertinentes sont dans une
>     seule SequenceOfItems. Il est donc important qu'on puisse la
>     charger de
>     maniere simple.
>



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
Gdcm-developers mailing list
Gdcm-developers at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gdcm-developers



More information about the Dcmlib mailing list