[vtk-developers] ARB - vtkDICOMImageReader
Turek, Matthew W (Research)
turek at crd.ge.com
Mon Mar 31 13:34:35 EST 2003
> Our experience at Kitware is that anything involving DICOM is tricky (as
> you probably know), especially when it comes to write something robust
> enough to support the huge number of "wrong" DICOM implementations out
> there :) We have used ctnlib for some time in our internal DICOM reader,
> and we are slowly switching to DCMTK now.
> A DICOM reader has been a request for a long time, so adding this class
> would be a good thing. Nevertheless, it would also probably mean that you
> should expect to support this class a lot because of users "complaining"
it
> does not read their vendor-specific DICOM files.
Yes, it is a pain to do anything DICOM. However, I already have to support
ITK's DICOMParser which will be the same for this vtk class.
> - What are you planning to put in Utilities/ ? If it is a library, and it
> is used in ITK already, there might be a "multiple symbols" issue for
> people using both VTK and ITK within the same project.
I have prefixed the library name with vtk (vtkDICOMParser) -- just like
libjpeg. I build InsightApplications\vtkITK which mixes both vtk and ITK
(with the DICOMParser in each) and I haven't seen any problems. However, I
can't say this will be the case for every platform.
> - It should be a subclass of vtkImageReader2.
It is.
> - Does this code or lib use features we don't support in VTK (like the
bool type)
The parser library does use bool. It also uses ansi stdlib exclusively. I
have it guarded in my CMakeLists.txt to only build with ansi stdlib.
> - Does this class support Encapsulated Syntax (JPEG for example) ? What
> kind of scalars does it support (and how are you handling the Shift/Scale
> issue) ?
There is no support yet for any Encapsulated Syntax (JPEG, RLE, etc).
RBG/PAL isn't handled correctly yet.
The DICOMParser does the shift scale for you and converts to the "right"
data type based on the types of the shift and scale. For example, a float
shift/scale will produce float output data. Integer shift scale and integer
data produces integer output.
> - How are you handling the orientation/position of a slice ?
I'm assuming slices perpendicular to the z-axis right now. This can be
"upgraded" later.
By the way, my test suite includes the following files from your medical
imaging samples http://www.barre.nom.fr/medical/samples/
CR-MONO1-10-chest
CT-MONO2-16-brain
CT-MONO2-16-ort
CT-MONO2-16-ankle
CT-MONO2-8-abdo
CT-MONO2-12-lomb-an2
MR-MONO2-12-an2
MR-MONO2-16-head
MR-MONO2-16-knee
OT-MONO2-8-hip
OT-PAL-8-face
OT-MONO2-8-colon
OT-MONO2-8-a7
US-RGB-8-esopecho
US-RGB-8-epicard
MR-MONO2-8-16x-heart
NM-MONO2-16-13x-heart
US-MONO2-8-8x-execho
Matt
More information about the vtk-developers
mailing list