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

Base class for images. More...

+ Inheritance diagram for DiImage:

List of all members.

Public Member Functions

 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 getRepresentativeFrame () const
 get representative frame
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 EP_Interpretation getInternalColorModel () const =0
 get color model of internal pixel representation.
virtual const DiPixelgetInterData () const =0
 get access to intermediate pixel data representation (abstract)
virtual unsigned long getOutputDataSize (const int bits=0) const =0
 get number of bytes required for the rendered output of a single frame
virtual const void * getOutputData (const unsigned long frame, const int bits, const int planar)=0
 get pixel data with specified format (abstract).
virtual 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 (abstract).
virtual const void * getOutputPlane (const int plane) const =0
 get pixel data of specified plane (abstract).
virtual void deleteOutputData ()=0
 delete internally handled output memory buffer (abstract)
virtual DiOverlaygetOverlayPtr (const unsigned int)
 get pointer to the object managing the overlay planes
virtual DiMonoImagegetMonoImagePtr ()
 get pointer to monochrome image object
virtual DiImagecreateImage (const unsigned long fstart, const unsigned long fcount) const =0
 create copy of current image object (abstract)
virtual DiImagecreateScale (const signed long left_pos, const signed long top_pos, const unsigned long clip_width, const unsigned long clip_height, const unsigned long scale_width, const unsigned long scale_height, const int interpolate, const int aspect, const Uint16 pvalue) const =0
 create scaled copy of specified (clipping) area of the current image object (abstract).
virtual int flip (const int horz, const int vert)=0
 flip current image horizontally and/or vertically (abstract)
virtual DiImagecreateFlip (const int horz, const int vert) const =0
 create a flipped copy of the current image (abstract).
virtual int rotate (const int degree)
 rotate current image (by steps of 90 degrees)
virtual DiImagecreateRotate (const int degree) const =0
 create a rotated copy of the current image (abstract).
virtual DiImagecreateMono (const double red, const double green, const double blue) const =0
 create monochrome copy of the current image (abstract).
virtual unsigned long createDIB (void *&data, const unsigned long size, const unsigned long frame, const int bits, const int upsideDown, const int padding=1)=0
 create true color (24/32 bit) or palette (8 bit) bitmap for MS Windows (abstract).
virtual unsigned long createAWTBitmap (void *&data, const unsigned long frame, const int bits)=0
 create true color (32 bit) bitmap for Java AWT (abstract).
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.
virtual int writeImageToDataset (DcmItem &dataset, const int mode=0, const int planar=2)=0
 write current image and related attributes to DICOM dataset.
virtual int writePPM (STD_NAMESPACE ostream &stream, const unsigned long frame, const int bits)=0
 write pixel data to PPM file (abstract).
virtual int writePPM (FILE *stream, const unsigned long frame, const int bits)=0
 write pixel data to PPM file (abstract).
virtual int writeRawPPM (FILE *stream, const unsigned long frame, const int bits)=0
 write pixel data to raw PPM file (abstract)
virtual int writeBMP (FILE *stream, const unsigned long frame, const int bits)
 write pixel data to BMP file

Protected Member Functions

 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
virtual void updateImagePixelModuleAttributes (DcmItem &dataset)
 update Image Pixel Module attributes in the given dataset.
int detachPixelData ()
 detach pixel data.
 DiImage (const DiImage &)
DiImageoperator= (const DiImage &)

Protected Attributes

EI_Status ImageStatus
 copy of status variable declared in class 'DicomImage'
const DiDocumentDocument
 points to special object, which capsulates 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')
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)
DiInputPixelInputData
 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)

Detailed Description

Base class for images.

NB: This is an internal class of module dcmimgle/dcmimage. Please do not use it directly. Instead use the main interface class DicomImage.


Constructor & Destructor Documentation

DiImage::DiImage ( const DiDocument docu,
const EI_Status  status,
const int  spp 
)

constructor

Parameters:
docupointer to the DICOM document
statusstatus of the image object
sppsamples per pixel
DiImage::DiImage ( const DiDocument docu,
const EI_Status  status 
) [protected]

constructor

