DCMTK Version 3.6.8
OFFIS DICOM Toolkit
|
this class implements Floyd-Steinberg error diffusion. More...
Public Member Functions | |
DcmQuantFloydSteinberg () | |
constructor | |
~DcmQuantFloydSteinberg () | |
destructor | |
OFCondition | initialize (unsigned long cols) |
initializes the Floyd-Steinberg error vectors for an image with the given number of columns. More... | |
void | adjust (DcmQuantPixel &px, long col, long maxval) |
uses the Floyd-Steinberg error vectors to adjust the color of the current image pixel. More... | |
void | propagate (const DcmQuantPixel &px, const DcmQuantPixel &mapped, long col) |
propagates the Floyd-Steinberg error terms for one pixel. More... | |
void | startRow (long &col, long &limitcol) |
starts error diffusion for a new row. More... | |
void | finishRow () |
finishes error diffusion for one image row. More... | |
void | nextCol (long &col) const |
increases or decreases the column number depending on the direction flag. More... | |
Private Member Functions | |
void | cleanup () |
frees all memory allocated by the error vectors | |
DcmQuantFloydSteinberg (const DcmQuantFloydSteinberg &src) | |
private undefined copy constructor | |
DcmQuantFloydSteinberg & | operator= (const DcmQuantFloydSteinberg &src) |
private undefined copy assignment operator | |
Private Attributes | |
long * | thisrerr |
current red error vector. Points to an array of (columns + 2) entries. | |
long * | nextrerr |
red error vector for next row. Points to an array of (columns + 2) entries. | |
long * | thisgerr |
current green error vector. Points to an array of (columns + 2) entries. | |
long * | nextgerr |
green error vector for next row. Points to an array of (columns + 2) entries. | |
long * | thisberr |
current blue error vector. Points to an array of (columns + 2) entries. | |
long * | nextberr |
blue error vector for next row. Points to an array of (columns + 2) entries. | |
long * | temperr |
temporary pointer used for swapping error vectors | |
int | fs_direction |
boolean flag indicating in which direction (left to right/right to left) the FS distribution should be done. More... | |
unsigned long | columns |
number of columns in image | |
this class implements Floyd-Steinberg error diffusion.
It is used during the color quantization of an image.
|
inline |
uses the Floyd-Steinberg error vectors to adjust the color of the current image pixel.
px | the original image pixel is passed in this parameter. Upon return, the pixel value contains the new value after error diffusion. |
col | column in which the current pixel is located, must be [0..columns-1] |
maxval | maximum value for each color component. |
References DcmQuantPixel::assign(), DcmQuantPixel::getBlue(), DcmQuantPixel::getGreen(), and DcmQuantPixel::getRed().
|
inline |
finishes error diffusion for one image row.
The direction flag is inverted and the error vectors for the "current" and "next" image row are swapped.
OFCondition DcmQuantFloydSteinberg::initialize | ( | unsigned long | cols | ) |
initializes the Floyd-Steinberg error vectors for an image with the given number of columns.
cols | number of columns in image |
|
inline |
increases or decreases the column number depending on the direction flag.
col | column number, may become negative |
|
inline |
propagates the Floyd-Steinberg error terms for one pixel.
px | color value the current image pixel should have (after adjustment) |
mapped | color value (selected from the color LUT) the current image pixel really uses |
col | column in which the current pixel is located, must be [0..columns-1] |
References DcmQuantPixel::getBlue(), DcmQuantPixel::getGreen(), and DcmQuantPixel::getRed().
|
inline |
starts error diffusion for a new row.
The error vectors for the next image row are initialized to zero. The initial and last column of the current row are determined
col | initial column for the current row returned in this parameter |
limitcol | limit column (one past the last valid column) for the current row returned in this parameter. May become negative. |
|
private |
boolean flag indicating in which direction (left to right/right to left) the FS distribution should be done.
Flag is inverted after each row.