DCMTK: DiColorImage Class Reference

DCMTK Version 3.6.9 OFFIS DICOM Toolkit

Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
DiColorImage Class Reference

Base class for color images. More...

Inheritance diagram for DiColorImage:

## Public Member Functions
| DiColorImage (const DiDocument *docu, const EI_Status status, const int spp, const OFBool rgb=OFTrue)
| constructor
virtual | ~DiColorImage ()
| destructor
virtual EP_Interpretation | getInternalColorModel () const
| get color model of internal pixel representation.
virtual unsigned long | getOutputDataSize (const int bits=0) const
| get number of bytes required for the rendered output of a single frame
const void * | getOutputData (const unsigned long frame, const int bits, const int planar=0)
| get pixel data with specified format.
int | getOutputData (void *buffer, const unsigned long size, const unsigned long frame, const int bits, const int planar=0)
| get pixel data with specified format.
const void * | getOutputPlane (const int plane) const
| get pixel data of specified plane.
void | deleteOutputData ()
| delete internally handled output memory buffer Save memory if data is no longer needed.
DiImage * | createImage (const unsigned long fstart, const unsigned long fcount) const
| create copy of current image object
DiImage * | createScale (const signed long left_pos, const signed long top_pos, const unsigned long src_cols, const unsigned long src_rows, const unsigned long dest_cols, const unsigned long dest_rows, const int interpolate, const int aspect, const Uint16 pvalue) const
| create scaled copy of specified (clipping) area of the current image object.
int | flip (const int horz, const int vert)
| flip current image (horizontally and/or vertically)
DiImage * | createFlip (const int horz, const int vert) const
| create a flipped copy of the current image
int | rotate (const int degree)
| rotate current image (by steps of 90 degrees)
DiImage * | createRotate (const int degree) const
| create a rotated copy of the current image.
DiImage * | createMono (const double red, const double green, const double blue) const
| create monochrome copy of the current image
const DiPixel * | getInterData () const
| get pointer to intermediate pixel data representation
const DiColorPixel * | getColorInterData () const
| get pointer to intermediate pixel data representation
unsigned long | createDIB (void *&data, const unsigned long size, const unsigned long frame, const int bits, const int upsideDown, const int padding=1)
| create true color (24/32 bit) bitmap for MS Windows.
unsigned long | createAWTBitmap (void *&data, const unsigned long frame, const int bits)
| create true color (32 bit) bitmap for Java (AWT default format).
int | writeImageToDataset (DcmItem &dataset, const int mode, const int planar)
| write current image and related attributes to DICOM dataset.
int | writePPM (STD_NAMESPACE ostream &stream, const unsigned long frame, const int bits)
| write pixel data to PPM file.
int | writePPM (FILE *stream, const unsigned long frame, const int bits)
| write pixel data to PPM file.
int | writeRawPPM (FILE *stream, const unsigned long frame, const int bits)
| write pixel data to raw PPM file
int | writeBMP (FILE *stream, const unsigned long frame, const int bits)
| write pixel data to BMP file
Public Member Functions inherited from DiImage
| DiImage (const DiDocument *docu, const EI_Status status, const int spp)
| constructor
virtual | ~DiImage ()
| destructor
virtual int | processNextFrames (const unsigned long fcount)
| process next couple of frames
EI_Status | getStatus () const
| get status of the image object
Uint32 | getNumberOfFrames () const
| get number of frames
Uint32 | getFirstFrame () const
| get index of first frame
Uint32 | getTotalNumberOfFrames () const
| get total number of frames
Uint32 | getRepresentativeFrame () const
| get representative frame
double | getFrameTime () const
| get frame time
Uint16 | getRows () const
| get number of rows
Uint16 | getColumns () const
| get number of columns
double | getPixelWidth () const
| get pixel's width
double | getPixelHeight () const
| get pixel's height
double | getRowColumnRatio () const
| get pixel's rows/column ratio
double | getColumnRowRatio () const
| get pixel's column/rows ratio
int | setRowColumnRatio (const double ratio)
| set pixel's rows/column ratio
int | setColumnRowRatio (const double ratio)
| set pixel's column/rows ratio
EP_Polarity | getPolarity () const
| get polarity.
int | setPolarity (const EP_Polarity polarity)
| set polarity.
virtual int | getBits (const int bits=0) const
| get number of bits per sample.
virtual DiOverlay * | getOverlayPtr (const unsigned int)
| get pointer to the object managing the overlay planes
virtual DiMonoImage * | getMonoImagePtr ()
| get pointer to monochrome image object
int | writeFrameToDataset (DcmItem &dataset, const unsigned long frame=0, const int bits=0, const int planar=0)
| render pixel data of given frame and write image related attributes to DICOM dataset.