Parameters:
docupointer to the DICOM document
statusstatus of the image object
DiImage::DiImage ( const DiImage 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
DiImage::DiImage ( const DiImage image,
const Uint16  width,
const Uint16  height,
const int  aspect = 0 
) [protected]

constructor, scale/clip

Parameters:
imagepointer to reference image
widthnumber of columns of the new image
heightnumber of rows of the new image
aspectflag indicating whether pixel aspect ratio should be used or not
DiImage::DiImage ( const DiImage image,
const int  degree = 0 
) [protected]

constructor, rotate

Parameters:
imagepointer to reference image
degreeangle by which the image shall be rotated
DiImage::DiImage ( const DiImage image,
const unsigned long  frame,
const int  stored,
const int  alloc 
) [protected]

constructor, createMonoOutput

Parameters:
imagepointer to reference image
framenumber of frame stored in the new image object
storednumber of bits stored
allocnumber of bits allocated

Member Function Documentation

virtual unsigned long DiImage::createAWTBitmap ( void *&  data,
const unsigned long  frame,
const int  bits 
) [pure virtual]

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

Parameters:
dataresulting pointer to bitmap data (set to NULL if an error occurred)
frameindex of frame to be converted
bitsnumber of bits per pixel used for the output bitmap (8 or 32)
Returns:
number of bytes allocated by the bitmap, or 0 if an error occured

Implemented in DiMonoImage, and DiColorImage.

virtual unsigned long DiImage::createDIB ( void *&  data,
const unsigned long  size,
const unsigned long  frame,
const int  bits,
const int  upsideDown,
const int  padding = 1 
) [pure virtual]

create true color (24/32 bit) or palette (8 bit) bitmap for MS Windows (abstract).

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 (8, 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

Implemented in DiMonoImage, and DiColorImage.

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

create a flipped copy of the current image (abstract).

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

Implemented in DiColorImage, DiMono2Image, and DiMono1Image.

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

create copy of current image object (abstract)

Parameters:
fstartfirst frame to be processed (not fully implemented!)
fcountnumber of frames (not fully implemented!)
Returns:
pointer to new DiImage object (NULL if an error occurred)

Implemented in DiMono2Image, DiColorImage, and DiMono1Image.

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

create monochrome copy of the current image (abstract).

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)

Implemented in DiColorImage, DiMono2Image, and DiMono1Image.

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

create a rotated copy of the current image (abstract).

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

Implemented in DiColorImage, DiMono2Image, and DiMono1Image.

virtual DiImage* DiImage::createScale ( const signed long  left_pos,
const signed long  top_pos,
const unsigned long  clip_width,
const unsigned long  clip_height,
const unsigned long  scale_width,
const unsigned long  scale_height,
const int  interpolate,
const int  aspect,
const Uint16  pvalue 
) const [pure virtual]

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

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
clip_widthwidth of area to be scaled
clip_heightheight of area to be scaled
scale_widthwidth of scaled image (in pixels)
scale_heightheight 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)
pvalueP-value used for the border outside the image (0..65535)
Returns:
pointer to new DiImage object (NULL if an error occurred)

Implemented in DiMono2Image, DiColorImage, and DiMono1Image.

int DiImage::detachPixelData ( ) [protected]

detach pixel data.

removes storage area used for the pixel data from memory

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

flip current image horizontally and/or vertically (abstract)

Parameters:
horzflip horizontally if true
vertflip vertically if true
Returns:
true if successful, false otherwise

Implemented in DiMonoImage, and DiColorImage.

virtual int DiImage::getBits ( const int  bits = 0) const [inline, virtual]

get number of bits per sample.

If the optional parameter is specified the value will be checked and in any case a valid value will be returned.

Parameters:
bitsvalue to be returned (if less than 1 or greater than the maximum (32) the default value will be used which is equal to the bits per sample value stored in the DICOM dataset)
Returns:
status, true if successful, false otherwise

Reimplemented in DiMonoImage.

double DiImage::getColumnRowRatio ( ) const [inline]

get pixel's column/rows ratio

Returns:
pixel's column/rows ratio
Uint16 DiImage::getColumns ( ) const [inline]

get number of columns

Returns:
number of columns
Uint32 DiImage::getFirstFrame ( ) const [inline]

get index of first frame

Returns:
index of first frame
virtual const DiPixel* DiImage::getInterData ( ) const [pure virtual]

get access to intermediate pixel data representation (abstract)

Returns:
pointer to intermediate pixel data

Implemented in DiMonoImage, and DiColorImage.

virtual EP_Interpretation DiImage::getInternalColorModel ( ) const [pure virtual]

get color model of internal pixel representation.

Possible values are: EPI_Monochrome1, EPI_Monochrome2, EPI_RGB and EPI_YBR_Full

Returns:
color model of internal pixel representation

Implemented in DiMono2Image, DiColorImage, and DiMono1Image.

virtual DiMonoImage* DiImage::getMonoImagePtr ( ) [inline, virtual]

get pointer to monochrome image object

Returns:
pointer to monochrome image object (here: always NULL)

Reimplemented in DiMonoImage.

Uint32 DiImage::getNumberOfFrames ( ) const [inline]

get number of frames

Returns:
number of frames
virtual const void* DiImage::getOutputData ( const unsigned long  frame,
const int  bits,
const int  planar 
) [pure virtual]

get pixel data with specified format (abstract).

(memory is handled internally)

Parameters:
framenumber of frame to be rendered
bitsnumber of bits for the output pixel data (depth)
planarflag, whether the output data (for multi-planar images) should be planar or not
Returns:
untyped pointer to the pixel data if successful, NULL otherwise

Implemented in DiMonoImage, DiMono2Image, DiColorImage, and DiMono1Image.

virtual int DiImage::getOutputData ( void *  buffer,
const unsigned long  size,
const unsigned long  frame,
const int  bits,
const int  planar 
) [pure virtual]

