DCMTK Version 3.6.8
OFFIS DICOM Toolkit
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
DiImage Class Referenceabstract

Base class for images. More...

+ Inheritance diagram for DiImage:

Public Member Functions

 DiImage (const DiDocument *docu, const EI_Status status, const int spp)
 constructor More...
 
virtual ~DiImage ()
 destructor
 
virtual int processNextFrames (const unsigned long fcount)
 process next couple of frames More...
 
EI_Status getStatus () const
 get status of the image object More...
 
Uint32 getNumberOfFrames () const
 get number of frames More...
 
Uint32 getFirstFrame () const
 get index of first frame More...
 
Uint32 getTotalNumberOfFrames () const
 get total number of frames More...
 
Uint32 getRepresentativeFrame () const
 get representative frame More...
 
double getFrameTime () const
 get frame time More...
 
Uint16 getRows () const
 get number of rows More...
 
Uint16 getColumns () const
 get number of columns More...
 
double getPixelWidth () const
 get pixel's width More...
 
double getPixelHeight () const
 get pixel's height More...
 
double getRowColumnRatio () const
 get pixel's rows/column ratio More...
 
double getColumnRowRatio () const
 get pixel's column/rows ratio More...
 
int setRowColumnRatio (const double ratio)
 set pixel's rows/column ratio More...
 
int setColumnRowRatio (const double ratio)
 set pixel's column/rows ratio More...
 
EP_Polarity getPolarity () const
 get polarity. More...
 
int setPolarity (const EP_Polarity polarity)
 set polarity. More...
 
virtual int getBits (const int bits=0) const
 get number of bits per sample. More...
 
virtual EP_Interpretation getInternalColorModel () const =0
 get color model of internal pixel representation. More...
 
virtual const DiPixelgetInterData () const =0
 get access to intermediate pixel data representation (abstract) More...
 
virtual unsigned long getOutputDataSize (const int bits=0) const =0
 get number of bytes required for the rendered output of a single frame More...
 
virtual const void * getOutputData (const unsigned long frame, const int bits, const int planar)=0
 get pixel data with specified format (abstract). More...
 
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). More...
 
virtual const void * getOutputPlane (const int plane) const =0
 get pixel data of specified plane (abstract). More...
 
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 More...
 
virtual DiMonoImagegetMonoImagePtr ()
 get pointer to monochrome image object More...
 
virtual DiImagecreateImage (const unsigned long fstart, const unsigned long fcount) const =0
 create copy of current image object (abstract) More...
 
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). More...
 
virtual int flip (const int horz, const int vert)=0
 flip current image horizontally and/or vertically (abstract) More...
 
virtual DiImagecreateFlip (const int horz, const int vert) const =0
 create a flipped copy of the current image (abstract). More...
 
virtual int rotate (const int degree)
 rotate current image (by steps of 90 degrees) More...
 
virtual DiImagecreateRotate (const int degree) const =0
 create a rotated copy of the current image (abstract). More...
 
virtual DiImagecreateMono (const double red, const double green, const double blue) const =0
 create monochrome copy of the current image (abstract). More...
 
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). More...
 
virtual unsigned long createAWTBitmap (void *&data, const unsigned long frame, const int bits)=0
 create true color (32 bit) bitmap for Java AWT (abstract). More...
 
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. More...
 
virtual int writeImageToDataset (DcmItem &dataset, const int mode=0, const int planar=2)=0
 write current image and related attributes to DICOM dataset. More...
 
virtual int writePPM (STD_NAMESPACE ostream &stream, const unsigned long frame, const int bits)=0
 write pixel data to PPM file (abstract). More...
 
virtual int writePPM (FILE *stream, const unsigned long frame, const int bits)=0
 write pixel data to PPM file (abstract). More...
 
virtual int writeRawPPM (FILE *stream, const unsigned long frame, const int bits)=0
 write pixel data to raw PPM file (abstract) More...
 
virtual int writeBMP (FILE *stream, const unsigned long frame, const int bits)
 write pixel data to BMP file More...
 

Protected Member Functions

 DiImage (const DiDocument *docu, const EI_Status status)
 constructor More...
 
 DiImage (const DiImage *image, const unsigned long fstart, const unsigned long fcount)
 constructor, copy More...
 
 DiImage (const DiImage *image, const Uint16 width, const Uint16 height, const int aspect=0)
 constructor, scale/clip More...
 
 DiImage (const DiImage *image, const int degree=0)
 constructor, rotate More...
 
 DiImage (const DiImage *image, const unsigned long frame, const int stored, const int alloc)
 constructor, createMonoOutput More...
 
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. More...
 
int detachPixelData ()
 detach pixel data. More...
 

Protected Attributes

EI_Status ImageStatus
 copy of status variable declared in class 'DicomImage'
 
const DiDocumentDocument
 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)
 
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() [1/6]

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() [2/6]

DiImage::DiImage ( const DiDocument docu,
const EI_Status  status 
)
protected

constructor

Parameters
docupointer to the DICOM document
statusstatus of the image object

◆ DiImage() [3/6]

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() [4/6]

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() [5/6]

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() [6/6]

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

