gdcm/TODO

414 lines
21 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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="&gt;Patient ID" type="1">
<description>An identification number or code used to identify the patient.</description>
</entry>
<entry group="0010" element="0021" name="&gt;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="&gt;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://gdcm.sourceforge.net/wiki/index.php/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 function 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
-----------------------------------------------------------------------
Missing dict for: SIEMENS MED SP DXMG WH AWS 1
http://www.medical.siemens.com/siemens/en_GLOBAL/rg_marcom_FBAs/files/brochures/DICOM/sp_mammo/WH_AWS_VB30_dcs_ekl.pdf
-----------------------------------------------------------------------
Other quantization algorithm:
http://alpng.sourceforge.net/octree.html
-----------------------------------------------------------------------
http://www.hitachimed.com/idc/groups/hitachimedical/documents/supportingdocumentpdf/poc_013216.pdf