ITK  4.0.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
itk::GDCMImageIO Class Reference

ImageIO class for reading and writing DICOM V3.0 and ACR/NEMA 1&2 uncompressed images This class is only an adaptor to the gdcm library (currently gdcm 1.2.x is used by default): More...

#include <itkGDCMImageIO.h>

Inheritance diagram for itk::GDCMImageIO:
Collaboration diagram for itk::GDCMImageIO:

List of all members.

Public Types

typedef SmartPointer< SelfPointer
typedef GDCMImageIO Self
typedef ImageIOBase Superclass

Public Member Functions

virtual bool CanReadFile (const char *)
virtual bool CanWriteFile (const char *)
virtual ::itk::LightObject::Pointer CreateAnother (void) const
void GetBodyPart (char *part)
void GetInstitution (char *ins)
virtual IOComponentType GetInternalComponentType () const
void GetManufacturer (char *manu)
void GetModality (char *modality)
void GetModel (char *model)
virtual const char * GetNameOfClass () const
void GetNumberOfSeriesInStudy (char *series)
void GetNumberOfStudyRelatedSeries (char *series)
void GetPatientAge (char *age)
void GetPatientDOB (char *dob)
void GetPatientID (char *id)
void GetPatientName (char *name)
void GetPatientSex (char *sex)
void GetScanOptions (char *options)
void GetStudyDate (char *date)
void GetStudyDescription (char *desc)
void GetStudyID (char *id)
bool GetValueFromTag (const std::string &tag, std::string &value)
virtual void Read (void *buffer)
virtual void ReadImageInformation ()
virtual void SetMaxSizeLoadEntry (const long)
virtual void Write (const void *buffer)
virtual void WriteImageInformation ()
virtual double GetRescaleSlope () const
virtual double GetRescaleIntercept () const
virtual const char * GetUIDPrefix () const
virtual void SetUIDPrefix (const char *_arg)
virtual const char * GetStudyInstanceUID () const
virtual const char * GetSeriesInstanceUID () const
virtual const char * GetFrameOfReferenceInstanceUID () const
virtual void SetKeepOriginalUID (bool _arg)
virtual bool GetKeepOriginalUID () const
virtual void KeepOriginalUIDOn ()
virtual void KeepOriginalUIDOff ()
virtual void SetLoadSequences (const bool)
virtual bool GetLoadSequences () const
virtual void LoadSequencesOn ()
virtual void LoadSequencesOff ()
virtual void SetLoadPrivateTags (const bool)
virtual bool GetLoadPrivateTags () const
virtual void LoadPrivateTagsOn ()
virtual void LoadPrivateTagsOff ()

Static Public Member Functions

static bool GetLabelFromTag (const std::string &tag, std::string &labelId)
static Pointer New ()
static void SetLoadSequencesDefault (bool)
static void LoadSequencesDefaultOn ()
static void LoadSequencesDefaultOff ()
static bool GetLoadSequencesDefault ()
static void SetLoadPrivateTagsDefault (bool)
static void LoadPrivateTagsDefaultOn ()
static void LoadPrivateTagsDefaultOff ()
static bool GetLoadPrivateTagsDefault ()

Protected Member Functions

 GDCMImageIO ()
void InternalReadImageInformation (std::ifstream &file)
bool OpenGDCMFileForReading (std::ifstream &os, const char *filename)
bool OpenGDCMFileForWriting (std::ofstream &os, const char *filename)
void PrintSelf (std::ostream &os, Indent indent) const
 ~GDCMImageIO ()

Protected Attributes

std::string m_FrameOfReferenceInstanceUID
bool m_KeepOriginalUID
double m_RescaleIntercept
double m_RescaleSlope
std::string m_SeriesInstanceUID
std::string m_StudyInstanceUID
std::string m_UIDPrefix

Private Member Functions

 GDCMImageIO (const Self &)
void operator= (const Self &)

Private Attributes

std::string m_BodyPart
TCompressionType m_CompressionType
InternalHeader * m_DICOMHeader
unsigned int m_GlobalNumberOfDimensions
std::string m_Institution
ImageIOBase::IOComponentType m_InternalComponentType
std::string m_Manufacturer
std::string m_Modality
std::string m_Model
std::string m_NumberOfSeriesInStudy
std::string m_NumberOfStudyRelatedSeries
std::string m_PatientAge
std::string m_PatientDOB
std::string m_PatientID
std::string m_PatientName
std::string m_PatientSex
std::string m_ScanOptions
std::string m_StudyDate
std::string m_StudyDescription
std::string m_StudyID
enum  TCompressionType {
  JPEG = 0,
  JPEG2000,
  JPEGLS,
  RLE
}
virtual void SetCompressionType (const TCompressionType _arg)
virtual TCompressionType GetCompressionType () const

