forked from malaterre/GDCM
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
405 lines (374 loc) · 20.7 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
PrepGroupName.cxx does not handle Pixel Data group name since it has a space in the name...
-----------------------------------------------------------------------
gdcmDictPrinter allowed me to find bug in dclunie tool:
gems.tpl:(0043,001b) VERS="GEM" VR="SS" VM="1" Owner="GEMS_PARM_01"
-----------------------------------------------------------------------
dcmtk is confused:
(0028,0034) IS [ 185\185] # 8, 1 Pixel Aspect Ratio
-----------------------------------------------------------------------
Offer mapping from UID to Manufacturer: eg. 1.3.12.2.1107 -> SIEMENS
-----------------------------------------------------------------------
> We use a Philips ENVISOR machine to do Cardiac TOE Echo. We are about
> to produce a CD of some of the Echo loops. Can anyone suggest a good
> DICOM to AVI converted for Echo loops.
we have implemented a tool called "dcm2avi" that can be used for this
purpose. Please send an email to dicom/at/offis/dot/de in case you are
interested in an evaluation version of this program.
-----------------------------------------------------------------------
from sup58_ft2.doc
>CTDIvol (0018,9445) 2C Computed Tomography Dose Index (CTDIvol), im mGy according to IEC 60601-2-44, Ed.2.1 (Clause 29.1.103.4), The Volume CTDIvol. It describes the average dose for this frame for the selected CT conditions of operation.
-----------------------------------------------------------------------
Calling dcmodify [1][2] with option --erase-tag should do what you want.
-----------------------------------------------------------------------
You should be able to say: this file is a ACR NEMA read it ! So the wizard
should be bypass and the discovery step can be skipped.
-----------------------------------------------------------------------
Need to handle image rotation/flip
(0070,0041) CS [Y] # 2, 1 ImageHorizontalFlip
(0070,0042) US 270 # 2, 1 ImageRotation
-----------------------------------------------------------------------
Parsing SQ can actually double the time to read a file
/images/test_DCEMRI/04-004-4/MR-20070129/Perfusion/Perfusion_205_
-----------------------------------------------------------------------
The NEMA Enhanced CT and MR multi-frame test sets contain a couple of
images that have Supplemental Palette Color LUTs. See:
"ftp://medical.nema.org/medical/dicom/Multiframe/"
and in particular:
CT0012
CT0013
CT0014
GFUNCST2
MRVPWCB2
-----------------------------------------------------------------------
Wrong Private element in dcmtk:
(0009,1227) TM [210959.000000] # 14, 1 LastMoveTime
I found:
diction.pfl:Table Zero Time,0009,SIEMENS CM VA0 CMS,27,TM,1
-----------------------------------------------------------------------
Make File Meta Information configurable from CMake
-----------------------------------------------------------------------
Add progress to gdcmscanner
-----------------------------------------------------------------------
FIX the reading of 3F3F SQ in: Bug_Philips_ItemTag_3F3F
-----------------------------------------------------------------------
gdcm does not read the associated data in RT Object file - RTImage and RTDose. For RTImage pixel spacing is in 3002,0011 and position of upper left corner is in 3002,0012.
-----------------------------------------------------------------------
Extract Mosaic as 3D volume:
afni.nimh.nih.gov/pub/dist/doc/misc/DICOM/data/From_TomRoss/20021009-1-Toms_fMri/4-ep2d_bold_moco_ax3x3-192/image-00002-000042.IMA
-----------------------------------------------------------------------
Correctly display:
PHANTOM.MR.CARDIO_COEUR_S_QUENCE_DE_REP_RAGE.9.257.2008.03.20.14.53.25.578125.43151705.IMA
-----------------------------------------------------------------------
TODO: need a gdcm::ExtractOverlayFromPixelDataFilter
to rewrite a gdcm::Image
-----------------------------------------------------------------------
Provide operator() == for String<LO> (should discard length, space char...)
-----------------------------------------------------------------------
Should handle old Date format (with - separator)
-----------------------------------------------------------------------
vtkMedicalImageProp user defined value should be written back to disk
-> TODO: SQ will be difficult to handle
-----------------------------------------------------------------------
Filter should use OpenMP ?
-----------------------------------------------------------------------
GDCMFakeJPEG should be detected (at least a warning
-----------------------------------------------------------------------
Hum, looks like vs 2007+1 can be used to redistribute binaries:
http://www.microsoft.com/express/support/faq/
# Can I use Express Editions for commercial use?
Yes, there are no licensing restrictions for applications built using Visual Studio Express Editions.
Some random links:
http://blogs.msdn.com/nikolad/archive/2006/04/11/Download-location-for-VCRedist.aspx
http://blogs.msdn.com/vcblog/archive/2007/10/12/how-to-redistribute-the-visual-c-libraries-with-your-application.aspx
-----------------------------------------------------------------------
TODO:
/home/mmalaterre/Creatis/gdcmDataExtra/gdcmSampleData/images_of_interest/ITK-GDCM-1.2.2.saysExplicitVR-butIsImplicitVR.dcm
-----------------------------------------------------------------------
ZSpacing for RTDoseStorage is not handled properly:
bin/gdcmvtkGDCMTests TestvtkGDCMImageWriter BogugsItemAndSequenceLengthCorrected.dcm
-----------------------------------------------------------------------
There are still some subtle issues with Enhanced modality:
* what if frames are not order according to IPP ?
* what is the intercept/slope are not constant throughout the frames ?
-----------------------------------------------------------------------
Add support for namelink packaging
-----------------------------------------------------------------------
Need a MediaStorage::IsRetired / UIDs::IsRetired
-----------------------------------------------------------------------
What if:
(0018,0084) DS [ 63.89.73.30] # 10,1 Imaging Frequency
-----------------------------------------------------------------------
play with imageplanewdg / Orthoplanewidget
http://www.itk.org/pipermail/insight-users/2006-January/016463.html
-----------------------------------------------------------------------
window level in Enhanced objects is not handled
-----------------------------------------------------------------------
wow cpack is finally documented:
http://www.itk.org/Wiki/CMake:Component_Install_With_CPack
-----------------------------------------------------------------------
TODO:
gdcmData/GDCMPrinterDisplayUNasSQ.dcm
-----------------------------------------------------------------------
http://mlblog.osdir.com/programming.swig/2003-02/msg00053.html
-----------------------------------------------------------------------
doxygen is pretty advanced for this project:
http://sourceforge.net/projects/od1n/
-----------------------------------------------------------------------
STL-based (non-validating) XML Parser
http://www.codeguru.com/cpp/i-n/internet/xml/article.php/c3451/
-----------------------------------------------------------------------
There is subttle bug in the Part3 support:
<entry group="0010" element="1002" name="Other Patient IDs Sequence" type="3">
<description>A sequence of identification numbers or codes used to identify the patient, which may or may not be human readable, and may or may not have been obtained from an implanted or attached device such as an RFID or barcode.
If present, shall contain one or more items.</description>
</entry>
<entry group="0010" element="0020" name=">Patient ID" type="1">
<description>An identification number or code used to identify the patient.</description>
</entry>
<entry group="0010" element="0021" name=">Issuer of Patient ID" type="1">
<description>Identifier of the Assigning Authority that issued the Patient ID.</description>
</entry>
<entry group="0010" element="0022" name=">Type of Patient ID" type="1">
<description>The type of identifier in this item. Defined Terms:
TEXT
RFID
BARCODE
Note: The identifier is coded as a string regardless of the type, not as a binary value.</description>
What this means is that 10,22 is Type 1 only within sequence 10,1002
-----------------------------------------------------------------------
Yet another brain dead philips DICOM image:
gdcmDataExtra/gdcmBreakers/Unexpected-Sequence-Terminator/images/Philips-Intera_Unexpected_Sequence_Terminator_1.dcm
(2005,e005) DS (CS) [75.0] # 4,1 Synergy Reconstruction Type
...
(2005,e030) FL 79.9997\0 # 8,1 (2) ?
-----------------------------------------------------------------------
Thread with Philips BigEndian/LittleEndian inversion
http://www.creatis.insa-lyon.fr/pipermail/dcmlib/2004-November/000898.html
-----------------------------------------------------------------------
Looks like ELSCINT1 is doing a group xx for element:
{0x6003,0x0010,"ELSCINT1",VR::CS,VM::VM1,"Text Overlay Flag",false },
need to repeat for:
{0x6005,0x0010,"ELSCINT1",VR::CS,VM::VM1,"Text Overlay Flag",false },
and so and so forth...
-----------------------------------------------------------------------
SIEMENS MrProt / IDEA / Numaris stuff:
apt-get source minc-tools
conversion/dcm2mnc/dicom_to_minc.c
./conversion/dcm2mnc/siemens_to_dicom.c
./conversion/dcm2mnc/siemens_header_defs.h
http://www.nmr.mgh.harvard.edu/~greve/dicom-unpack
http://atonal.ucdavis.edu/matlab/fmri/spm5/spm_dicom_convert.m
-----------------------------------------------------------------------
cmake export() might be helpful to cleanup cmakelists.txt
-----------------------------------------------------------------------
BasicOffsetTable is never computed...
-----------------------------------------------------------------------
Need a gdcm::DataSetToPythonDict class
-----------------------------------------------------------------------
Need a gdcm::ApplyRuleFilter class
where Addrule:
void AddRule( void(*func)(DataElement &de) )
where
void func(DataElement &de)
{
if( de.IsPrivate() )
{
ds.Remove( de );
}
}
-----------------------------------------------------------------------
Fix the UseGDCM. So that user can do:
FIND_PACKAGE(GDCM REQUIRED)
INCLUDE( ${GDCM_USE_FILE} )
ADD_EXECUTABLE(bla bla.cxx)
TARGET_LIBK_LIBRARIES(bla vtkgdcm)
-----------------------------------------------------------------------
http://www.4bitterguys.com/phpBB2/viewtopic.php?t=7426
http://www.data-compression.info/ABC/index.htm
http://www.geocities.com/truth_out_there/additionalinfo.html
-----------------------------------------------------------------------
FIX data dict, missing bunch of old acr nema stuff
-----------------------------------------------------------------------
Create a toplevel main gdcmswig.i to avoid code duplication for C# and python
-----------------------------------------------------------------------
This is a SC, with Pixel Spacing and Rescale Slope/Intercept
gdcmData/WeirdOverlayThingy.dcm
Using gdcm2vtk will loose everything...
-----------------------------------------------------------------------
C# has some sort of compilation in XML to construct the documentation... to investigate
-----------------------------------------------------------------------
RegionOfInterestImageFilter is the streaming interface for ITKIO
-----------------------------------------------------------------------
http://www.stack.nl/~dimitri/doxygen/external.html
with tag file from:
http://www.vtk.org/doc/release/5.2/
or:
http://www.vtk.org/doc/nightly/
-----------------------------------------------------------------------
TODO: explicit TS for:
LUTDATA_implicit_OW.dcm
-----------------------------------------------------------------------
Fix gdcm::Sorter::SetSortFunction for wrapped language
-----------------------------------------------------------------------
Add more siemens stuff from:
dicom_to_minc.c
apt-get source minc
-----------------------------------------------------------------------
file meta header does not check for valid of imp class uid
Need to be UIDGenerator::IsValid
-----------------------------------------------------------------------
Bug gdcmconv should properly autorecompute explicit length for:
BogusItemLengthImplicitPrivateAtt.dcm
-----------------------------------------------------------------------
gdcmconv --squeeze to squeeze extra space (trailing)
-----------------------------------------------------------------------
gdcmimg /usr/share/VTKData/Data/beach.jpg out.dcm
gdcmraw out.dcm out.jpg
-> out.jpg still contains the JFIF marker (color space...)
-----------------------------------------------------------------------
BUG: SERIOUS gdcm does not allow creation of such file
dcmcjpeg +fs 100 GE_DLX-8-MONO2-Multiframe.dcm /tmp/jpeg3.dcm
tricky for jpeg 2000
-----------------------------------------------------------------------
Following same bug: need to fix gdcmconv --split 65536 for multiframe
also need to check BasicOffset is properly discarded
-----------------------------------------------------------------------
Can I handle SetImageFormat (invalid) properly ?
eg. vtkImageData is single comp but ImageFormat=RGB ...
-----------------------------------------------------------------------
FIXME:
gdcmconv --deflated gdcmDataExtra/gdcmNonImageData/c15-5.dcm out.dcm
could not read: gdcmDataExtra/gdcmNonImageData/c15-5.dcm
-----------------------------------------------------------------------
Technically nothing prevent someone from using JPegcompress on PDF object
So gdcm::ImageChangeTransferSyntax should let non-image pass
-----------------------------------------------------------------------
Add support for invalid SC generated from ITK/gdcm 1.2.4
-----------------------------------------------------------------------
When converting an Enhanced CT, IOP is moved from root dataset to
Sharedgroups but original attribute is kept (should be removed)
same goes for WindowLevel, Rescale ...
-----------------------------------------------------------------------
old SC and numberOfFrames > 1:
ITK_GDCM124_MultiframeSecondaryCaptureInvalid.dcm
-----------------------------------------------------------------------
TODO: try to handle:
gdcmData/gdcm-CR-DCMTK-16-NonSamplePerPix.dcm
-----------------------------------------------------------------------
OPJ_LIMIT_DECODING to parse header only
-----------------------------------------------------------------------
check volume_to_jp3d/ jp3d_to_volume to handle JPEG2000 Part 2
-----------------------------------------------------------------------
Write a gdcm2jp2 that would be cool ?
Need to handle PALETTE_COLOR in JP2 palettetized (PCLR)
There is only one problem with slope/rescale -> float
-----------------------------------------------------------------------
Private tags extracted from private DCS is cool, but one would also
need Defined terms, that would be *very* cool !
-----------------------------------------------------------------------
Amicas JP2 to DICOM:
http://www.mikekristofferson.com/misc/mri/amicas-patients/
-----------------------------------------------------------------------
Prepare a DICOM file with VR:UN element with Value Length odd ... what is the padding then ?
-----------------------------------------------------------------------
Add example of JPC (redundancy 3D volume / J2K)
-----------------------------------------------------------------------
Create a PDF Storage class with a trailing Pixel Data element to test broken DICOM implementation
-----------------------------------------------------------------------
Prepare a Basic Pixel Spacing Calibration example but with SC SOP so that
we have Nominal Scanned Pixel Spacing case...
-----------------------------------------------------------------------
I think there is a bug in ByteValue::SetByte. What if byte buffer is 0xfffffffe long ?
internally I ++ the length, which would make it an undefined length.
-----------------------------------------------------------------------
Get rid of polarssl now that OpenSSL completely replaces it
... I might even have to get rid of OpenSSL
http://apps.sourceforge.net/mediawiki/gdcm/index.php?title=Tools/openssl#Giving_up_on_OpenSSL
-----------------------------------------------------------------------
gdcmdump map-uid-names
-----------------------------------------------------------------------
+/*
+ * Windows _snprintf and _vsnprintf are not compatible to linux versions.
+ * Result value is not size of buffer needed, but -1 if no fit is possible.
+ *
+ * This fuction tries to 'fix' this by at least suggesting enlarging the
+ * size by 20.
+ */
-> polarssl
-----------------------------------------------------------------------
Update charls for bug fix (16bits RGB still not working)
-----------------------------------------------------------------------
vtkGDCMImageReader::GetDirectionCosines(uint i)
-----------------------------------------------------------------------
http://blog.mozilla.com/nnethercote/2009/02/27/eliminating-undefined-values-with-valgrind-the-easy-way/
> And just think, if C++ warned about fields uninitialised by constructors,
I think adding -Weffc++ to the CXXFLAGS should help about that.
-----------------------------------------------------------------------
gdcmimg should strip the JFIF / JP2 markers
-----------------------------------------------------------------------
TODO: to get rid of openssl on Win32 one could use the CryptoAPI:
[Example C Program: Signing a Message and Verifying a Message Signature]
http://msdn.microsoft.com/en-us/library/aa382372.aspx
http://www.ureader.com/msg/16591281.aspx
-----------------------------------------------------------------------
Fix gdcm::spacing before release CP-586
-----------------------------------------------------------------------
This is part of CPack's API. There is no API in the make system to use
this feature.
You have to run "make preinstall" to prepare the installation and then
run "cmake -DCOMPONENT=Runtime -P cmake_install.cmake" to do the
component-specific installation.
-----------------------------------------------------------------------
vtkGDCMImageReader:: SetReferencedStudyUID()
to allow creation of DERIVED / SECONDARY
-----------------------------------------------------------------------
Make sure Overlay can reference original instance
question:
image is a reslice of original image, how do I map to original UID ?
-----------------------------------------------------------------------
* There is a current limitation of not handling Referenced SOP Class UID /
* Referenced SOP Instance UID simply because the gdcm::Scanner does not allow us
* See PS 3.11 / Table D.3-2 STD-GEN Additional DICOMDIR Keys
-----------------------------------------------------------------------
RTSTRUCT support
http://www.nabble.com/How-to-load-sequence-items-td20622657.html
Re: How to load sequence items
-----------------------------------------------------------------------
# CPP check
find_program(CPPCHECK_EXECUTABLE NAMES cppcheck
DOC "cppcheck - static check tool")
add_custom_target (cppcheck ${CPPCHECK_EXECUTABLE} -a -f -q
${GDCM_SOURCE_DIR}"
COMMENT "Checking C++ code")
-----------------------------------------------------------------------
Reduce excess linkage:
http://wiki.mandriva.com/en/Development/Tasks/Packaging/Problems/Underlinking
http://wiki.mandriva.com/en/Overlinking
-----------------------------------------------------------------------
Generate doc for python automatically
-----------------------------------------------------------------------
Display Shutter: It should not invert to white when radiologist invert
lookup table
-----------------------------------------------------------------------
Private Tags IMPAC
http://www.varian.com/media/oncology/services_and_support/pdf/dicom/System_Server_8.2_8.5_8.6.pdf
http://www.varian.com/media/oncology/services_and_support/pdf/dicom/System_Server_DCS.pdf
-----------------------------------------------------------------------
http://www.w3.org/People/Bos/JPEG-XMP/
rdjpgxmp : extract XMP metadata from a JPEG file
-----------------------------------------------------------------------
PDFParser:
http://www.codeproject.com/kb/cpp/ExtractPDFText.aspx
http://www.codeproject.com/KB/recipes/mgpdfreader.aspx
passepartout-0.6› src› ps› pdfparser.ccC
http://www.cocoabuilder.com/archive/cocoa/114723-pdf-meta-data.html#115418
http://blog.didierstevens.com/programs/pdf-tools/
http://sourceforge.net/projects/pdfsqueezer/develop
-----------------------------------------------------------------------
FIX Iterator in gdcm::Dict
-----------------------------------------------------------------------
Structured REport for Presentation
-----------------------------------------------------------------------
WADO instead of DICOM protocol
-----------------------------------------------------------------------
http://assimp.sourceforge.net/main_license.html