DCMTK
Version 3.6.1 20170228
OFFIS DICOM Toolkit
|
this class implements a color table that can either be a look-up table or an image color histogram. More...
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 More... | |
void | setDescriptionString (OFString &str) const |
creates a description string suitable for use as Derivation Description. More... | |
OFCondition | computeHistogram (DicomImage &image, unsigned long maxcolors) |
creates a color table containing a histogram of the given image. More... | |
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. More... | |
DcmQuantComponent | getRed (unsigned long idx) const |
returns the red color component at index idx More... | |
DcmQuantComponent | getGreen (unsigned long idx) const |
returns the green color component at index idx More... | |
DcmQuantComponent | getBlue (unsigned long idx) const |
returns the blue color component at index idx More... | |
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. More... | |
int | computeIndex (const DcmQuantPixel &px) const |
determines for a given color the closest match in the color LUT. More... | |
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. More... | |
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. More... | |
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. | |
this class implements a color table that can either be a look-up table or an image color histogram.
|
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()
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. |
|
inline |
determines for a given color the closest match in the color LUT.
px | color to look up in LUT |
References DcmQuantPixel::getBlue(), DcmQuantPixel::getGreen(), and DcmQuantPixel::getRed().
Referenced by DcmQuantColorMapping< T1, T2 >::create().
|
inline |
returns the blue color component at index idx
idx | index, must be < getColors() |
|
inline |
returns the number of colors in the color table
|
inline |
returns the green color component at index idx
idx | index, must be < getColors() |
|
inline |
returns the color at index idx.
idx | index, must be < getColors() |
Referenced by DcmQuantColorMapping< T1, T2 >::create().
|
inline |
returns the red color component at index idx
idx | index, must be < getColors() |
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 |
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::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 |