Detailed Description

ImageIO class for reading and writing DICOM V3.0 and ACR/NEMA 1&2 uncompressed images This class is only an adaptor to the gdcm library (currently gdcm 1.2.x is used by default):

GDCM 1.2 can be found at: http://www.creatis.insa-lyon.fr/software/public/Gdcm/

CREATIS INSA - Lyon 2003-2008 http://www.creatis.insa-lyon.fr/site/en

Using the CMake variable: ITK_USE_SYSTEM_GDCM it is now possible to use a system installed GDCM 2.x release. GDCM 2.x is now being developped on sourceforge.net :

http://gdcm.sourceforge.net

Documentation:

Warning:
There are several restrictions to this current writer:
  • Eventhough during the writing process you pass in a DICOM file as input The output file may not contains ALL DICOM field from the input file. In particular:
    • The SeQuence DICOM field (SQ).
    • Fields from Private Dictionary
  • Some very long (>0xfff) binary fields are not loaded (typically 0029|0010), you need to explicitely set the maximum length of elements to load to be bigger (see Get/SetMaxSizeLoadEntry)
  • GDCMImageIO was not handling rescale slope/intercept properly. This is fixed as of 11/12/2007
  • In DICOM some field are stored directly using there binary representation. When loaded into the MetaDataDict some fields are converted to ASCII (only VR: OB/OW/OF and UN are encoded as mime64).
Wiki Examples:

Definition at line 86 of file itkGDCMImageIO.h.


Member Typedef Documentation

Reimplemented from itk::ImageIOBase.

Reimplemented in itk::DicomImageIO.

Definition at line 92 of file itkGDCMImageIO.h.

Standard class typedefs.

Reimplemented from itk::ImageIOBase.

Reimplemented in itk::DicomImageIO.

Definition at line 90 of file itkGDCMImageIO.h.

Reimplemented from itk::ImageIOBase.

Reimplemented in itk::DicomImageIO.

Definition at line 91 of file itkGDCMImageIO.h.


Member Enumeration Documentation

Set/Get a compression type to use.

Enumerator:
JPEG 
JPEG2000 
JPEGLS 
RLE 

Definition at line 277 of file itkGDCMImageIO.h.


Constructor & Destructor Documentation

itk::GDCMImageIO::GDCMImageIO ( ) [protected]
itk::GDCMImageIO::~GDCMImageIO ( ) [protected]
itk::GDCMImageIO::GDCMImageIO ( const Self ) [private]

Member Function Documentation

virtual bool itk::GDCMImageIO::CanReadFile ( const char *  ) [virtual]

Determine the file type. Returns true if this ImageIO can read the file specified.

Implements itk::ImageIOBase.

virtual bool itk::GDCMImageIO::CanWriteFile ( const char *  ) [virtual]

Determine the file type. Returns true if this ImageIO can write the file specified. GDCM triggers on ".dcm" and ".dicom".

Implements itk::ImageIOBase.

virtual::itk::LightObject::Pointer itk::GDCMImageIO::CreateAnother ( void  ) const [virtual]

Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.

Reimplemented from itk::LightProcessObject.

Reimplemented in itk::DicomImageIO.

void itk::GDCMImageIO::GetBodyPart ( char *  part)
virtual TCompressionType itk::GDCMImageIO::GetCompressionType ( ) const [virtual]

Set/Get a compression type to use.

virtual const char* itk::GDCMImageIO::GetFrameOfReferenceInstanceUID ( ) const [virtual]

Access the generated DICOM UID's.

void itk::GDCMImageIO::GetInstitution ( char *  ins)
virtual IOComponentType itk::GDCMImageIO::GetInternalComponentType ( ) const [virtual]

Get the original component type of the image. This differs from ComponentType which may change as a function of rescale slope and intercept.

virtual bool itk::GDCMImageIO::GetKeepOriginalUID ( ) const [virtual]

Preserve the original DICOM UID of the input files

static bool itk::GDCMImageIO::GetLabelFromTag ( const std::string &  tag,
std::string &  labelId 
) [static]

Method for consulting the DICOM dictionary and recovering the text description of a field using its numeric tag represented as a string. If the tagkey is not found in the dictionary then this static method return false and the value "Unknown " in the labelId. If the tagkey is found then this static method returns true and the actual string descriptor of the tagkey is returned in the variable labelId.

