DCMTK  Version 3.6.1 20120515
OFFIS DICOM Toolkit
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
DiGSDFunction Class Reference

Class to manage GSDF LUTs (for calibration) More...

+ Inheritance diagram for DiGSDFunction:

List of all members.

Public Member Functions

 DiGSDFunction (const char *filename, const E_DeviceType deviceType=EDT_Monitor, const signed int ord=-1)
 constructor, read device characteristics file.
 DiGSDFunction (const double *val_tab, const unsigned long count, const Uint16 max=255, const E_DeviceType deviceType=EDT_Monitor, const signed int ord=0)
 constructor, use given array of luminance/OD values.
 DiGSDFunction (const Uint16 *ddl_tab, const double *val_tab, const unsigned long count, const Uint16 max=255, const E_DeviceType deviceType=EDT_Monitor, const signed int ord=0)
 constructor, use given array of DDL and luminance/OD values.
 DiGSDFunction (const double val_min, const double val_max, const unsigned long count=256, const E_DeviceType deviceType=EDT_Monitor, const signed int ord=0)
 constructor, compute luminance/OD values automatically within the specified range.
virtual ~DiGSDFunction ()
 destructor
int writeCurveData (const char *filename, const OFBool mode=OFTrue)
 write curve data to a text file
int setAmbientLightValue (const double value)
 set (reflected) ambient light value.
int setIlluminationValue (const double value)
 set illumination value.
int setMinDensityValue (const double value)
 set minimum optical density value "Dmin".
int setMaxDensityValue (const double value)
 set maximum optical density value "Dmax".

Static Public Member Functions

static double getJNDIndex (const double lum)
 calculate the JND index for a given luminance value

Protected Member Functions

DiDisplayLUTgetDisplayLUT (unsigned long count)
 create GSDF LUT with specified number of entries
int calculateGSDF ()
 calculate GSDF (array of 1023 luminance/OD values)
int calculateGSDFSpline ()
 calculate helper function for GSDF interpolation
int calculateJNDBoundaries ()
 calculate 'JNDMin' and 'JNDMax' for the given luminance/OD range

Private Member Functions

 DiGSDFunction (const DiGSDFunction &)
DiGSDFunctionoperator= (const DiGSDFunction &)

Private Attributes

double JNDMin
 minimum JND index value for the given display system
double JNDMax
 maximum JND index value for the given display system
double * GSDFValue
 array of luminance/OD values defining the GSDF
double * GSDFSpline
 array of values used for the interpolation of the GSDF

Static Private Attributes

static const unsigned int GSDFCount
 costant defining the number JND indexes for the maximum luminance/OD range (1023)

Detailed Description

Class to manage GSDF LUTs (for calibration)


Constructor & Destructor Documentation

DiGSDFunction::DiGSDFunction ( const char *  filename,
const E_DeviceType  deviceType = EDT_Monitor,
const signed int  ord = -1 
)

constructor, read device characteristics file.

Keywords: "max" for maximum DDL (Device Driving Level, required at first position) "amb" for ambient light and "lum" for illumination (both optional) "ord" for the order of the polynomial curve fitting algorithm used to interpolate the given base points (0 or absent = use cubic spline interpolation)

Parameters:
filenamename of the characteristics file (luminance/OD for each DDL)
deviceTypetype of the output device (default: monitor)
ordorder of the polynomial curve fitting algorithm used to interpolate the given base points (-1 = use file setting, 0 = cubic spline)
DiGSDFunction::DiGSDFunction ( const double *  val_tab,
const unsigned long  count,
const Uint16  max = 255,
const E_DeviceType  deviceType = EDT_Monitor,
const signed int  ord = 0 
)

constructor, use given array of luminance/OD values.

UNTESTED Values must be sorted and complete (i.e. there must be an entry for each DDL). The given arrays are copied internally.

Parameters:
val_tabpointer to array with luminance/OD values
countnumber of array elements (should be equal to 'max + 1')
maxmaximum DDL (device driving level)
deviceTypetype of the output device (default: monitor)
ordorder of the polynomial curve fitting algorithm used to interpolate the given base points (0 or negative = use cubic spline interpolation)
DiGSDFunction::DiGSDFunction ( const Uint16 *  ddl_tab,
const double *  val_tab,
const unsigned long  count,
const Uint16  max = 255,
const E_DeviceType  deviceType = EDT_Monitor,
const signed int  ord = 0 
)

