123 lines
3.9 KiB
C
123 lines
3.9 KiB
C
|
/*
|
||
|
*
|
||
|
* Copyright (C) 1996-2011, OFFIS e.V.
|
||
|
* All rights reserved. See COPYRIGHT file for details.
|
||
|
*
|
||
|
* This software and supporting documentation were developed by
|
||
|
*
|
||
|
* OFFIS e.V.
|
||
|
* R&D Division Health
|
||
|
* Escherweg 2
|
||
|
* D-26121 Oldenburg, Germany
|
||
|
*
|
||
|
*
|
||
|
* Module: dcmimgle
|
||
|
*
|
||
|
* Author: Joerg Riesmeier
|
||
|
*
|
||
|
* Purpose: DicomGSDFLUT (Header)
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifndef DIGSDLUT_H
|
||
|
#define DIGSDLUT_H
|
||
|
|
||
|
#include "dcmtk/config/osconfig.h"
|
||
|
|
||
|
#include "dcmtk/dcmimgle/didislut.h"
|
||
|
|
||
|
|
||
|
/*---------------------*
|
||
|
* class declaration *
|
||
|
*---------------------*/
|
||
|
|
||
|
/** Class to compute and store the GSDF lookup table
|
||
|
*/
|
||
|
class DCMTK_DCMIMGLE_EXPORT DiGSDFLUT
|
||
|
: public DiDisplayLUT
|
||
|
{
|
||
|
|
||
|
public:
|
||
|
|
||
|
/** constructor
|
||
|
*
|
||
|
** @param count number of values to be stored in the LUT
|
||
|
* @param max maximum value to be stored in the LUT
|
||
|
* @param ddl_tab array of DDL values
|
||
|
* @param val_tab array of values
|
||
|
* @param ddl_cnt number of DDL values
|
||
|
* @param gsdf_tab array with Grayscale Standard Display Function
|
||
|
* @param gsdf_spl array with helper function used for interpolation
|
||
|
* @param gsdf_cnt number of values in GSDF array
|
||
|
* @param jnd_min minimum JND index value
|
||
|
* @param jnd_max maximum JND index value
|
||
|
* @param lum_min minimum luminance value to be used (lower border)
|
||
|
* @param lum_max maximum luminance value to be used (upper border)
|
||
|
* @param amb (reflected) ambient light value
|
||
|
* @param illum illumination value
|
||
|
* @param inverse apply inverse transformation if OFTrue
|
||
|
* @param stream output stream (used to write curve data to a file)
|
||
|
* @param printMode write CC and PSC to stream if OFTrue
|
||
|
*/
|
||
|
DiGSDFLUT(const unsigned long count,
|
||
|
const Uint16 max,
|
||
|
const Uint16 *ddl_tab,
|
||
|
const double *val_tab,
|
||
|
const unsigned long ddl_cnt,
|
||
|
const double *gsdf_tab,
|
||
|
const double *gsdf_spl,
|
||
|
const unsigned int gsdf_cnt,
|
||
|
const double jnd_min,
|
||
|
const double jnd_max,
|
||
|
const double lum_min,
|
||
|
const double lum_max,
|
||
|
const double amb,
|
||
|
const double illum,
|
||
|
const OFBool inverse = OFFalse,
|
||
|
STD_NAMESPACE ostream *stream = NULL,
|
||
|
const OFBool printMode = OFTrue);
|
||
|
|
||
|
/** destructor
|
||
|
*/
|
||
|
virtual ~DiGSDFLUT();
|
||
|
|
||
|
|
||
|
protected:
|
||
|
|
||
|
/** create lookup table
|
||
|
*
|
||
|
** @param ddl_tab array of DDL values
|
||
|
* @param val_tab array of luminance values
|
||
|
* @param ddl_cnt number of DDL values
|
||
|
* @param gsdf_tab array with Grayscale Standard Display Function
|
||
|
* @param gsdf_spl array with helper function used for interpolation
|
||
|
* @param gsdf_cnt number of values in GSDF array
|
||
|
* @param jnd_min minimum JND index value
|
||
|
* @param jnd_max maximum JND index value
|
||
|
* @param lum_min minimum luminance value to be used (lower border)
|
||
|
* @param lum_max maximum luminance value to be used (upper border)
|
||
|
* @param inverse apply inverse transformation if OFTrue
|
||
|
* @param stream output stream (used to write curve data to a file)
|
||
|
* @param printMode write CC and PSC to stream if OFTrue
|
||
|
*
|
||
|
** @return status, true if successful, false otherwise
|
||
|
*/
|
||
|
int createLUT(const Uint16 *ddl_tab,
|
||
|
const double *val_tab,
|
||
|
const unsigned long ddl_cnt,
|
||
|
const double *gsdf_tab,
|
||
|
const double *gsdf_spl,
|
||
|
const unsigned int gsdf_cnt,
|
||
|
const double jnd_min,
|
||
|
const double jnd_max,
|
||
|
const double lum_min,
|
||
|
const double lum_max,
|
||
|
const OFBool inverse = OFFalse,
|
||
|
STD_NAMESPACE ostream *stream = NULL,
|
||
|
const OFBool printMode = OFTrue);
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif
|