## Protected Member Functions
| DiColorImage (const DiColorImage *image, const unsigned long fstart, const unsigned long fcount)
| constructor, copy
| DiColorImage (const DiColorImage *image, const signed long left_pos, const signed long top_pos, const Uint16 src_cols, const Uint16 src_rows, const Uint16 dest_cols, const Uint16 dest_rows, const int interpolate=0, const int aspect=0)
| constructor, scale/clip
| DiColorImage (const DiColorImage *image, const int horz, const int vert)
| constructor, flip
| DiColorImage (const DiColorImage *image, const int degree)
| constructor, rotate
int | checkInterData (const int mode=1)
| check intermediate pixel representation for consistency
const void * | getData (void *buffer, const unsigned long size, const unsigned long frame, const int bits, const int planar)
| get pixel data with specified format.
virtual void | updateImagePixelModuleAttributes (DcmItem &dataset)
| update Image Pixel Module attributes in the given dataset.
Protected Member Functions inherited from DiImage
| DiImage (const DiDocument *docu, const EI_Status status)
| constructor
| DiImage (const DiImage *image, const unsigned long fstart, const unsigned long fcount)
| constructor, copy
| DiImage (const DiImage *image, const Uint16 width, const Uint16 height, const int aspect=0)
| constructor, scale/clip
| DiImage (const DiImage *image, const int degree=0)
| constructor, rotate
| DiImage (const DiImage *image, const unsigned long frame, const int stored, const int alloc)
| constructor, createMonoOutput
void | deleteInputData ()
| delete internally handled object for the input pixel data conversion
void | checkPixelExtension ()
| check and possibly correct values for pixel spacing, aspect ratio etc.
void | convertPixelData ()
| create input pixel data representation from DICOM dataset structures
int | detachPixelData ()
| detach pixel data.

## Protected Attributes
const OFBool | RGBColorModel
| flag, indicating whether the intermediate representation uses the RGB color model
DiColorPixel * | InterData
| points to intermediate pixel data representation (object)
Protected Attributes inherited from DiImage
EI_Status | ImageStatus
| copy of status variable declared in class 'DicomImage'
const DiDocument * | Document
| points to special object, which encapsulates the dcmdata module
Uint32 | FirstFrame
| first frame to be processed
Uint32 | NumberOfFrames
| number of frames in case of multi-frame images (otherwise '1')
Uint32 | TotalNumberOfFrames
| total number of frames stored in the dataset
Uint32 | RepresentativeFrame
| number of representative frame, type 3 attribute (default '0')
double | FrameTime
| nominal time between individual frames (0 if absent)
Uint16 | Rows
| number of rows (in pixel)
Uint16 | Columns
| number of columns (in pixel)
double | PixelWidth
| width of each pixel according to 'PixelSpacing/AspectRatio'
double | PixelHeight
| height of each pixel according to 'PixelSpacing/AspectRatio'
Uint16 | BitsAllocated
| number of bits allocated for each pixel
Uint16 | BitsStored
| number of bits stored for each pixel (see 'BitsPerSample')
Uint16 | HighBit
| position of highest stored bit
int | BitsPerSample
| actual number of bits per sample (depth)
int | SamplesPerPixel
| number of samples per pixel (1, 3 or 4)
EP_Polarity | Polarity
| polarity (normal or reverse)
int | hasSignedRepresentation
| is 'true' if pixel data is signed
int | hasPixelSpacing
| is 'true' if attribute 'PixelSpacing' is present
int | hasImagerPixelSpacing
| is 'true' if attribute 'ImagerPixelSpacing' is present
int | hasNominalScannedPixelSpacing
| is 'true' if attribute 'hasNominalScannedPixelSpacing' is present
int | hasPixelAspectRatio
| is 'true' if attribute 'PixelAspectRatio' is present
int | isOriginal
| is 'false' if derived from original image data (e.g. scaled)
DiInputPixel * | InputData
| points to intermediate pixel representation (template object)
DcmFileCache | FileCache
| file cache object used for partial read
Uint32 | CurrentFragment
| current pixel item fragment (for encapsulated pixel data)