◆ createAWTBitmap()

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 occurred

Implemented in DiColorImage, and DiMonoImage.

◆ createDIB()

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 occurred

Implemented in DiColorImage, and DiMonoImage.

◆ createFlip()

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, DiMono1Image, and DiMono2Image.

◆ createImage()

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 DiColorImage, DiMono1Image, and DiMono2Image.

◆ createMono()

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 DiMono1Image, DiMono2Image, and DiColorImage.

◆ createRotate()

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, DiMono1Image, and DiMono2Image.

◆ createScale()

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 DiMono1Image, DiMono2Image, and DiColorImage.

◆ detachPixelData()

int DiImage::detachPixelData ( )
protected

detach pixel data.

removes storage area used for the pixel data from memory

Returns
status, true if successful, false otherwise

◆ flip()

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 DiColorImage, and DiMonoImage.

◆ getBits()

virtual int DiImage::getBits ( const int  bits = 0) const
inlinevirtual

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.

◆ getColumnRowRatio()

double DiImage::getColumnRowRatio ( ) const
inline

get pixel's column/rows ratio

Returns
pixel's column/rows ratio

◆ getColumns()

Uint16 DiImage::getColumns ( ) const
inline

get number of columns

Returns
number of columns

◆ getFirstFrame()

Uint32 DiImage::getFirstFrame ( ) const
inline

get index of first frame

Returns
index of first frame

◆ getFrameTime()

double DiImage::getFrameTime ( ) const
inline

get frame time

Returns
frame time

◆ getInterData()

virtual const DiPixel * DiImage::getInterData ( ) const
pure virtual

get access to intermediate pixel data representation (abstract)

Returns
pointer to intermediate pixel data

Implemented in DiColorImage, and DiMonoImage.

◆ getInternalColorModel()

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 DiColorImage, DiMono1Image, and DiMono2Image.

◆ getMonoImagePtr()

virtual DiMonoImage * DiImage::getMonoImagePtr ( )
inlinevirtual

get pointer to monochrome image object

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

Reimplemented in DiMonoImage.

◆ getNumberOfFrames()

Uint32 DiImage::getNumberOfFrames ( ) const
inline

get number of frames

Returns
number of frames

◆ getOutputData() [1/2]

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 DiColorImage, DiMono1Image, DiMono2Image, and DiMonoImage.

◆ getOutputData() [2/2]

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 DiColorImage, DiMono1Image, DiMono2Image, and DiMonoImage.

◆ getOutputDataSize()

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 DiColorImage, and DiMonoImage.

◆ getOutputPlane()

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.

◆ getOverlayPtr()

virtual DiOverlay * DiImage::getOverlayPtr ( const unsigned int  )
inlinevirtual

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.

◆ getPixelHeight()

double DiImage::getPixelHeight ( ) const
inline

get pixel's height

Returns
pixel's height

◆ getPixelWidth()

double DiImage::getPixelWidth ( ) const
inline

get pixel's width

Returns
pixel's width

◆ getPolarity()

EP_Polarity DiImage::getPolarity ( ) const
inline

get polarity.

possible values are EPP_Normal and EPP_Reverse

Returns
currently active polarity mode

◆ getRepresentativeFrame()

Uint32 DiImage::getRepresentativeFrame ( ) const
inline

get representative frame

Returns
representative frame

◆ getRowColumnRatio()

double DiImage::getRowColumnRatio ( ) const
inline

get pixel's rows/column ratio

Returns
pixel's rows/column ratio

◆ getRows()

Uint16 DiImage::getRows ( ) const
inline

get number of rows

Returns
number of rows

◆ getStatus()

EI_Status DiImage::getStatus ( ) const
inline

get status of the image object

Returns
status of the image object

◆ getTotalNumberOfFrames()

Uint32 DiImage::getTotalNumberOfFrames ( ) const
inline

get total number of frames

Returns
total number of frames

◆ processNextFrames()

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 DiARGBImage, DiCMYKImage, DiHSVImage, DiPaletteImage, DiRGBImage, DiYBRImage, DiYBR422Image, DiYBRPart422Image, and DiMonoImage.

◆ rotate()

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 DiColorImage, and DiMonoImage.

◆ setColumnRowRatio()

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

◆ setPolarity()

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

◆ setRowColumnRatio()

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

◆ updateImagePixelModuleAttributes()

virtual void DiImage::updateImagePixelModuleAttributes ( DcmItem dataset)
protectedvirtual

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 DiColorImage, and DiMonoImage.

◆ writeBMP()

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 DiColorImage, and DiMonoImage.

◆ writeFrameToDataset()

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

◆ writeImageToDataset()

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 DiColorImage, and DiMonoImage.

◆ writePPM() [1/2]

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 DiColorImage, and DiMonoImage.

◆ writePPM() [2/2]

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 DiColorImage, and DiMonoImage.

◆ writeRawPPM()

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 DiColorImage, and DiMonoImage.


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


Generated on Tue Dec 19 2023 for DCMTK Version 3.6.8 by Doxygen 1.9.4