DCMTK
Version 3.6.1 20120515
OFFIS DICOM Toolkit
|
Base class for images. More...
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 DiPixel * | getInterData () 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 DiOverlay * | getOverlayPtr (const unsigned int) |
get pointer to the object managing the overlay planes | |
virtual DiMonoImage * | getMonoImagePtr () |
get pointer to monochrome image object | |
virtual DiImage * | createImage (const unsigned long fstart, const unsigned long fcount) const =0 |
create copy of current image object (abstract) | |
virtual 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 =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 DiImage * | createFlip (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 DiImage * | createRotate (const int degree) const =0 |
create a rotated copy of the current image (abstract). | |
virtual DiImage * | createMono (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 &) | |
DiImage & | operator= (const DiImage &) |
Protected Attributes | |
EI_Status | ImageStatus |
copy of status variable declared in class 'DicomImage' | |
const DiDocument * | Document |
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) | |
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) |
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.
DiImage::DiImage | ( | const DiDocument * | docu, |
const EI_Status | status, | ||
const int | spp | ||
) |
constructor
docu | pointer to the DICOM document |
status | status of the image object |
spp | samples per pixel |
DiImage::DiImage | ( | const DiDocument * | docu, |
const EI_Status | status | ||
) | [protected] |
constructor
docu | pointer to the DICOM document |
status | status of the image object |
DiImage::DiImage | ( | const DiImage * | image, |
const unsigned long | fstart, | ||
const unsigned long | fcount | ||
) | [protected] |
constructor, copy
image | pointer to reference image |
fstart | first frame to be processed |
fcount | number of frames |
DiImage::DiImage | ( | const DiImage * | image, |
const Uint16 | width, | ||
const Uint16 | height, | ||
const int | aspect = 0 |
||
) | [protected] |
constructor, scale/clip
image | pointer to reference image |
width | number of columns of the new image |
height | number of rows of the new image |
aspect | flag indicating whether pixel aspect ratio should be used or not |
DiImage::DiImage | ( | const DiImage * | image, |
const int | degree = 0 |
||
) | [protected] |
constructor, rotate
image | pointer to reference image |
degree | angle 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
image | pointer to reference image |
frame | number of frame stored in the new image object |
stored | number of bits stored |
alloc | number of bits allocated |
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).
data | resulting pointer to bitmap data (set to NULL if an error occurred) |
frame | index of frame to be converted |
bits | number of bits per pixel used for the output bitmap (8 or 32) |
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).
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 (8, 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) |
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).
horz | flip horizontally if true |
vert | flip vertically if true |
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)
fstart | first frame to be processed (not fully implemented!) |
fcount | number of frames (not fully implemented!) |
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).
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 |
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).
degree | angle by which the image shall be rotated |
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).
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 |
clip_width | width of area to be scaled |
clip_height | height of area to be scaled |
scale_width | width of scaled image (in pixels) |
scale_height | 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 | P-value used for the border outside the image (0..65535) |
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)
horz | flip horizontally if true |
vert | flip vertically if true |
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.
bits | value 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) |
Reimplemented in DiMonoImage.
double DiImage::getColumnRowRatio | ( | ) | const [inline] |
get pixel's column/rows ratio
Uint16 DiImage::getColumns | ( | ) | const [inline] |
get number of columns
Uint32 DiImage::getFirstFrame | ( | ) | const [inline] |
get index of first frame
virtual const DiPixel* DiImage::getInterData | ( | ) | const [pure virtual] |
get access to intermediate pixel data representation (abstract)
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
Implemented in DiMono2Image, DiColorImage, and DiMono1Image.
virtual DiMonoImage* DiImage::getMonoImagePtr | ( | ) | [inline, virtual] |
get pointer to monochrome image object
Reimplemented in DiMonoImage.
Uint32 DiImage::getNumberOfFrames | ( | ) | const [inline] |
get 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)
frame | number of frame to be rendered |
bits | number of bits for the output pixel data (depth) |
planar | flag, whether the output data (for multi-planar images) should be planar or not |
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)
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, whether the output data (for multi-planar images) should be planar or not |
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
bits | number of bits for the output pixel data (depth) |
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)
plane | number of plane which should be rendered (starting from 0) |
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)
Reimplemented in DiMonoImage.
double DiImage::getPixelHeight | ( | ) | const [inline] |
get pixel's height
double DiImage::getPixelWidth | ( | ) | const [inline] |
get pixel's width
EP_Polarity DiImage::getPolarity | ( | ) | const [inline] |
get polarity.
possible values are EPP_Normal and EPP_Reverse
Uint32 DiImage::getRepresentativeFrame | ( | ) | const [inline] |
get representative frame
double DiImage::getRowColumnRatio | ( | ) | const [inline] |
get pixel's rows/column ratio
Uint16 DiImage::getRows | ( | ) | const [inline] |
get number of rows
EI_Status DiImage::getStatus | ( | ) | const [inline] |
get status of the image object
virtual int DiImage::processNextFrames | ( | const unsigned long | fcount | ) | [virtual] |
process next couple of frames
fcount | number of frames to be processed (0 = same number as before) |
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)
degree | angle by which the image shall be rotated |
Reimplemented in DiMonoImage, and DiColorImage.
int DiImage::setColumnRowRatio | ( | const double | ratio | ) |
set pixel's column/rows ratio
ratio | pixel's column/rows ratio |
int DiImage::setPolarity | ( | const EP_Polarity | polarity | ) |
set polarity.
polarity | polarity (normal or reverse) |
int DiImage::setRowColumnRatio | ( | const double | ratio | ) |
set pixel's rows/column ratio
ratio | pixel's rows/column ratio |
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.
dataset | reference 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
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 (8, 24 or 32) |
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.
dataset | reference to DICOM dataset where the image attributes are stored |
frame | index of frame used for output |
bits | number of bits used for output of pixel data |
planar | flag, whether the output data (for multi-planar images) should be planar or not |
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.
dataset | reference to DICOM dataset where the image attributes are stored |
mode | determine value of BitsStored from 'used' or 'possible' pixel values |
planar | flag, whether the output data (for multi-planar images) should be planar or not |
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.
stream | open C++ output stream |
frame | index of frame used for output |
bits | number of bits used for output of pixel data |
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.
stream | open C output stream |
frame | index of frame used for output |
bits | number of bits used for output of pixel data |
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)
stream | open C output stream |
frame | index of frame used for output |
bits | number of bits used for output of pixel data |
Implemented in DiMonoImage, and DiColorImage.