## Private Attributes
DiColorOutputPixel * | OutputData
| points to current output data (object)

## Detailed Description

Base class for color images.

## Constructor & Destructor Documentation

## ◆ DiColorImage() [1/5]

DiColorImage::DiColorImage | ( | const DiDocument * | docu,
|  | const EI_Status | status,
|  | const int | spp,
|  | const OFBool | rgb = OFTrue )

constructor

Parameters

  docu | pointer to the DICOM document
  status | status of the image object
  spp | sample per pixel (1, 3 or 4 depending on the color model)
  rgb | specifies whether internal image representation is in RGB format

Referenced by DiColorImage(), DiColorImage(), DiColorImage(), and DiColorImage().

## ◆ DiColorImage() [2/5]

DiColorImage::DiColorImage | ( | const DiColorImage * | image,
|  | const unsigned long | fstart,
|  | const unsigned long | fcount )
| protected

constructor, copy

Parameters

  image | pointer to reference image
  fstart | first frame to be processed
  fcount | number of frames

References DiColorImage().

## ◆ DiColorImage() [3/5]

DiColorImage::DiColorImage | ( | const DiColorImage * | image,
|  | const signed long | left_pos,
|  | const signed long | top_pos,
|  | const Uint16 | src_cols,
|  | const Uint16 | src_rows,
|  | const Uint16 | dest_cols,
|  | const Uint16 | dest_rows,
|  | const int | interpolate = 0,
|  | const int | aspect = 0 )
| protected

constructor, scale/clip

Parameters

  image | pointer to reference image
  left_pos | x coordinate of top left corner of area to be scaled (referring to image origin, negative values create a border around the image)
  top_pos | y coordinate of top left corner of area to be scaled
  src_cols | width of area to be scaled
  src_rows | height of area to be scaled
  dest_cols | width of scaled image (in pixels)
  dest_rows | height of scaled image (in pixels)
  interpolate | specifies whether scaling algorithm should use interpolation (if necessary). default: no interpolation (0), preferred interpolation algorithm (if applicable): 1 = pbmplus algorithm, 2 = c't algorithm, 3 = bilinear magnification, 4 = bicubic magnification
  aspect | specifies whether pixel aspect ratio should be taken into consideration (if true, width OR height should be 0, i.e. this component will be calculated automatically)

References DiColorImage().

## ◆ DiColorImage() [4/5]

DiColorImage::DiColorImage | ( | const DiColorImage * | image,
|  | const int | horz,
|  | const int | vert )
| protected

constructor, flip

Parameters

  image | pointer to reference image
  horz | flip horizontally if true
  vert | flip vertically if true

References DiColorImage().

## ◆ DiColorImage() [5/5]

DiColorImage::DiColorImage | ( | const DiColorImage * | image,
|  | const int | degree )
| protected

constructor, rotate

Parameters

  image | pointer to reference image
  degree | angle by which the image shall be rotated

References DiColorImage().

## Member Function Documentation

## ◆ checkInterData()

int DiColorImage::checkInterData | ( | const int | mode = 1 | ) |
| protected

check intermediate pixel representation for consistency

Parameters

  mode | check number of pixels stored in the dataset if true

