[Insight-developers] GDCM eventually replacing DICOMImageIO2

Mathieu Malaterre mathieu.malaterre at kitware.com
Mon Nov 29 16:16:53 EST 2004


Jim,

Miller, James V (Research) wrote:
> The slope and offset are more that just "for display".  They indicate
> how to convert from the (usually) 16 bit storage format to the appropriate
> dynamic range of the data.  For CT, the slope and offset are usually
> 1 and -1024 (for data on some PACS systems, the slope may be 2 and the 
> offset -2048).  Applying the slope and offset is important for CT to 
> convert the storage data to Hounsfeld units. Each vendor could use a
> different slope and offset.  For proper processing, we should always 
> present CT to ITK in Hounsfeld units.


Quick question when you say 'offset' you mean intercept ?

Looking at the DICOM2 code + Utilities I don't see where it is done. It 
looks like the rescale was only done is the slope/intercept were 
floating number.
But it looks like you want rescale anytime slope != 1.0 and intercept != 
0.0, correct ? No particular attention should be done based on Modality ?

> For PET the situation is more insipid.  PET data cannot be stored in 
> 16 bits without loss of information.  To limit the loss, each PET slice
> is scaled independently to fit in 16 bits.  So each PET slice in the 
> series will have a different slope and intersept.

Thanks for clarification, I wasn't aware of this 'feature' :)


> In the DICOMParser code, we took the position that the pixel data returned
> from the library would already have the appropriate slope and offset 
> applied.  This means that CT data is always presented to ITK in Hounsfeld
> units and PET data is reconciled to a common dynamic range.
> 
> To apply the slope and offset correctly, we looked at the magnitude of the 
> slope.  If slope was exactly 1, we kept the pixel data as an integer.
> If the slope was different from 1, we returned the pixel data as float.
> The ITK readers will convert the pixel data to whatever datatype the user
> requested but the DICOM library always returns the data in the most
> appropriate type.

Thanks,
Mathieu




More information about the Insight-developers mailing list