[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