Returns
  status, true if successful, false otherwise

## ◆ createAWTBitmap()

unsigned long DiColorImage::createAWTBitmap | ( | void *& | data,
|  | const unsigned long | frame,
|  | const int | bits )
| virtual

create true color (32 bit) bitmap for Java (AWT default format).

Memory is not handled internally - must be deleted from calling program.

Parameters

  data | resulting pointer to bitmap data (set to NULL if an error occurred)
  frame | index of frame to be converted (default: first frame)
  bits | number of bits per pixel used for the output bitmap (32)

Returns
  number of bytes allocated by the bitmap, or 0 if an error occurred

Implements DiImage.

## ◆ createDIB()

unsigned long DiColorImage::createDIB | ( | void *& | data,
|  | const unsigned long | size,
|  | const unsigned long | frame,
|  | const int | bits,
|  | const int | upsideDown,
|  | const int | padding = 1 )
| virtual

create true color (24/32 bit) bitmap for MS Windows.

memory is not handled internally - must be deleted from calling program.

Parameters

  data | untyped pointer memory buffer (set to NULL if not allocated externally)
  size | size of the memory buffer in bytes (if 0 'data' is set to NULL)
  frame | index of frame to be converted (starting from 0)
  bits | number of bits per pixel used for the output bitmap (24 or 32)
  upsideDown | specifies the order of lines in the images (0 = top-down, bottom-up otherwise)
  padding | align each line to a 32-bit address if true (default)

Returns
  number of bytes allocated by the bitmap, or 0 if an error occurred

Implements DiImage.

## ◆ createFlip()

DiImage * DiColorImage::createFlip | ( | const int | horz,
|  | const int | vert ) const
| virtual

create a flipped copy of the current image

Parameters

  horz | flip horizontally if true
  vert | flip vertically if true

Returns
  pointer to new DiImage object (NULL if an error occurred)

Implements DiImage.

References DiImage::DiImage().

## ◆ createImage()

DiImage * DiColorImage::createImage | ( | const unsigned long | fstart,
|  | const unsigned long | fcount ) const
| virtual

create copy of current image object

Parameters

  fstart | first frame to be processed
  fcount | number of frames

Returns
  pointer to new DicomImage object (NULL if an error occurred)

Implements DiImage.

References DiImage::DiImage().

## ◆ createMono()

DiImage * DiColorImage::createMono | ( | const double | red,
|  | const double | green,
|  | const double | blue ) const
| virtual

create monochrome copy of the current image

Parameters

  red | coefficient by which the red component is weighted
  green | coefficient by which the green component is weighted
  blue | coefficient by which the blue component is weighted

Returns
  pointer to new DiImage object (NULL if an error occurred)

Implements DiImage.

References DiImage::DiImage().

## ◆ createRotate()

DiImage * DiColorImage::createRotate | ( | const int | degree | ) | const
| virtual

create a rotated copy of the current image.

Parameters

  degree | angle by which the image shall be rotated

Returns
  pointer to new DiImage object (NULL if an error occurred)

Implements DiImage.

References DiImage::DiImage().

## ◆ createScale()

DiImage * DiColorImage::createScale | ( | const signed long | left_pos,
|  | const signed long | top_pos,
|  | const unsigned long | src_cols,
|  | const unsigned long | src_rows,
|  | const unsigned long | dest_cols,
|  | const unsigned long | dest_rows,
|  | const int | interpolate,
|  | const int | aspect,
|  | const Uint16 | pvalue ) const
| virtual

create scaled copy of specified (clipping) area of the current image object.

Parameters

  left_pos | x coordinate of top left corner of area to be scaled (referring to image origin, negative values create a border around the image)
  top_pos | y coordinate of top left corner of area to be scaled
  src_cols | width of area to be scaled
  src_rows | height of area to be scaled
  dest_cols | width of scaled image (in pixels)
  dest_rows | height of scaled image (in pixels)
  interpolate | specifies whether scaling algorithm should use interpolation (if necessary). default: no interpolation (0), preferred interpolation algorithm (if applicable): 1 = pbmplus algorithm, 2 = c't algorithm, 3 = bilinear magnification, 4 = bicubic magnification
  aspect | specifies whether pixel aspect ratio should be taken into consideration (if true, width OR height should be 0, i.e. this component will be calculated automatically)
  pvalue | dummy parameter (only used for monochrome images)

