DCMTK  Version 3.6.1 20120515
OFFIS DICOM Toolkit
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
DiColorImage Class Reference

Base class for color images. More...

+ Inheritance diagram for DiColorImage:

List of all members.

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.
DiImagecreateImage (const unsigned long fstart, const unsigned long fcount) const
 create copy of current image object
DiImagecreateScale (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)
DiImagecreateFlip (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)
DiImagecreateRotate (const int degree) const
 create a rotated copy of the current image.
DiImagecreateMono (const double red, const double green, const double blue) const
 create monochrome copy of the current image
const DiPixelgetInterData () const
 get pointer to intermediate pixel data representation
const DiColorPixelgetColorInterData () 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

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 Attributes

const OFBool RGBColorModel
 flag, indicating whether the intermediate representation uses the RGB color model
DiColorPixelInterData
 points to intermediate pixel data representation (object)

Private Member Functions

 DiColorImage (const DiColorImage &)
DiColorImageoperator= (const DiColorImage &)

Private Attributes

DiColorOutputPixelOutputData
 points to current output data (object)

Detailed Description

Base class for color images.


Constructor & Destructor Documentation

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

constructor

Parameters:
docupointer to the DICOM document
statusstatus of the image object
sppsample per pixel (1, 3 or 4 depending on the color model)
rgbspecifies whether internal image representation is in RGB format
DiColorImage::DiColorImage ( const DiColorImage image,
const unsigned long  fstart,
const unsigned long  fcount 
) [protected]

constructor, copy

Parameters:
imagepointer to reference image
fstartfirst frame to be processed
fcountnumber of frames
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:
imagepointer to reference image
left_posx coordinate of top left corner of area to be scaled (referring to image origin, negative values create a border around the image)
top_posy coordinate of top left corner of area to be scaled
src_colswidth of area to be scaled
src_rowsheight of area to be scaled
dest_colswidth of scaled image (in pixels)
dest_rowsheight of scaled image (in pixels)
interpolatespecifies 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
aspectspecifies 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)
DiColorImage::DiColorImage ( const DiColorImage image,
const int  horz,
const int  vert 
) [protected]

constructor, flip

Parameters:
imagepointer to reference image
horzflip horizontally if true
vertflip vertically if true
DiColorImage::DiColorImage ( const DiColorImage image,
const int  degree 
) [protected]

constructor, rotate

Parameters:
imagepointer to reference image
degreeangle by which the image shall be rotated

Member Function Documentation

int DiColorImage::checkInterData ( const int  mode = 1) [protected]

check intermediate pixel representation for consistency

Parameters:
modecheck number of pixels stored in the dataset if true
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:
dataresulting pointer to bitmap data (set to NULL if an error occurred)
frameindex of frame to be converted (default: first frame)
bitsnumber of bits per pixel used for the output bitmap (32)
Returns:
number of bytes allocated by the bitmap, or 0 if an error occured

Implements DiImage.

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:
datauntyped pointer memory buffer (set to NULL if not allocated externally)
sizesize of the memory buffer in bytes (if 0 'data' is set to NULL)
frameindex of frame to be converted (starting from 0)
bitsnumber of bits per pixel used for the output bitmap (24 or 32)
upsideDownspecifies the order of lines in the images (0 = top-down, bottom-up otherwise)
paddingalign each line to a 32-bit address if true (default)
Returns:
number of bytes allocated by the bitmap, or 0 if an error occured

Implements DiImage.

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

create a flipped copy of the current image

Parameters:
horzflip horizontally if true
vertflip vertically if true
Returns:
pointer to new DiImage object (NULL if an error occurred)

Implements DiImage.

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

create copy of current image object

Parameters:
fstartfirst frame to be processed
fcountnumber of frames
Returns:
pointer to new DicomImage object (NULL if an error occurred)

Implements DiImage.

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

create monochrome copy of the current image

Parameters:
redcoefficient by which the red component is weighted
greencoefficient by which the green component is weighted
bluecoefficient by which the blue component is weighted
Returns:
pointer to new DiImage object (NULL if an error occurred)

Implements DiImage.

DiImage* DiColorImage::createRotate ( const int  degree) const [virtual]

create a rotated copy of the current image.

Parameters:
degreeangle by which the image shall be rotated
Returns:
pointer to new DiImage object (NULL if an error occurred)