virtual bool itk::GDCMImageIO::GetLoadPrivateTags ( ) const [inline, virtual]

Parse any private tags in the DICOM file. Defaults to the value of LoadPrivateTagsDefault. Loading DICOM files is faster when private tags are not needed.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 242 of file itkGDCMImageIO.h.

static bool itk::GDCMImageIO::GetLoadPrivateTagsDefault ( ) [inline, static]

Global method to define the default value for LoadPrivateTags. When instances of GDCMImageIO are created, the ivar LoadPrivateTags is initialized to the value of LoadPrivateTagsDefault. This method is useful when relying on the IO factory mechanism to load images rather than specifying a particular ImageIO object on the readers. Default is false.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 272 of file itkGDCMImageIO.h.

virtual bool itk::GDCMImageIO::GetLoadSequences ( ) const [inline, virtual]

Parse any sequences in the DICOM file. Defaults to the value of LoadSequencesDefault. Loading DICOM files is faster when sequences are not needed.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 231 of file itkGDCMImageIO.h.

static bool itk::GDCMImageIO::GetLoadSequencesDefault ( ) [inline, static]

Global method to define the default value for LoadSequences. When instances of GDCMImageIO are created, the ivar LoadSequences is initialized to the value of LoadSequencesDefault. This method is useful when relying on the IO factory mechanism to load images rather than specifying a particular ImageIO object on the readers. Default is false.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 258 of file itkGDCMImageIO.h.

void itk::GDCMImageIO::GetManufacturer ( char *  manu)
void itk::GDCMImageIO::GetModality ( char *  modality)
void itk::GDCMImageIO::GetModel ( char *  model)
virtual const char* itk::GDCMImageIO::GetNameOfClass ( ) const [virtual]

Run-time type information (and related methods).

Reimplemented from itk::ImageIOBase.

Reimplemented in itk::DicomImageIO.

void itk::GDCMImageIO::GetNumberOfSeriesInStudy ( char *  series)
void itk::GDCMImageIO::GetNumberOfStudyRelatedSeries ( char *  series)
void itk::GDCMImageIO::GetPatientAge ( char *  age)
void itk::GDCMImageIO::GetPatientDOB ( char *  dob)
void itk::GDCMImageIO::GetPatientID ( char *  id)
void itk::GDCMImageIO::GetPatientName ( char *  name)

Convenience methods to query patient information and scanner information. These methods are here for compatibility with the DICOMImageIO2 class and as such should not be used in any new code. They rely on properly preallocated buffer, which is not a good practice. Instead user are encourage to use directly the GetValueFromTag function

void itk::GDCMImageIO::GetPatientSex ( char *  sex)
virtual double itk::GDCMImageIO::GetRescaleIntercept ( ) const [virtual]

Macro to access Rescale Slope and Rescale Intercept. Which are needed to rescale properly image when needed. User then need to Always check those value when access value from the DICOM header

virtual double itk::GDCMImageIO::GetRescaleSlope ( ) const [virtual]

Macro to access Rescale Slope and Rescale Intercept. Which are needed to rescale properly image when needed. User then need to Always check those value when access value from the DICOM header

void itk::GDCMImageIO::GetScanOptions ( char *  options)
virtual const char* itk::GDCMImageIO::GetSeriesInstanceUID ( ) const [virtual]

Access the generated DICOM UID's.

void itk::GDCMImageIO::GetStudyDate ( char *  date)
void itk::GDCMImageIO::GetStudyDescription ( char *  desc)
void itk::GDCMImageIO::GetStudyID ( char *  id)
virtual const char* itk::GDCMImageIO::GetStudyInstanceUID ( ) const [virtual]

Access the generated DICOM UID's.

virtual const char* itk::GDCMImageIO::GetUIDPrefix ( ) const [virtual]

Macro to access the DICOM UID prefix. By default this is the ITK root id. This default can be overriden if the exam is for example part of an existing study.

bool itk::GDCMImageIO::GetValueFromTag ( const std::string &  tag,
std::string &  value 
)

