DcmQuantColorTable Class Reference

this class implements a color table that can either be a look-up table or an image color histogram. More...

List of all members.

Public Member Functions

 DcmQuantColorTable ()
 constructor
 ~DcmQuantColorTable ()
 destructor
void clear ()
 resets the object to default-constructed state
unsigned long getColors () const
 returns the number of colors in the color table
void setDescriptionString (OFString &str) const
 creates a description string suitable for use as Derivation Description.
OFCondition computeHistogram (DicomImage &image, unsigned long maxcolors)
 creates a color table containing a histogram of the given image.
unsigned long getMaxVal () const
 after a call to computeHistogram(), this method returns the maximum pixel value to which all color samples were down-sampled during computation of the histogram.
const DcmQuantPixelgetPixel (unsigned long idx) const
 returns the color at index idx.
DcmQuantComponent getRed (unsigned long idx) const
 returns the red color component at index idx
DcmQuantComponent getGreen (unsigned long idx) const
 returns the green color component at index idx
DcmQuantComponent getBlue (unsigned long idx) const
 returns the blue color component at index idx
OFCondition medianCut (DcmQuantColorTable &histogram, unsigned long sum, unsigned long theMaxval, unsigned long numberOfColors, DcmLargestDimensionType largeType, DcmRepresentativeColorType repType)
 computes a color LUT for the given image histogram.
int computeIndex (const DcmQuantPixel &px) const
 determines for a given color the closest match in the color LUT.
OFCondition write (DcmItem &target, OFBool writeAsOW, OFBool write16BitEntries)
 writes the current color table into a DICOM object, encoded as Red/Green/Blue Palette Color Lookup Table and Data.

Private Member Functions

void computeClusters ()
 after a call to medianCut(), this method computes for each entry in the color map the minimum of the euclidean distances to any other of the entries.
 DcmQuantColorTable (const DcmQuantColorTable &src)
 private undefined copy constructor
DcmQuantColorTableoperator= (const DcmQuantColorTable &src)
 private undefined copy assignment operator

Private Attributes

DcmQuantHistogramItemPointerarray
 color table data
unsigned long numColors
 number of entries in color table
unsigned long maxval
 maximum pixel value to which all color samples were down-sampled during computation of the histogram.


Detailed Description

this class implements a color table that can either be a look-up table or an image color histogram.

Definition at line 48 of file diqtctab.h.


Member Function Documentation

unsigned long DcmQuantColorTable::getColors (  )  const [inline]

returns the number of colors in the color table

Returns:
number of colors in color table

Definition at line 64 of file diqtctab.h.

References numColors.

void DcmQuantColorTable::setDescriptionString ( OFString str  )  const

creates a description string suitable for use as Derivation Description.

Parameters:
str description string returned in this parameter

OFCondition DcmQuantColorTable::computeHistogram ( DicomImage image,
unsigned long  maxcolors 
)

creates a color table containing a histogram of the given image.

Pixel sample values are downsampled if necessary to make sure the histogram fits into the given size limit.

Parameters:
image color image for which a histogram is computed
maxcolors maximum number of colors allowed in histogram. If necessary, pixel sample values are down-sampled to enforce this maximum.
Returns:
EC_Normal if successful, an error code otherwise.

const DcmQuantPixel& DcmQuantColorTable::getPixel ( unsigned long  idx  )  const [inline]

returns the color at index idx.

Parameters:
idx index, must be < getColors()
Returns:
const reference to color

Definition at line 99 of file diqtctab.h.

References array, and numColors.

Referenced by DcmQuantColorMapping< T1, T2 >::create().

DcmQuantComponent DcmQuantColorTable::getRed ( unsigned long  idx  )  const [inline]

returns the red color component at index idx

Parameters:
idx index, must be < getColors()
Returns:
red color component

Definition at line 111 of file diqtctab.h.

References array, DcmQuantPixel::getRed(), and numColors.

Referenced by computeIndex().

DcmQuantComponent DcmQuantColorTable::getGreen ( unsigned long  idx  )  const [inline]

returns the green color component at index idx

Parameters:
idx index, must be < getColors()
Returns:
green color component

Definition at line 123 of file diqtctab.h.

References array, DcmQuantPixel::getGreen(), and numColors.

Referenced by computeIndex().

DcmQuantComponent DcmQuantColorTable::getBlue ( unsigned long  idx  )  const [inline]

returns the blue color component at index idx

Parameters:
idx index, must be < getColors()
Returns:
blue color component

Definition at line 135 of file diqtctab.h.

References array, DcmQuantPixel::getBlue(), and numColors.

Referenced by computeIndex().

OFCondition DcmQuantColorTable::medianCut ( DcmQuantColorTable histogram,
unsigned long  sum,
unsigned long  theMaxval,
unsigned long  numberOfColors,
DcmLargestDimensionType  largeType,
DcmRepresentativeColorType  repType 
)

computes a color LUT for the given image histogram.

This median-cut colormap generator is based on Paul Heckbert's paper "Color Image Quantization for Frame Buffer Display", SIGGRAPH '82 Proceedings, page 297.

Parameters:
histogram image color histogram
sum number of pixels in image (colums * rows * frames)
theMaxval maximum value to which pixels were downsampled for histogram computation
numberOfColors desired number of colors in color LUT
largeType algorithm used for determining the largest dimension in the Median Cut algorithm
repType algorithm for choosing a representative color for each box in the Median Cut algorithm
Returns:
EC_Normal if successful, an error code otherwise.

int DcmQuantColorTable::computeIndex ( const DcmQuantPixel px  )  const [inline]

determines for a given color the closest match in the color LUT.

Parameters:
px color to look up in LUT
Returns:
index of closest match in LUT, -1 if look-up table empty

Definition at line 170 of file diqtctab.h.

References array, getBlue(), DcmQuantPixel::getBlue(), getGreen(), DcmQuantPixel::getGreen(), getRed(), DcmQuantPixel::getRed(), and numColors.

Referenced by DcmQuantColorMapping< T1, T2 >::create().

OFCondition DcmQuantColorTable::write ( DcmItem target,
OFBool  writeAsOW,
OFBool  write16BitEntries 
)

writes the current color table into a DICOM object, encoded as Red/Green/Blue Palette Color Lookup Table and Data.

Parameters:
target DICOM dataset to write to
writeAsOW if true, LUT data is encoded as OW, otherwise LUT data is encoded as US. A LUT with 64k entries is always encoded as OW since a US data element with 64k entries cannot be written in explicit VR.
write16BitEntries if true, LUT data is encoded with 16 bits per entry
Returns:
EC_Normal if successful, an error code otherwise.

void DcmQuantColorTable::computeClusters (  )  [private]

after a call to medianCut(), this method computes for each entry in the color map the minimum of the euclidean distances to any other of the entries.

Any color which has an euclidean distance of less than half of this distance is necessarily mapped to this entry. This data is used by computeIndex()


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


Generated on 6 Jan 2011 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.5.1