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 DcmQuantPixel & | getPixel (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 | |
DcmQuantColorTable & | operator= (const DcmQuantColorTable &src) |
private undefined copy assignment operator | |
Private Attributes | |
DcmQuantHistogramItemPointer * | array |
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. |
Definition at line 48 of file diqtctab.h.
unsigned long DcmQuantColorTable::getColors | ( | ) | const [inline] |
returns the number of colors in the 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.
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.
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. |
const DcmQuantPixel& DcmQuantColorTable::getPixel | ( | unsigned long | idx | ) | const [inline] |
returns the color at index idx.
idx | index, must be < getColors() |
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
idx | index, must be < getColors() |
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
idx | index, must be < getColors() |
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
idx | index, must be < getColors() |
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.
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 |
int DcmQuantColorTable::computeIndex | ( | const DcmQuantPixel & | px | ) | const [inline] |
determines for a given color the closest match in the color LUT.
px | color to look up in LUT |
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.
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 |
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()