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.
GDCM can be found at: https://sourceforge.net/projects/gdcm
To learn more about the revision shipped with ITK, call
git log – Modules/ThirdParty/GDCM/src/
from an ITK Git checkout.
The compressors supported include "JPEG2000" (default), and "JPEG". The compression level parameter is not supported.
DICOM tags are represented as strings in the metadata dictionary. The string format is "XXXX,XXXX", DICOM group number followed by element number, both are hexadecimals. The separator character is either a pipe "|" or a comma ",".
- Warning
- As the metadata dictionary uses the DICOM tag strings as keys it is possible to have multiple entries representing the same DICOM tag with different values. The last one encountered will be used when writing the image to file. For example, the patient name tag "0010,0010" and "0010|0010" may both be in the dictionary with different values due to the different separator character. Similarly, the series description tag may appear multiple times as "0008,103e", "0008,103E", "0008|103e", or "0008|103E". The strings differ in the separator character and lower or upper case letters in the hexadecimal numbers. Note that when read from file, letters in the hexadecimal numbers are always set to lower case and the separator character is a pipe. To ensure consistency, it is best to always use lower case letters and the pipe separator when explicitly adding tags to the metadata dictionary.
-
There are several restrictions to this current writer:
- Even though 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 explicitly set the maximum length of elements to load to be bigger (see Get/SetMaxSizeLoadEntry).
- In DICOM some fields are stored directly using their binary representation. When loaded into the MetaDataDictionary some fields are converted to ASCII (only VR: OB/OW/OF and UN are encoded as mime64).
- ITK Sphinx Examples:
-
- Examples
- Examples/IO/DicomImageReadChangeHeaderWrite.cxx, Examples/IO/DicomImageReadPrintTags.cxx, Examples/IO/DicomImageReadWrite.cxx, Examples/IO/DicomSeriesReadGaussianImageWrite.cxx, Examples/IO/DicomSeriesReadImageWrite2.cxx, Examples/IO/DicomSeriesReadPrintTags.cxx, Examples/IO/DicomSeriesReadSeriesWrite.cxx, and Examples/IO/ImageReadDicomSeriesWrite.cxx.
Definition at line 124 of file itkGDCMImageIO.h.
|
bool | CanReadFile (const char *) override |
|
bool | CanWriteFile (const char *) override |
|
virtual::itk::LightObject::Pointer | CreateAnother () const |
|
virtual CompressionEnum | GetCompressionType () const |
|
virtual const char * | GetNameOfClass () const |
|
bool | GetValueFromTag (const std::string &tag, std::string &value) |
|
void | InternalSetCompressor (const std::string &_compressor) override |
|
void | Read (void *pointer) override |
|
void | ReadImageInformation () override |
|
virtual void | SetCompressionType (const CompressionEnum _arg) |
|
void | Write (const void *buffer) override |
|
void | WriteImageInformation () override |
|
|
virtual itk::CommonEnums::IOComponent | GetInternalComponentType () const |
|
virtual void | SetInternalComponentType (const itk::CommonEnums::IOComponent _arg) |
|
|
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 | SetLoadPrivateTags (bool _arg) |
|
virtual bool | GetLoadPrivateTags () const |
|
virtual void | LoadPrivateTagsOn () |
|
virtual void | LoadPrivateTagsOff () |
|
|
virtual void | SetReadYBRtoRGB (bool _arg) |
|
virtual bool | GetReadYBRtoRGB () const |
|
virtual void | ReadYBRtoRGBOn () |
|
virtual void | ReadYBRtoRGBOff () |
|
virtual bool | CanStreamRead () |
|
virtual bool | CanStreamWrite () |
|
virtual ImageIORegion | GenerateStreamableReadRegionFromRequestedRegion (const ImageIORegion &requested) const |
|
virtual unsigned int | GetActualNumberOfSplitsForWriting (unsigned int numberOfRequestedSplits, const ImageIORegion &pasteRegion, const ImageIORegion &largestPossibleRegion) |
|
std::string | GetByteOrderAsString (IOByteOrderEnum) const |
|
virtual unsigned int | GetComponentSize () const |
|
virtual IOComponentEnum | GetComponentType () const |
|
virtual int | GetCompressionLevel () const |
|
virtual const std::string & | GetCompressor () const |
|
virtual std::vector< double > | GetDefaultDirection (unsigned int k) const |
|
virtual std::vector< double > | GetDirection (unsigned int i) const |
|
std::string | GetFileTypeAsString (IOFileEnum) const |
|
SizeType | GetImageSizeInBytes () const |
|
SizeType | GetImageSizeInComponents () const |
|
SizeType | GetImageSizeInPixels () const |
|
virtual bool | GetIsReadAsScalarPlusPalette () const |
|
virtual unsigned int | GetNumberOfDimensions () const |
|
virtual double | GetOrigin (unsigned int i) const |
|
virtual SizeType | GetPixelStride () const |
|
virtual double | GetSpacing (unsigned int i) const |
|
virtual ImageIORegion | GetSplitRegionForWriting (unsigned int ithPiece, unsigned int numberOfActualSplits, const ImageIORegion &pasteRegion, const ImageIORegion &largestPossibleRegion) |
|
const ArrayOfExtensionsType & | GetSupportedReadExtensions () const |
|
const ArrayOfExtensionsType & | GetSupportedWriteExtensions () const |
|
void | SetByteOrderToLittleEndian () |
|
virtual void | SetComponentType (const IOComponentEnum _arg) |
|
virtual void | SetCompressionLevel (int _arg) |
|
virtual void | SetCompressor (std::string _c) |
|
virtual void | SetDirection (unsigned int i, const std::vector< double > &direction) |
|
virtual void | SetDirection (unsigned int i, const vnl_vector< double > &direction) |
|
void | SetFileTypeToBinary () |
|
void | SetNumberOfDimensions (unsigned int) |
|
virtual void | SetOrigin (unsigned int i, double origin) |
|
virtual void | SetSpacing (unsigned int i, double spacing) |
|
virtual bool | SupportsDimension (unsigned long dim) |
|
virtual void | SetFileName (const char *_arg) |
|
virtual const char * | GetFileName () const |
|
virtual void | SetDimensions (unsigned int i, SizeValueType dim) |
|
virtual SizeValueType | GetDimensions (unsigned int i) const |
|
virtual void | SetIORegion (ImageIORegion _arg) |
|
virtual const ImageIORegion & | GetIORegion () const |
|
virtual void | SetPixelType (const itk::CommonEnums::IOPixel _arg) |
|
virtual itk::CommonEnums::IOPixel | GetPixelType () const |
|
virtual void | SetNumberOfComponents (unsigned int _arg) |
|
virtual const unsigned int & | GetNumberOfComponents () const |
|
virtual void | SetUseCompression (bool _arg) |
|
virtual bool | GetUseCompression () const |
|
virtual void | UseCompressionOn () |
|
virtual void | UseCompressionOff () |
|
virtual void | SetUseStreamedReading (bool _arg) |
|
virtual bool | GetUseStreamedReading () const |
|
virtual void | UseStreamedReadingOn () |
|
virtual void | UseStreamedReadingOff () |
|
virtual void | SetUseStreamedWriting (bool _arg) |
|
virtual bool | GetUseStreamedWriting () const |
|
virtual void | UseStreamedWritingOn () |
|
virtual void | UseStreamedWritingOff () |
|
virtual void | SetExpandRGBPalette (bool _arg) |
|
virtual bool | GetExpandRGBPalette () const |
|
virtual void | ExpandRGBPaletteOn () |
|
virtual void | ExpandRGBPaletteOff () |
|
virtual void | SetWritePalette (bool _arg) |
|
virtual bool | GetWritePalette () const |
|
virtual void | WritePaletteOn () |
|
virtual void | WritePaletteOff () |
|
virtual void | SetFileType (const IOFileEnum _arg) |
|
virtual IOFileEnum | GetFileType () const |
|
void | SetFileTypeToASCII () |
|
virtual void | SetByteOrder (const IOByteOrderEnum _arg) |
|
virtual IOByteOrderEnum | GetByteOrder () const |
|
void | SetByteOrderToBigEndian () |
|
template<typename TPixel> |
void | SetPixelTypeInfo (const TPixel *) |
|
template<typename TComponent> |
void | SetPixelTypeInfo (const RGBPixel< TComponent > *) |
|
template<typename TComponent> |
void | SetPixelTypeInfo (const RGBAPixel< TComponent > *) |
|
template<unsigned int VLength> |
void | SetPixelTypeInfo (const Offset< VLength > *) |
|
template<typename TComponent, unsigned int VLength> |
void | SetPixelTypeInfo (const Vector< TComponent, VLength > *) |
|
template<typename TCoordinate, unsigned int VPointDimension> |
void | SetPixelTypeInfo (const Point< TCoordinate, VPointDimension > *) |
|
template<typename TComponent, unsigned int VLength> |
void | SetPixelTypeInfo (const CovariantVector< TComponent, VLength > *) |
|
template<typename TComponent, unsigned int VLength> |
void | SetPixelTypeInfo (const SymmetricSecondRankTensor< TComponent, VLength > *) |
|
template<typename TComponent> |
void | SetPixelTypeInfo (const DiffusionTensor3D< TComponent > *) |
|
template<typename TComponent> |
void | SetPixelTypeInfo (const std::complex< TComponent > *) |
|
template<typename TComponent, unsigned int VLength> |
void | SetPixelTypeInfo (const FixedArray< TComponent, VLength > *) |
|
template<typename TComponent> |
void | SetPixelTypeInfo (const VariableLengthVector< TComponent > *) |
|
template<typename TValue> |
void | SetPixelTypeInfo (const Array< TValue > *) |
|
template<typename TComponent, unsigned int VLength> |
void | SetPixelTypeInfo (const Matrix< TComponent, VLength, VLength > *) |
|
template<typename TValue> |
void | SetPixelTypeInfo (const VariableSizeMatrix< TValue > *) |
|
virtual void | AbortGenerateDataOff () |
|
virtual void | AbortGenerateDataOn () |
|
virtual::itk::LightObject::Pointer | CreateAnother () const |
|
virtual const bool & | GetAbortGenerateData () const |
|
virtual void | SetAbortGenerateData (bool _arg) |
|
virtual void | UpdateOutputData () |
|
void | UpdateProgress (float amount) |
|
virtual void | SetProgress (float _arg) |
|
virtual const float & | GetProgress () const |
|
unsigned long | AddObserver (const EventObject &event, Command *cmd) const |
|
unsigned long | AddObserver (const EventObject &event, std::function< void(const EventObject &)> function) const |
|
LightObject::Pointer | CreateAnother () const override |
|
virtual void | DebugOff () const |
|
virtual void | DebugOn () const |
|
Command * | GetCommand (unsigned long tag) |
|
bool | GetDebug () const |
|
MetaDataDictionary & | GetMetaDataDictionary () |
|
const MetaDataDictionary & | GetMetaDataDictionary () const |
|
virtual ModifiedTimeType | GetMTime () const |
|
virtual const TimeStamp & | GetTimeStamp () const |
|
bool | HasObserver (const EventObject &event) const |
|
void | InvokeEvent (const EventObject &) |
|
void | InvokeEvent (const EventObject &) const |
|
virtual void | Modified () const |
|
void | Register () const override |
|
void | RemoveAllObservers () |
|
void | RemoveObserver (unsigned long tag) const |
|
void | SetDebug (bool debugFlag) const |
|
void | SetReferenceCount (int) override |
|
void | UnRegister () const noexcept override |
|
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
|
void | SetMetaDataDictionary (MetaDataDictionary &&rrhs) |
|
virtual void | SetObjectName (std::string _arg) |
|
virtual const std::string & | GetObjectName () const |
|
Pointer | Clone () const |
|
virtual void | Delete () |
|
virtual int | GetReferenceCount () const |
|
void | Print (std::ostream &os, Indent indent=0) const |
|
|
| GDCMImageIO () |
|
void | InternalReadImageInformation () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
| ~GDCMImageIO () override |
|
void | AddSupportedReadExtension (const char *extension) |
|
void | AddSupportedWriteExtension (const char *extension) |
|
void | ComputeStrides () |
|
virtual unsigned int | GetActualNumberOfSplitsForWritingCanStreamWrite (unsigned int numberOfRequestedSplits, const ImageIORegion &pasteRegion) const |
|
SizeType | GetComponentStride () const |
|
virtual const ImageRegionSplitterBase * | GetImageRegionSplitter () const |
|
virtual unsigned int | GetPixelSize () const |
|
SizeType | GetRowStride () const |
|
SizeType | GetSliceStride () const |
|
virtual ImageIORegion | GetSplitRegionForWritingCanStreamWrite (unsigned int ithPiece, unsigned int numberOfActualSplits, const ImageIORegion &pasteRegion) const |
|
| ImageIOBase () |
|
virtual void | OpenFileForReading (std::ifstream &inputStream, const std::string &filename, bool ascii=false) |
|
virtual void | OpenFileForWriting (std::ofstream &outputStream, const std::string &filename, bool truncate=true, bool ascii=false) |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual void | ReadBufferAsASCII (std::istream &is, void *buffer, IOComponentEnum ctype, SizeType numComp) |
|
bool | ReadBufferAsBinary (std::istream &is, void *buffer, SizeType num) |
|
virtual void | Reset (const bool freeDynamic=true) |
|
void | Resize (const unsigned int numDimensions, const unsigned int *dimensions) |
|
void | SetSupportedReadExtensions (const ArrayOfExtensionsType &) |
|
void | SetSupportedWriteExtensions (const ArrayOfExtensionsType &) |
|
virtual void | WriteBufferAsASCII (std::ostream &os, const void *buffer, IOComponentEnum ctype, SizeType numComp) |
|
| ~ImageIOBase () override |
|
virtual bool | HasSupportedReadExtension (const char *fileName, bool ignoreCase=true) |
|
virtual bool | HasSupportedWriteExtension (const char *fileName, bool ignoreCase=true) |
|
virtual void | SetMaximumCompressionLevel (int) |
|
virtual int | GetMaximumCompressionLevel () const |
|
virtual void | GenerateData () |
|
| LightProcessObject () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
| ~LightProcessObject () override |
|
| Object () |
|
bool | PrintObservers (std::ostream &os, Indent indent) const |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual void | SetTimeStamp (const TimeStamp &timeStamp) |
|
| ~Object () override |
|
virtual LightObject::Pointer | InternalClone () const |
|
| LightObject () |
|
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
|
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
|
virtual | ~LightObject () |
|