]> Creatis software - gdcm.git/blob - TODO
ENH: * Finished lossless transition, not only do we now read all lossless jpeg
[gdcm.git] / TODO
1 -----------------------------------------------------------------------------
2 Proposed Template of an entry in this TODO:
3 (Note: Date is the date of registering of first demand.)
4
5 -------------
6 Description:
7 Date:
8 Attributed:
9 Details:
10 Comments:
11 -------------
12
13
14 -----------------------------------------------------------------------------
15 Description:  gdcmJpeg8 is strictly a copy/paste of gdcmJpeg12.cxx.
16 Date: 2004 Oct 13
17 Attributed: 
18 Details:
19 We should write the code in a common place, then include this 'cxx' file so the the define from gdcm_mangle redefine to the proper one.
20 Comments:
21 This will be usefull since I may need in the future a 16bits version of this reading
22 -----------------------------------------------------------------------------
23 Description: Change jpeg 'exit' call to standard c++ exception using the jpeg error
24 handler
25 Date: 2004 Oct 8
26 Attributed: 
27 Details:
28 Comments:
29 -----------------------------------------------------------------------------
30 Description: Add kwsys as a subdir somewhere in gdcm
31 Date: 2004 Oct 8
32 Attributed: Mathieu
33 Details:
34 Comments:
35 -----------------------------------------------------------------------------
36 Description: ljpeg
37 Date: 2004 Oct 8
38 Attributed: Mathieu
39 Details:
40 Comments: ljpeg was rip from medcon and not the official one. medcon tried to
41 optimised function using MACRO (doh!), so it make its very unreadable and very
42 hard to fix warnings. Should go back to official source, copy proper copyright
43 and fix warnings on dashboard
44 13/10: update apparently no dicom toolkit use this lib as it is too buggy. We should use the ls-patch for ijg instead. Thus we can safely get rid of that lib.
45 14/10: PHILIPS_Gyroscan-12-MONO2-Jpeg_Lossless.dcm prove that I was right the old Cornwell lib is buggy and does not read anything.
46 -----------------------------------------------------------------------------
47 Description: Extent reading support
48 Date: 2004 Oct 8
49 Attributed: Mathieu
50 Details:
51 Comments: All ITK/VTK readers support selecting extent. gdcm should support selecting
52 extent before being inserted into ITK
53 -----------------------------------------------------------------------------
54 Description: Generate new UID each time we write DICOM
55 Date: 2004 Oct 8
56 Attributed: Mathieu
57 Details:
58 Comments: According to DICOM ref a new UID should be created each we write a
59 DICOM images. I guess it should be an option so that we can still use md5sum to
60 check dicom file. The proposed way was:
61 http://www.creatis.insa-lyon.fr/pipermail/dcmlib/2004-September/000611.html
62
63 Bah, comme Win32 pose encore pb:
64   echo "gdcm" | od -b
65   0000000 147 144 143 155 012
66 et si on prenait:
67  radical + 147.144.143.155 + IP + time()
68
69 -----------------------------------------------------------------------------
70 Description: vtk/vtkGdcmReader doesn't positionate the normal to the image
71 Date: 2004 Oct 1
72 Attributed:
73 Details: vtkGdcmReader::CheckFileCoherence() sets the DataOrigin[i]
74          but doesn't set the plane (image seen in 3D) normal (is it
75          possible any how). This plane normal could be extracted from 
76          the "orientation" info of the gdcmHeader ( refer to
77          grep "Orientation" Dicts/dicomV3.dic).
78          Problem exhibiting this defect: cine loop on a pile of images
79                whose Origin is correct, but whose normal is not set will
80                plainly suck !
81 Comments:
82         * vtkGdcmReader inherits from vtkImageReader which aggregates
83           a vtkTranform. vtkGdcmReader could store (when the user requires
84           it, see below) the origin/normal taken from the Dicom Header
85           within this vtkTransform (looks like a natural place to store
86           this spacial information).
87         * Both settings of the origin and/OR the normal of the plane (image)
88           should be an option defined with a flag (On/Off) in the
89           vtkGdcmReader...
90 -----------------------------------------------------------------------------
91 Description: Fix the Python wrappers
92 Date: 2004 Sep 24
93 Attributed: no
94 Details:
95 Comments:
96 -----------------------------------------------------------------------------
97 Description: clean up gdcmFile/gdcmHeader relationship
98 Date: 2004 Sep 24
99 Attributed:
100 Details:
101  * simplify the API for the user (no need to call GetImageData() before
102    calling Write().
103  * avoid memory leaks with with Pixel_Data.
104 Comments:
105 -----------------------------------------------------------------------------
106 Description: remove all autotools references
107 Date: 2004 Sep 24
108 Attributed: no
109 Details:
110 Comments:
111 -----------------------------------------------------------------------------
112 Description: introduce namespace "gdcm"
113 Date: 2004 Jul 30
114 Attributed:
115 Details:
116 Comments:
117   1/ Problem: using enum with name like 'Unknow' on .Net, or LP on cygwin 
118               causes problems.
119   2/ Question: when introducing the namespace, should we remove the gdcm
120               prefix from classes or keep it ?
121 -----------------------------------------------------------------------------
122 Description: complete the doxygen Documentation
123 Date: 2004 Sep 24
124 Attributed:
125 Details:
126 Comments:
127 -----------------------------------------------------------------------------
128 Description: test the private dictionary part.
129 Date: 2004 Sep 24
130 Attributed:
131 Details:
132 Comments:
133  * Frog: where can we obtain such a private/dictionary and the corresponding
134          Dicom file ? Any examples on-line ?
135 -----------------------------------------------------------------------------
136 Description: fix definitively the memory leaks problems.
137 Date: 2004 Sep 24
138 Attributed:
139 Details:
140 Comments: There is a nightly dashboard that run valgrind every night
141 (zorglub | GDCM-Linux-g++)
142 -----------------------------------------------------------------------------
143 Description: test gdcm on a big endian OS.
144 Date: 2004 Sep 24
145 Attributed:
146 Details:
147 Comments: There is a nightly dashboard that run on MacOSX each nite
148 (midworld.kitwarein | GDCM-DarwinG5-g++ )
149 -----------------------------------------------------------------------------
150 Description: More tests !
151 Date: 2004 Sep 24
152 Attributed:
153 Details:
154  * an example of new test could be to clone a Dicom image by 
155    copying gdcmDocEntry one after the other
156 Comments:
157  * look at traversal used in Example/FlatHashTablePrint.cxx
158 -----------------------------------------------------------------------------
159 Description: revoir la gestion des resources, win32 permet d'inclure des
160    fichiers texte (=dicomV3.dic) dans une dll ou quelquechose du genre.
161 Date: 2004 Sep 24
162 Attributed: Mathieu
163 Details:
164 Comments:
165  * Frog: no comprendo !? De plus est-ce portable ?
166  * To improve load time it could be usefull to have the dictionary directly in
167  'c++' code or in a more binary format.
168  * This will also solve some issues where /dummy/ user did nor set
169  GDCM_DICT_PATH properly neither 'make install'
170 -----------------------------------------------------------------------------
171 Description: Convert the C-like IO to C++ IO:
172 Date: 2004 Jul 30
173 Attributed:
174 Details:
175    remove all the C-oriented IO references like FILE*, fread...
176    and replace them with the C++ fstream notation.
177    Provide overload of operators << and >> for any gdcm class using file IO.
178 Comments:
179  * Question: the underlying jpeg libraries (written in C) use the FILE*
180    notation. Is there a way to still use fstream in gdcm, and 
181    build or pass the proper FILE* to jpeg libs ?
182  * Binary IO references are available at
183    http://www.angelfire.com/country/aldev0/cpphowto/cpp_BinaryFileIO.html
184  * The internal API should be rewritten so that gdcm speaking to jpeg lib is
185    done with stream/string and not directly opened FILE*
186  * No stdio.h anymore anywhere tolerated !
187 -----------------------------------------------------------------------------
188 Description: generate methods based on VM.
189 Date: 2004 Jul 30
190 Attributed:
191 Details:
192  * cmake should parse le DICOM dictionary to generate methods like
193    gdcm???::SetImagePosition(int, int)
194    {
195      //generated content do not edit
196      ...
197    }
198    gdcm???::SetImageNumber(int)
199    {
200      //generated content do not edit
201      ...
202    }
203 Comments:
204  * Regrain: a dicom dictionary entry name is NOT UNIQUE [this means
205      two tags=(group, element) can share the same name].
206      What should the wrapper do in such a case !?
207  * Frog: what does VM stand for ?
208  * VM = Value Multiplicity
209 -----------------------------------------------------------------------------
210 Description: Add information on supported imagers (constructor/model)
211 Date: 2004 9 7
212 Attributed:
213 Details: in order to promote gdcm make a list (on the web pages)
214          of images successfully parsed based on a constructor/model ordering
215 Comments: * frog: gdcmData only lists pathological images. How to collect
216     the ones gdcm works smoothly with (hopefully gdcmData is a small
217     subset of what we would like).        
218 -----------------------------------------------------------------------------
219 Description: Add a GetVersion() global function.
220 Date: 2003 july 7
221 Attributed:
222 Details: This is to be used for version assertion with gdcmPython
223 Comments:
224 -----------------------------------------------------------------------------
225 -----------------------------------------------------------------------------
226 * vtk/vtkGdcmHeader.cxx: if speed becomes a concern some changes can
227   be made at the cost of memory consumption (refer to header of 
228   vtk/vtkGdcmHeader.cxx)
229 -----------------------------------------------------------------------------
230 * gdcmElValSet::SetElValueLengthByNumber IMNSHO should be trashed.
231   It's only purpose is a onliner substitute to calling GetElValueByNumber
232   and then SetLength. This only obfuscates the caller code more than
233   clarifying it.
234   Besides the definition of gdcmElValSet::SetElValueLengthByNumber itself
235   it quite poor since it is a almost exact copy of
236   gdcmElValSet::GetElValueByNumber except for the returned code.
237   gdcmHeader::SetPubElValLengthByNumber (which is based on 
238   gdcmElValSet::SetElValueLengthByNumber) is used nowhere...
239 -----------------------------------------------------------------------------
240 * Fix the bug in Test/bug1.cxx (see first comment line): Win32 only.
241 -----------------------------------------------------------------------------
242 * All (or at least many of) the methods of gdcmHeader whose only arguments
243   are an ElValue* (e.g.  FindLength, FindVR, LoadElementValue...) can
244   be moved away to ElValue class on condition of transmitting the
245   gdcmHeader.fp attribute. This change should be considered since it
246   would allow those method to avoid artificial calls to ElValue::GetElement(),
247   ElValue::GetVR()...
248 -----------------------------------------------------------------------------
249 * Eat leading_trailing_whitespace (found in python/gdcmPython/gdcmi) should
250   be used when parsing the dictionary in C++ !
251 -----------------------------------------------------------------------------
252 * Group length is not a unique tag in a file. Hence avoid putting it
253   in the element values dictionary without doing something smarter
254   (say, instead of storing the length store the group and the length
255    so we can related a length to a group).
256 -----------------------------------------------------------------------------
257 * GetPubElValByNumber doit faire la difference entre chaine vide 
258   et chaine pas touve''. Eventuellement raiser une exception ?
259 -----------------------------------------------------------------------------
260 * gdcmHeader::LoadElements only loads the element whose length is
261   below the specified size. When accessing the value of such an element
262   the content is unfound ! Find a decent way of loading the value on
263   explicit demand.
264 -----------------------------------------------------------------------------
265 * JPR: fournir une method qui ne fait que lire les elements passes en arguments
266   sous forme d'une liste.
267 -----------------------------------------------------------------------------
268 * JPR: gdcmHeader::CheckSwap() dans le cas ACR pas propre, degager tout de
269   suite si on a deduit que c'en est pas...
270 -----------------------------------------------------------------------------
271 * python /usr/lib/python2.2/site-packages/DaVaW/demo/dvwDcmReader.py
272   and load image /home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
273   will yield wrong coloring scheme as opposed to 
274   affim filein=/home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
275 -----------------------------------------------------------------------------
276 * gdcmFile should implement the following API:
277    gdcmFile WriteDicom;
278    WriteDicom.SetFileName("MyDicomFile.dcm");
279    string * AllTags = gdcmHeader.GetDcmTagNames();
280    WriteDicom.SetDcmTag(AllTags[5], "253");
281    WriteDicom.SetDcmTag("Patient Name", "bozo");
282    WriteDicom.SetDcmTag("Patient Name", "bozo");
283    WriteDicom.SetImageData(Image);
284    WriteDicom.Write();
285
286    Anonymize(ostream& output) {
287       a = gdcmFile("toto1");
288       a.SetPubValueByName("Patient Name", "");
289       a.SetPubValueByName("Date", "");
290       a.SetPubValueByName("Study Date", "");
291       a.write(output);
292    }
293 -----------------------------------------------------------------------------