OFFIS DCMTK  Version 3.6.0
digsdfn.h
1 /*
2  *
3  * Copyright (C) 1996-2010, OFFIS e.V.
4  * All rights reserved. See COPYRIGHT file for details.
5  *
6  * This software and supporting documentation were developed by
7  *
8  * OFFIS e.V.
9  * R&D Division Health
10  * Escherweg 2
11  * D-26121 Oldenburg, Germany
12  *
13  *
14  * Module: dcmimgle
15  *
16  * Author: Joerg Riesmeier
17  *
18  * Purpose: DicomGSDFunction (Header)
19  *
20  * Last Update: $Author: joergr $
21  * Update Date: $Date: 2010-10-14 13:16:26 $
22  * CVS/RCS Revision: $Revision: 1.17 $
23  * Status: $State: Exp $
24  *
25  * CVS/RCS Log at end of file
26  *
27  */
28 
29 
30 #ifndef DIGSDFN_H
31 #define DIGSDFN_H
32 
33 #include "dcmtk/config/osconfig.h"
34 
35 #include "dcmtk/dcmimgle/didispfn.h"
36 
37 #define INCLUDE_CSTDDEF /* For NULL */
38 #include "dcmtk/ofstd/ofstdinc.h"
39 
40 
41 /*---------------------*
42  * class declaration *
43  *---------------------*/
44 
48  : public DiDisplayFunction
49 {
50 
51  public:
52 
64  DiGSDFunction(const char *filename,
65  const E_DeviceType deviceType = EDT_Monitor,
66  const signed int ord = -1);
67 
79  DiGSDFunction(const double *val_tab,
80  const unsigned long count,
81  const Uint16 max = 255,
82  const E_DeviceType deviceType = EDT_Monitor,
83  const signed int ord = 0);
84 
97  DiGSDFunction(const Uint16 *ddl_tab,
98  const double *val_tab,
99  const unsigned long count,
100  const Uint16 max = 255,
101  const E_DeviceType deviceType = EDT_Monitor,
102  const signed int ord = 0);
103 
113  DiGSDFunction(const double val_min,
114  const double val_max,
115  const unsigned long count = 256,
116  const E_DeviceType deviceType = EDT_Monitor,
117  const signed int ord = 0);
118 
121  virtual ~DiGSDFunction();
122 
130  int writeCurveData(const char *filename,
131  const OFBool mode = OFTrue);
132 
142  int setAmbientLightValue(const double value);
143 
153  int setIlluminationValue(const double value);
154 
163  int setMinDensityValue(const double value);
164 
173  int setMaxDensityValue(const double value);
174 
181  static double getJNDIndex(const double lum);
182 
183 
184  protected:
185 
192  DiDisplayLUT *getDisplayLUT(unsigned long count);
193 
198  int calculateGSDF();
199 
204  int calculateGSDFSpline();
205 
211 
212 
213  private:
214 
216  double JNDMin;
218  double JNDMax;
219 
221  static const unsigned int GSDFCount;
223  double *GSDFValue;
225  double *GSDFSpline;
226 
227  // --- declarations to avoid compiler warnings
228 
229  DiGSDFunction(const DiGSDFunction &);
230  DiGSDFunction &operator=(const DiGSDFunction &);
231 };
232 
233 
234 #endif
235 
236 
237 /*
238  *
239  * CVS/RCS Log:
240  * $Log: digsdfn.h,v $
241  * Revision 1.17 2010-10-14 13:16:26 joergr
242  * Updated copyright header. Added reference to COPYRIGHT file.
243  *
244  * Revision 1.16 2010-03-01 09:08:46 uli
245  * Removed some unnecessary include directives in the headers.
246  *
247  * Revision 1.15 2005-12-08 16:47:40 meichel
248  * Changed include path schema for all DCMTK header files
249  *
250  * Revision 1.14 2003/12/08 18:21:00 joergr
251  * Removed leading underscore characters from preprocessor symbols (reserved
252  * symbols). Updated CVS header.
253  *
254  * Revision 1.13 2003/02/12 11:35:16 joergr
255  * Added Dmin/max support to CIELAB calibration routines.
256  *
257  * Revision 1.12 2003/02/11 10:01:14 joergr
258  * Added support for Dmin/max to calibration routines (required for printers).
259  *
260  * Revision 1.11 2002/07/19 08:24:21 joergr
261  * Enhanced/corrected comments.
262  *
263  * Revision 1.10 2002/07/18 12:30:01 joergr
264  * Added support for hardcopy and softcopy input devices (camera and scanner).
265  * Added polygonal curve fitting algorithm as an alternate interpolation
266  * method.
267  *
268  * Revision 1.9 2002/07/02 16:23:42 joergr
269  * Added support for hardcopy devices to the calibrated output routines.
270  *
271  * Revision 1.8 2001/06/01 15:49:41 meichel
272  * Updated copyright header
273  *
274  * Revision 1.7 2000/07/17 14:37:12 joergr
275  * Moved method getJNDIndex to public part of the interface.
276  *
277  * Revision 1.6 2000/03/08 16:24:15 meichel
278  * Updated copyright header.
279  *
280  * Revision 1.5 2000/03/06 18:19:36 joergr
281  * Moved get-method to base class, renamed method and made method virtual to
282  * avoid hiding of methods (reported by Sun CC 4.2).
283  *
284  * Revision 1.4 1999/10/18 15:05:51 joergr
285  * Enhanced command line tool dcmdspfn (added new options).
286  *
287  * Revision 1.3 1999/09/17 12:11:31 joergr
288  * Added/changed/completed DOC++ style comments in the header files.
289  *
290  * Revision 1.2 1999/09/10 12:17:56 joergr
291  * Changed parameter type of copy constructor and assignment operator to avoid
292  * compiler warnings reported by gcc/ecgs on Solaris (with additional flags).
293  *
294  * Revision 1.1 1999/09/10 08:50:23 joergr
295  * Added support for CIELAB display function. Restructured class hierarchy
296  * for display functions.
297  *
298  *
299  */
int setAmbientLightValue(const double value)
set (reflected) ambient light value.
double JNDMax
maximum JND index value for the given display system
Definition: digsdfn.h:218
int writeCurveData(const char *filename, const OFBool mode=OFTrue)
write curve data to a text file
double * GSDFSpline
array of values used for the interpolation of the GSDF
Definition: digsdfn.h:225
monitor (softcopy output device), values expected to be in luminance (cd/m^2)
Definition: didispfn.h:70
int setMaxDensityValue(const double value)
set maximum optical density value "Dmax".
E_DeviceType
output device type
Definition: didispfn.h:67
int calculateGSDFSpline()
calculate helper function for GSDF interpolation
Class to compute and store the Display lookup table.
Definition: didislut.h:44
double JNDMin
minimum JND index value for the given display system
Definition: digsdfn.h:216
double * GSDFValue
array of luminance/OD values defining the GSDF
Definition: digsdfn.h:223
int setIlluminationValue(const double value)
set illumination value.
DiGSDFunction(const char *filename, const E_DeviceType deviceType=EDT_Monitor, const signed int ord=-1)
constructor, read device characteristics file.
DiDisplayLUT * getDisplayLUT(unsigned long count)
create GSDF LUT with specified number of entries
int calculateGSDF()
calculate GSDF (array of 1023 luminance/OD values)
Class to manage GSDF LUTs (for calibration)
Definition: digsdfn.h:47
static const unsigned int GSDFCount
costant defining the number JND indexes for the maximum luminance/OD range (1023) ...
Definition: digsdfn.h:221
Class to handle hardcopy and softcopy device characteristics file and manage display LUTs (for calibr...
Definition: didispfn.h:60
virtual ~DiGSDFunction()
destructor
int setMinDensityValue(const double value)
set minimum optical density value "Dmin".
int calculateJNDBoundaries()
calculate 'JNDMin' and 'JNDMax' for the given luminance/OD range
static double getJNDIndex(const double lum)
calculate the JND index for a given luminance value


Generated on Wed Dec 28 2016 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.8.8