Implements DiImage.

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_posx coordinate of top left corner of area to be scaled (referring to image origin, negative values create a border around the image)
top_posy coordinate of top left corner of area to be scaled
src_colswidth of area to be scaled
src_rowsheight of area to be scaled
dest_colswidth of scaled image (in pixels)
dest_rowsheight of scaled image (in pixels)
interpolatespecifies 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
aspectspecifies 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)
pvaluedummy parameter (only used for monochrome images)
Returns:
pointer to new DiImage object (NULL if an error occurred)

Implements DiImage.

int DiColorImage::flip ( const int  horz,
const int  vert 
) [virtual]

flip current image (horizontally and/or vertically)

Parameters:
horzflip horizontally if true
vertflip 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.

const DiColorPixel* DiColorImage::getColorInterData ( ) const [inline]

get pointer to intermediate pixel data representation

Returns:
pointer to intermediate pixel data
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:
bufferuntyped pointer to the externally allocated memory buffer
sizesize of the memory buffer in bytes (will be checked)
framenumber of frame to be rendered
bitsnumber of bits for the output pixel data (depth)
planarflag, 0 = color-by-pixel and 1 = color-by-plane
Returns:
untyped pointer to the pixel data if successful, NULL otherwise
const DiPixel* DiColorImage::getInterData ( ) const [inline, virtual]

get pointer to intermediate pixel data representation

Returns:
pointer to intermediate pixel data

Implements DiImage.

virtual EP_Interpretation DiColorImage::getInternalColorModel ( ) const [inline, virtual]

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.

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:
framenumber of frame to be rendered
bitsnumber of bits per sample for the output pixel data (depth)
planar0 = 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.

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:
bufferuntyped pointer to the externally allocated memory buffer
sizesize of the memory buffer in bytes (will be checked)
framenumber of frame to be rendered
bitsnumber of bits per sample for the output pixel data (depth)
planar0 = color-by-pixel (R1G1B1...R2G2B2...R3G3B3...) 1 = color-by-plane (R1R2R3...G1G2G3...B1B2B3...)
Returns:
status, true if successful, false otherwise

Implements DiImage.

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:
bitsnumber of bits for the output pixel data (depth)
Returns:
number of bytes if successful, 0 otherwise

Implements DiImage.

const void* DiColorImage::getOutputPlane ( const int  plane) const [virtual]

get pixel data of specified plane.

(memory is handled internally)

Parameters:
planeindex of color plane
Returns:
untyped pointer to the pixel data if successful, NULL otherwise

Implements DiImage.

int DiColorImage::rotate ( const int  degree) [virtual]

rotate current image (by steps of 90 degrees)

Parameters:
degreeangle 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.

virtual void DiColorImage::updateImagePixelModuleAttributes ( DcmItem dataset) [protected, virtual]

update Image Pixel Module attributes in the given dataset.

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

Parameters:
datasetreference to DICOM image dataset

Reimplemented from DiImage.

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

write pixel data to BMP file

Parameters:
streamopen C output stream
frameindex of frame used for output (default: first frame = 0)
bitsnumber of bits used for output of pixel data (24 or 32, default (0) = 24)
Returns:
true if successful, false otherwise

Reimplemented from DiImage.

int DiColorImage::writeImageToDataset ( DcmItem dataset,
const int  mode,
const int  planar 
) [virtual]

write current image and related attributes to DICOM dataset.

Parameters:
datasetreference to DICOM dataset where the image attributes are stored
modedummy parameter (only used for monochrome images)
planarflag, whether the output data (for multi-planar images) should be planar or not
Returns:
true if successful, false otherwise

Implements DiImage.

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:
streamopen C++ output stream
frameindex of frame used for output
bitsnumber of bits used for output of pixel data
Returns:
true if successful, false otherwise

Implements DiImage.

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:
streamopen C output stream
frameindex of frame used for output
bitsnumber of bits used for output of pixel data
Returns:
true if successful, false otherwise

Implements DiImage.

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

write pixel data to raw PPM file

Parameters:
streamopen C output stream
frameindex of frame used for output
bitsnumber 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:


Generated on Tue May 15 2012 for DCMTK Version 3.6.1 20120515 by Doxygen 1.7.5.1-20111027