constructor, use given array of DDL and luminance/OD values.

UNTESTED Values will be automatically sorted and missing values will be interpolated. The given arrays are copied internally.

Parameters:
ddl_tabpointer to array with DDL values (must be with the interval 0..max)
val_tabpointer to array with luminance/OD values
countnumber of array elements (2..65536)
maxmaximum DDL (device driving level)
deviceTypetype of the output device (default: monitor)
ordorder of the polynomial curve fitting algorithm used to interpolate the given base points (0 or negative = use cubic spline interpolation)
DiGSDFunction::DiGSDFunction ( const double  val_min,
const double  val_max,
const unsigned long  count = 256,
const E_DeviceType  deviceType = EDT_Monitor,
const signed int  ord = 0 
)

constructor, compute luminance/OD values automatically within the specified range.

Parameters:
val_minminimum luminance/OD value
val_maxmaximum luminance/OD value
countnumber of DDLs (device driving level, 1..65536))
deviceTypetype of the output device (default: monitor)
ordorder of the polynomial curve fitting algorithm used to interpolate the given base points (0 or negative = use cubic spline interpolation)

Member Function Documentation

int DiGSDFunction::calculateGSDF ( ) [protected]

calculate GSDF (array of 1023 luminance/OD values)

Returns:
status, true if successful, false otherwise

calculate helper function for GSDF interpolation

Returns:
status, true if successful, false otherwise

calculate 'JNDMin' and 'JNDMax' for the given luminance/OD range

Returns:
status, true if successful, false otherwise
DiDisplayLUT* DiGSDFunction::getDisplayLUT ( unsigned long  count) [protected, virtual]

create GSDF LUT with specified number of entries

Parameters:
countnumber of LUT entries
Returns:
pointer to created LUT if successful, NULL otherwise

Implements DiDisplayFunction.

static double DiGSDFunction::getJNDIndex ( const double  lum) [static]

calculate the JND index for a given luminance value

Parameters:
lumluminance value
Returns:
JND index if successful, -1 otherwise
int DiGSDFunction::setAmbientLightValue ( const double  value) [virtual]

set (reflected) ambient light value.

measured in cd/m^2. applicable to softcopy and hardcopy devices. typical values: 0.5-5 for softcopy devices, 10 for transmissive hardcopy printer and 0 for reflective hardcopy printers.

Parameters:
valueambient light value to be set (>= 0)
Returns:
status, true if successful, false otherwise

Reimplemented from DiDisplayFunction.

int DiGSDFunction::setIlluminationValue ( const double  value) [virtual]

set illumination value.

measured in cd/m^2. applicable to hardcopy devices only. typical values: 2000 for transmissive hardcopy printer and 150 for reflective hardcopy printers.

Parameters:
valueillumination value to be set (>= 0)
Returns:
status, true if successful, false otherwise

Reimplemented from DiDisplayFunction.

int DiGSDFunction::setMaxDensityValue ( const double  value) [virtual]

set maximum optical density value "Dmax".

measured in optical density (OD). applicable to printers only. typical value: 3.0

Parameters:
valueDmax value to be set (or < 0 to unset)
Returns:
status, true if successful (1 = Dmax set, 2 = Dmax unset), false otherwise

Reimplemented from DiDisplayFunction.

int DiGSDFunction::setMinDensityValue ( const double  value) [virtual]

set minimum optical density value "Dmin".

measured in optical density (OD). applicable to printers only. typical value: 0.2

Parameters:
valueDmin value to be set (or < 0 to unset)
Returns:
status, true if successful (1 = Dmax set, 2 = Dmax unset), false otherwise

Reimplemented from DiDisplayFunction.

int DiGSDFunction::writeCurveData ( const char *  filename,
const OFBool  mode = OFTrue 
) [virtual]

write curve data to a text file

Parameters:
filenamename of the text file to which the data should be written
modewrite CC and PSC to file if OFTrue
Returns:
status, true if successful, false otherwise

Implements DiDisplayFunction.


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


Generated on Tue May 15 2012 for DCMTK Version 3.6.1 20120515 by Doxygen 1.7.5.1-20111027