Returns
  pointer to new DiImage object (NULL if an error occurred)

Implements DiImage.

References DiImage::DiImage().

## ◆ flip()

int DiColorImage::flip | ( | const int | horz,
|  | const int | vert )
| virtual

flip current image (horizontally and/or vertically)

Parameters

  horz | flip horizontally if true
  vert | flip vertically if true

Returns
  true if successful (1 = flipped at least direction, 2 = not flipped, because of image resolution - width and/or height equal to 1), false otherwise

Implements DiImage.

## ◆ getColorInterData()

const DiColorPixel * DiColorImage::getColorInterData | ( |  | ) | const
| inline

get pointer to intermediate pixel data representation

Returns
  pointer to intermediate pixel data

References InterData.

## ◆ getData()

const void * DiColorImage::getData | ( | void * | buffer,
|  | const unsigned long | size,
|  | const unsigned long | frame,
|  | const int | bits,
|  | const int | planar )
| protected

get pixel data with specified format.

(memory is handled externally)

Parameters

  buffer | untyped pointer to the externally allocated memory buffer
  size | size of the memory buffer in bytes (will be checked)
  frame | number of frame to be rendered
  bits | number of bits for the output pixel data (depth)
  planar | flag, 0 = color-by-pixel and 1 = color-by-plane

Returns
  untyped pointer to the pixel data if successful, NULL otherwise

## ◆ getInterData()

const DiPixel * DiColorImage::getInterData | ( |  | ) | const
| inlinevirtual

get pointer to intermediate pixel data representation

Returns
  pointer to intermediate pixel data

Implements DiImage.

References InterData.

## ◆ getInternalColorModel()

virtual EP_Interpretation DiColorImage::getInternalColorModel | ( |  | ) | const
| inlinevirtual

get color model of internal pixel representation.

Returns
  returns EPI_RGB or EPI_YBR_Full depending on the 'rgb' flag in the constructor

Implements DiImage.

References EPI_RGB, EPI_YBR_Full, and RGBColorModel.

## ◆ getOutputData() [1/2]

const void * DiColorImage::getOutputData | ( | const unsigned long | frame,
|  | const int | bits,
|  | const int | planar = 0 )
| virtual

get pixel data with specified format.

(memory is handled internally) The standard color model of the pixel data is RGB, but if the flag "rgb" is OFFalse and the original color model was YCbCr_Full or YCbCr_Full_422 YCbCr_Full is used instead.

Parameters

  frame | number of frame to be rendered
  bits | number of bits per sample for the output pixel data (depth)
  planar | 0 = color-by-pixel (R1G1B1...R2G2B2...R3G3B3...), 1 = color-by-plane (R1R2R3...G1G2G3...B1B2B3...)

Returns
  untyped pointer to the pixel data if successful, NULL otherwise

Implements DiImage.

## ◆ getOutputData() [2/2]

int DiColorImage::getOutputData | ( | void * | buffer,
|  | const unsigned long | size,
|  | const unsigned long | frame,
|  | const int | bits,
|  | const int | planar = 0 )
| virtual

get pixel data with specified format.

(memory is handled externally) The standard color model of the pixel data is RGB, but if the flag "rgb" is OFFalse and the original color model was YCbCr_Full or YCbCr_Full_422 YCbCr_Full is used instead.

Parameters

  buffer | untyped pointer to the externally allocated memory buffer
  size | size of the memory buffer in bytes (will be checked)
  frame | number of frame to be rendered
  bits | number of bits per sample for the output pixel data (depth)
  planar | 0 = color-by-pixel (R1G1B1...R2G2B2...R3G3B3...) 1 = color-by-plane (R1R2R3...G1G2G3...B1B2B3...)

Returns
  status, true if successful, false otherwise

Implements DiImage.

## ◆ getOutputDataSize()

virtual unsigned long DiColorImage::getOutputDataSize | ( | const int | bits = 0 | ) | const
| virtual

get number of bytes required for the rendered output of a single frame

Parameters

  bits | number of bits for the output pixel data (depth)

Returns
  number of bytes if successful, 0 otherwise

Implements DiImage.

## ◆ getOutputPlane()

const void * DiColorImage::getOutputPlane | ( | const int | plane | ) | const
| virtual

get pixel data of specified plane.

(memory is handled internally)

Parameters

  plane | index of color plane

Returns
  untyped pointer to the pixel data if successful, NULL otherwise

Implements DiImage.

## ◆ rotate()

int DiColorImage::rotate | ( | const int | degree | ) |
| virtual

rotate current image (by steps of 90 degrees)

Parameters

  degree | angle by which the image shall be rotated (-360, -270, -180, -90, 0, 90, 180, 270, 360)

Returns
  true if successful (1 = rotated by at least 90 degrees, 2 = not rotated, because of image resolution or angle), false otherwise

Reimplemented from DiImage.

## ◆ updateImagePixelModuleAttributes()

virtual void DiColorImage::updateImagePixelModuleAttributes | ( | DcmItem & | dataset | ) |
| protectedvirtual

update Image Pixel Module attributes in the given dataset.

Removes color palette lookup tables. Used in writeXXXToDataset() routines.

Parameters

  dataset | reference to DICOM image dataset

Reimplemented from DiImage.

## ◆ writeBMP()

int DiColorImage::writeBMP | ( | FILE * | stream,
|  | const unsigned long | frame,
|  | const int | bits )
| virtual

write pixel data to BMP file

Parameters

  stream | open C output stream
  frame | index of frame used for output (default: first frame = 0)
  bits | number of bits used for output of pixel data (24 or 32, default (0) = 24)

Returns
  true if successful, false otherwise

Reimplemented from DiImage.

## ◆ writeImageToDataset()

int DiColorImage::writeImageToDataset | ( | DcmItem & | dataset,
|  | const int | mode,
|  | const int | planar )
| virtual

write current image and related attributes to DICOM dataset.

Parameters

  dataset | reference to DICOM dataset where the image attributes are stored
  mode | dummy parameter (only used for monochrome images)
  planar | flag, whether the output data (for multi-planar images) should be planar or not

Returns
  true if successful, false otherwise

Implements DiImage.

## ◆ writePPM() [1/2]

int DiColorImage::writePPM | ( | FILE * | stream,
|  | const unsigned long | frame,
|  | const int | bits )
| virtual

write pixel data to PPM file.

pixel data is written in ASCII format.

Parameters

  stream | open C output stream
  frame | index of frame used for output
  bits | number of bits used for output of pixel data

Returns
  true if successful, false otherwise

Implements DiImage.

## ◆ writePPM() [2/2]

int DiColorImage::writePPM | ( | STD_NAMESPACE ostream & | stream,
|  | const unsigned long | frame,
|  | const int | bits )
| virtual

write pixel data to PPM file.

pixel data is written in ASCII format.

Parameters

  stream | open C++ output stream
  frame | index of frame used for output
  bits | number of bits used for output of pixel data

Returns
  true if successful, false otherwise

Implements DiImage.

## ◆ writeRawPPM()

int DiColorImage::writeRawPPM | ( | FILE * | stream,
|  | const unsigned long | frame,
|  | const int | bits )
| virtual

write pixel data to raw PPM file

Parameters

  stream | open C output stream
  frame | index of frame used for output
  bits | number of bits used for output of pixel data

Returns
  true if successful, false otherwise

Implements DiImage.

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

- dcmimage/include/dcmtk/dcmimage/dicoimg.h

Generated on Wed Apr 30 2025 for DCMTK Version 3.6.9 by Doxygen 1.13.2