get pixel data with specified format (abstract).

(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, whether the output data (for multi-planar images) should be planar or not
Returns:
status, true if successful, false otherwise

Implemented in DiMonoImage, DiMono2Image, DiColorImage, and DiMono1Image.

virtual unsigned long DiImage::getOutputDataSize ( const int  bits = 0) const [pure 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

Implemented in DiMonoImage, and DiColorImage.

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

get pixel data of specified plane (abstract).

(memory is handled internally)

Parameters:
planenumber of plane which should be rendered (starting from 0)
Returns:
untyped pointer to the pixel data if successful, NULL otherwise

Implemented in DiMonoImage, and DiColorImage.

virtual DiOverlay* DiImage::getOverlayPtr ( const unsigned int  ) [inline, virtual]

get pointer to the object managing the overlay planes

(#)param idx index of overlay group (here: not used, since only applicable for monochrome images)

Returns:
pointer to the overlay managing object, here: NULL

Reimplemented in DiMonoImage.

double DiImage::getPixelHeight ( ) const [inline]

get pixel's height

Returns:
pixel's height
double DiImage::getPixelWidth ( ) const [inline]

get pixel's width

Returns:
pixel's width
EP_Polarity DiImage::getPolarity ( ) const [inline]

get polarity.

possible values are EPP_Normal and EPP_Reverse

Returns:
currently active polarity mode
Uint32 DiImage::getRepresentativeFrame ( ) const [inline]

get representative frame

Returns:
representative frame
double DiImage::getRowColumnRatio ( ) const [inline]

get pixel's rows/column ratio

Returns:
pixel's rows/column ratio
Uint16 DiImage::getRows ( ) const [inline]

get number of rows

Returns:
number of rows
EI_Status DiImage::getStatus ( ) const [inline]

get status of the image object

Returns:
status of the image object
virtual int DiImage::processNextFrames ( const unsigned long  fcount) [virtual]

process next couple of frames

Parameters:
fcountnumber of frames to be processed (0 = same number as before)
Returns:
status, true if successful, false otherwise

Reimplemented in DiMonoImage, DiARGBImage, DiPaletteImage, DiCMYKImage, DiHSVImage, DiRGBImage, DiYBRImage, DiYBR422Image, and DiYBRPart422Image.

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

rotate current image (by steps of 90 degrees)

Parameters:
degreeangle by which the image shall be rotated
Returns:
true if successful, false otherwise

Reimplemented in DiMonoImage, and DiColorImage.

int DiImage::setColumnRowRatio ( const double  ratio)

set pixel's column/rows ratio

Parameters:
ratiopixel's column/rows ratio
Returns:
status, true if successful, false otherwise
int DiImage::setPolarity ( const EP_Polarity  polarity)

set polarity.

Parameters:
polaritypolarity (normal or reverse)
Returns:
true if successful (1 = polarity has changed, 2 = polarity has not changed) false otherwise
int DiImage::setRowColumnRatio ( const double  ratio)

set pixel's rows/column ratio

Parameters:
ratiopixel's rows/column ratio
Returns:
status, true if successful, false otherwise
virtual void DiImage::updateImagePixelModuleAttributes ( DcmItem dataset) [protected, virtual]

update Image Pixel Module attributes in the given dataset.

Removes smallest/largest pixel value and updates pixel aspect ratio as well as pixel spacing (if required). Used in writeXXXToDataset() routines.

Parameters:
datasetreference to DICOM image dataset

Reimplemented in DiMonoImage, and DiColorImage.

virtual int DiImage::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 (8, 24 or 32)
Returns:
true if successful, false otherwise

Reimplemented in DiMonoImage, and DiColorImage.

int DiImage::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.

Parameters:
datasetreference to DICOM dataset where the image attributes are stored
frameindex of frame used for output
bitsnumber of bits used for output of pixel data
planarflag, whether the output data (for multi-planar images) should be planar or not
Returns:
true if successful, false otherwise
virtual int DiImage::writeImageToDataset ( DcmItem dataset,
const int  mode = 0,
const int  planar = 2 
) [pure virtual]

write current image and related attributes to DICOM dataset.

Parameters:
datasetreference to DICOM dataset where the image attributes are stored
modedetermine value of BitsStored from 'used' or 'possible' pixel values
planarflag, whether the output data (for multi-planar images) should be planar or not
Returns:
true if successful, false otherwise

Implemented in DiMonoImage, and DiColorImage.

virtual int DiImage::writePPM ( STD_NAMESPACE ostream &  stream,
const unsigned long  frame,
const int  bits 
) [pure virtual]

write pixel data to PPM file (abstract).

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

Implemented in DiMonoImage, and DiColorImage.

virtual int DiImage::writePPM ( FILE *  stream,
const unsigned long  frame,
const int  bits 
) [pure virtual]

write pixel data to PPM file (abstract).

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

Implemented in DiMonoImage, and DiColorImage.

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

write pixel data to raw PPM file (abstract)

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

Implemented in DiMonoImage, and DiColorImage.


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