More general method to retrieve an arbitrary DICOM value based on a DICOM Tag (eg "0123|4567"). WARNING: You need to use the lower case for hex 0x[a-f], for instance: "0020|000d" instead of "0020|000D" (the latter won't work)

void itk::GDCMImageIO::InternalReadImageInformation ( std::ifstream &  file) [protected]
virtual void itk::GDCMImageIO::KeepOriginalUIDOff ( ) [virtual]

Preserve the original DICOM UID of the input files

virtual void itk::GDCMImageIO::KeepOriginalUIDOn ( ) [virtual]

Preserve the original DICOM UID of the input files

static void itk::GDCMImageIO::LoadPrivateTagsDefaultOff ( ) [inline, static]

Global method to define the default value for LoadPrivateTags. When instances of GDCMImageIO are created, the ivar LoadPrivateTags is initialized to the value of LoadPrivateTagsDefault. This method is useful when relying on the IO factory mechanism to load images rather than specifying a particular ImageIO object on the readers. Default is false.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 271 of file itkGDCMImageIO.h.

static void itk::GDCMImageIO::LoadPrivateTagsDefaultOn ( ) [inline, static]

Global method to define the default value for LoadPrivateTags. When instances of GDCMImageIO are created, the ivar LoadPrivateTags is initialized to the value of LoadPrivateTagsDefault. This method is useful when relying on the IO factory mechanism to load images rather than specifying a particular ImageIO object on the readers. Default is false.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 270 of file itkGDCMImageIO.h.

virtual void itk::GDCMImageIO::LoadPrivateTagsOff ( ) [inline, virtual]

Parse any private tags in the DICOM file. Defaults to the value of LoadPrivateTagsDefault. Loading DICOM files is faster when private tags are not needed.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 244 of file itkGDCMImageIO.h.

virtual void itk::GDCMImageIO::LoadPrivateTagsOn ( ) [inline, virtual]

Parse any private tags in the DICOM file. Defaults to the value of LoadPrivateTagsDefault. Loading DICOM files is faster when private tags are not needed.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 243 of file itkGDCMImageIO.h.

static void itk::GDCMImageIO::LoadSequencesDefaultOff ( ) [inline, static]

Global method to define the default value for LoadSequences. When instances of GDCMImageIO are created, the ivar LoadSequences is initialized to the value of LoadSequencesDefault. This method is useful when relying on the IO factory mechanism to load images rather than specifying a particular ImageIO object on the readers. Default is false.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 257 of file itkGDCMImageIO.h.

static void itk::GDCMImageIO::LoadSequencesDefaultOn ( ) [inline, static]

Global method to define the default value for LoadSequences. When instances of GDCMImageIO are created, the ivar LoadSequences is initialized to the value of LoadSequencesDefault. This method is useful when relying on the IO factory mechanism to load images rather than specifying a particular ImageIO object on the readers. Default is false.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 256 of file itkGDCMImageIO.h.

virtual void itk::GDCMImageIO::LoadSequencesOff ( ) [inline, virtual]

Parse any sequences in the DICOM file. Defaults to the value of LoadSequencesDefault. Loading DICOM files is faster when sequences are not needed.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 233 of file itkGDCMImageIO.h.

virtual void itk::GDCMImageIO::LoadSequencesOn ( ) [inline, virtual]

Parse any sequences in the DICOM file. Defaults to the value of LoadSequencesDefault. Loading DICOM files is faster when sequences are not needed.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 232 of file itkGDCMImageIO.h.

static Pointer itk::GDCMImageIO::New ( ) [static]

Method for creation through the object factory.

Reimplemented from itk::LightProcessObject.

Reimplemented in itk::DicomImageIO.

bool itk::GDCMImageIO::OpenGDCMFileForReading ( std::ifstream &  os,
const char *  filename 
) [protected]
bool itk::GDCMImageIO::OpenGDCMFileForWriting ( std::ofstream &  os,
const char *  filename 
) [protected]
void itk::GDCMImageIO::operator= ( const Self ) [private]

This method causes the filter to generate its output.

Reimplemented from itk::ImageIOBase.

Reimplemented in itk::DicomImageIO.

void itk::GDCMImageIO::PrintSelf ( std::ostream &  os,
Indent  indent 
) const [protected, virtual]

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from itk::ImageIOBase.

virtual void itk::GDCMImageIO::Read ( void *  buffer) [virtual]

Reads the data from disk into the memory buffer provided.

Implements itk::ImageIOBase.

virtual void itk::GDCMImageIO::ReadImageInformation ( ) [virtual]

Set the spacing and dimesion information for the current filename.

Implements itk::ImageIOBase.

virtual void itk::GDCMImageIO::SetCompressionType ( const TCompressionType  _arg) [virtual]

Set/Get a compression type to use.

virtual void itk::GDCMImageIO::SetKeepOriginalUID ( bool  _arg) [virtual]

Preserve the original DICOM UID of the input files

virtual void itk::GDCMImageIO::SetLoadPrivateTags ( const bool  ) [inline, virtual]

Parse any private tags in the DICOM file. Defaults to the value of LoadPrivateTagsDefault. Loading DICOM files is faster when private tags are not needed.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 241 of file itkGDCMImageIO.h.

static void itk::GDCMImageIO::SetLoadPrivateTagsDefault ( bool  ) [inline, static]

Global method to define the default value for LoadPrivateTags. When instances of GDCMImageIO are created, the ivar LoadPrivateTags is initialized to the value of LoadPrivateTagsDefault. This method is useful when relying on the IO factory mechanism to load images rather than specifying a particular ImageIO object on the readers. Default is false.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 269 of file itkGDCMImageIO.h.

virtual void itk::GDCMImageIO::SetLoadSequences ( const bool  ) [inline, virtual]

Parse any sequences in the DICOM file. Defaults to the value of LoadSequencesDefault. Loading DICOM files is faster when sequences are not needed.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 230 of file itkGDCMImageIO.h.

static void itk::GDCMImageIO::SetLoadSequencesDefault ( bool  ) [inline, static]

Global method to define the default value for LoadSequences. When instances of GDCMImageIO are created, the ivar LoadSequences is initialized to the value of LoadSequencesDefault. This method is useful when relying on the IO factory mechanism to load images rather than specifying a particular ImageIO object on the readers. Default is false.

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 255 of file itkGDCMImageIO.h.

virtual void itk::GDCMImageIO::SetMaxSizeLoadEntry ( const long  ) [inline, virtual]

A DICOM file can contains multiple binary stream that can be very long For example an Overlay on the image. Most of the time user do not want to load this binary structure in memory since it can consume lot of memory. Therefore any field that is bigger than the default value 0xfff is discarded and just seek'd This method allow advanced user to force the reading of such field

Warning:
this is a GDCM 1.x only option, no effect on GDCM 2.x

Definition at line 223 of file itkGDCMImageIO.h.

virtual void itk::GDCMImageIO::SetUIDPrefix ( const char *  _arg) [virtual]

Macro to access the DICOM UID prefix. By default this is the ITK root id. This default can be overriden if the exam is for example part of an existing study.

virtual void itk::GDCMImageIO::Write ( const void *  buffer) [virtual]

Writes the data to disk from the memory buffer provided. Make sure that the IORegion has been set properly.

Implements itk::ImageIOBase.

virtual void itk::GDCMImageIO::WriteImageInformation ( ) [virtual]

Writes the spacing and dimentions of the image. Assumes SetFileName has been called with a valid file name.

Implements itk::ImageIOBase.


Member Data Documentation

std::string itk::GDCMImageIO::m_BodyPart [private]

Definition at line 312 of file itkGDCMImageIO.h.

Definition at line 328 of file itkGDCMImageIO.h.

InternalHeader* itk::GDCMImageIO::m_DICOMHeader [private]

Definition at line 331 of file itkGDCMImageIO.h.

Definition at line 299 of file itkGDCMImageIO.h.

defines whether this image is a 2D out of a 2D image or a 2D out of a 3D image.

Definition at line 327 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_Institution [private]

Definition at line 320 of file itkGDCMImageIO.h.

Definition at line 330 of file itkGDCMImageIO.h.

Definition at line 301 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_Manufacturer [private]

Definition at line 319 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_Modality [private]

Definition at line 318 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_Model [private]

Definition at line 321 of file itkGDCMImageIO.h.

Definition at line 313 of file itkGDCMImageIO.h.

Definition at line 314 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_PatientAge [private]

Definition at line 316 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_PatientDOB [private]

Definition at line 309 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_PatientID [private]

Definition at line 308 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_PatientName [private]

Definition at line 307 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_PatientSex [private]

Definition at line 315 of file itkGDCMImageIO.h.

Definition at line 294 of file itkGDCMImageIO.h.

Definition at line 293 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_ScanOptions [private]

Definition at line 322 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_SeriesInstanceUID [protected]

Definition at line 298 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_StudyDate [private]

Definition at line 317 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_StudyDescription [private]

Definition at line 311 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_StudyID [private]

Definition at line 310 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_StudyInstanceUID [protected]

Definition at line 297 of file itkGDCMImageIO.h.

std::string itk::GDCMImageIO::m_UIDPrefix [protected]

Definition at line 296 of file itkGDCMImageIO.h.


The documentation for this class was generated from the following file: