DCMTK  Version 3.6.7
OFFIS DICOM Toolkit
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | Static Private Attributes | List of all members
DiGSDFunction Class Reference

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

+ Inheritance diagram for DiGSDFunction:

Public Member Functions

 DiGSDFunction (const char *filename, const E_DeviceType deviceType=EDT_Monitor, const signed int ord=-1)
 constructor, read device characteristics file. More...
 
 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. More...
 
 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. More...
 
 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. More...
 
virtual ~DiGSDFunction ()
 destructor
 
int writeCurveData (const char *filename, const OFBool mode=OFTrue)
 write curve data to a text file More...
 
int setAmbientLightValue (const double value)
 set (reflected) ambient light value. More...
 
int setIlluminationValue (const double value)
 set illumination value. More...
 
int setMinDensityValue (const double value)
 set minimum optical density value "Dmin". More...
 
int setMaxDensityValue (const double value)
 set maximum optical density value "Dmax". More...
 
- Public Member Functions inherited from DiDisplayFunction
 DiDisplayFunction (const char *filename, const E_DeviceType deviceType=EDT_Monitor, const signed int ord=-1)
 constructor, read device characteristics file. More...
 
 DiDisplayFunction (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. More...
 
 DiDisplayFunction (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. More...
 
 DiDisplayFunction (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. More...
 
virtual ~DiDisplayFunction ()
 destructor
 
int isValid () const
 check whether DisplayFunction is valid More...
 
E_DeviceType getDeviceType () const
 get output device type (monitor, camera, printer or scanner) More...
 
Uint16 getMaxDDLValue () const
 get maximum DDL value. More...
 
double getMinValue () const
 get minimum luminance/OD value from the characteristic curve. More...
 
double getMaxValue () const
 get maximum luminance/OD value from the characteristic curve. More...
 
double getValueforDDL (const Uint16 ddl) const
 get the luminance/OD value for a given DDL. More...
 
Uint16 getDDLforValue (const double value) const
 get the DDL for a given luminance/OD value. More...
 
const DiDisplayLUTgetLookupTable (const int bits, unsigned long count=0)
 create look-up table with specified number of entries More...
 
int deleteLookupTable (const int bits)
 delete specified LUT More...
 
double getAmbientLightValue () const
 get (reflected) ambient light value. More...
 
double getIlluminationValue () const
 get illumination value. More...
 
double getMinDensityValue () const
 get minimum optical density value "Dmin". More...
 
double getMaxDensityValue () const
 get maximum optical density value "Dmax". More...
 
double getMinLuminanceValue () const
 get minimum luminance value "Lmin". More...
 
double getMaxLuminanceValue () const
 get maximum luminance value "Lmax". More...
 
signed int getPolynomialOrder () const
 get order of the polynomial curve fitting algorithm. More...
 
double convertODtoLum (const double value, const OFBool useAmb=OFTrue) const
 convert the given OD value to luminance. More...
 

Static Public Member Functions

static double getJNDIndex (const double lum)
 calculate the JND index for a given luminance value More...
 
- Static Public Member Functions inherited from DiDisplayFunction
static double convertODtoLum (const double value, const double ambient, const double illum)
 convert the given OD value to luminance. More...
 

Protected Member Functions

DiDisplayLUTgetDisplayLUT (unsigned long count)
 create GSDF LUT with specified number of entries More...
 
int calculateGSDF ()
 calculate GSDF (array of 1023 luminance/OD values) More...
 
int calculateGSDFSpline ()
 calculate helper function for GSDF interpolation More...
 
int calculateJNDBoundaries ()
 calculate 'JNDMin' and 'JNDMax' for the given luminance/OD range More...
 
- Protected Member Functions inherited from DiDisplayFunction
int readConfigFile (const char *filename)
 read the given device characteristics file More...
 
int createSortedTable (const Uint16 *ddl_tab, const double *val_tab)
 create a sorted (by DDL) table from the given DDL and luminance/OD tables More...
 
double * convertODtoLumTable (const double *od_tab, const unsigned long count, const OFBool useAmb)
 create a table with luminance values from the given OD table. More...
 
int interpolateValues ()
 interpolate device characteristic curve by means of a cubic spline interpolation
 
int calculateMinMax ()
 calculate minimum and maximum luminance/OD values More...
 
int checkMinMaxDensity () const
 check whether Dmin and Dmax are properly specified. More...
 

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
 constant defining the number JND indexes for the maximum luminance/OD range (1023)
 

Additional Inherited Members

- Public Types inherited from DiDisplayFunction
enum  E_DeviceType { EDT_Monitor , EDT_Camera , EDT_Printer , EDT_Scanner }
 output device type More...
 
- Protected Attributes inherited from DiDisplayFunction
int Valid
 status flag, indicating whether display function is valid
 
const E_DeviceType DeviceType
 output device type (monitor, camera, printer or scanner)
 
unsigned long ValueCount
 number of DDL and luminance/OD values
 
Uint16 MaxDDLValue
 maximum DDL value (usually 255)
 
signed int Order
 order of the polynomial curve fitting algorithm
 
double AmbientLight
 (reflected) ambient light value
 
double Illumination
 illumination value
 
double MinDensity
 minimum optical density (-1 if unset)
 
double MaxDensity
 maximum optical density (-1 if unset)
 
Uint16 * DDLValue
 pointer to array of DDL values
 
double * LODValue
 pointer to array of corresponding luminance/OD values
 
double MinValue
 minimum luminance/OD value
 
double MaxValue
 maximum luminance/OD value
 
DiDisplayLUTLookupTable [MAX_NUMBER_OF_TABLES]
 array with pointer to the different lookup tables (here: 8-16 bits)
 
- Static Protected Attributes inherited from DiDisplayFunction
static const int MinBits
 constant defining minimum value for number of bits for LUT input (here: 8)
 
static const int MaxBits
 constant defining maximum value for number of bits for LUT input (here: 16)
 

Detailed Description

Class to manage GSDF LUTs (for calibration)

Constructor & Destructor Documentation

◆ DiGSDFunction() [1/4]

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 (Digital 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() [2/4]

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 (digital 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() [3/4]

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 (digital 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() [4/4]

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 (digital 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

◆ calculateGSDF()

int DiGSDFunction::calculateGSDF ( )
protected

calculate GSDF (array of 1023 luminance/OD values)

Returns
status, true if successful, false otherwise

◆ calculateGSDFSpline()

int DiGSDFunction::calculateGSDFSpline ( )
protected

calculate helper function for GSDF interpolation

Returns
status, true if successful, false otherwise

◆ calculateJNDBoundaries()

int DiGSDFunction::calculateJNDBoundaries ( )
protected

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

Returns
status, true if successful, false otherwise

◆ getDisplayLUT()

DiDisplayLUT* DiGSDFunction::getDisplayLUT ( unsigned long  count)
protectedvirtual

create GSDF LUT with specified number of entries

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

Implements DiDisplayFunction.

◆ getJNDIndex()

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

◆ setAmbientLightValue()

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.

◆ setIlluminationValue()

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.

◆ setMaxDensityValue()

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.

◆ setMinDensityValue()

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.

◆ writeCurveData()

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 Thu Apr 28 2022 for DCMTK Version 3.6.7 by Doxygen 1.9.1