#include <imgclass.hpp>
expkurve is an eichkurve that uses three overlayed exponential decays with different timescales and weights for the absorption of non-monochromatic radiation. The formula is:
Definition at line 543 of file imgclass.hpp.
Public Member Functions | |
expkurve (double sA, double sg1, double sg2, double sg3, double sf1, double sf2) | |
double | eichfun (double x) const |
Calibration function, which will be inverted. | |
double | deichfun_dx (double x) const |
Derivative of the calibration function. | |
double | initguess (bild16::data_t val) const |
Starting point for the iteration. | |
double | operator() (bild16::data_t val) const |
Conversion operator. | |
void | table_write (const char *name) const |
Write the lookup table to a file. | |
Protected Member Functions | |
double | fsolve (bild16::data_t val, double hmin, double hmax) const |
void | table_init (double hmin, double hmax) |
Protected Attributes | |
double * | lookup |
Static Protected Attributes | |
static const char | magic [] = "EICHTABELLE" |
Private Attributes | |
double | A |
double | g1 |
double | g2 |
double | g3 |
double | f1 |
double | f2 |
expkurve::expkurve | ( | double | sA, | |
double | sg1, | |||
double | sg2, | |||
double | sg3, | |||
double | sf1, | |||
double | sf2 | |||
) |
double expkurve::eichfun | ( | double | x | ) | const [virtual] |
double expkurve::deichfun_dx | ( | double | x | ) | const [virtual] |
double expkurve::initguess | ( | bild16::data_t | val | ) | const [virtual] |
Starting point for the iteration.
The implementation of initguess must return a starting value that triggers convergence to the solution. Otherwise table_init may hang.
Implements eichkurve.
Definition at line 486 of file imgclass.cpp.
double eichkurve::operator() | ( | bild16::data_t | val | ) | const [inline, inherited] |
Conversion operator.
The function evaluation operator looks up an element in the lookup table and returns it. Initially, it was meant for usage such as:
tablekurve tk("somecalib.data"); bild16 bild("someimage.his"); bildfloat bfl; MAP(bild) { bfl(y,x)=tk(bild(y,x)); }
But because of point-wise float corrections necessary to overcome the deficiencies of the detector, it must now be applied to floating point images. bildfloat features a special member function for this purpose.
Definition at line 530 of file imgclass.hpp.
References eichkurve::lookup.
void eichkurve::table_write | ( | const char * | name | ) | const [inherited] |
Write the lookup table to a file.
Definition at line 462 of file imgclass.cpp.
References eichkurve::lookup, and eichkurve::magic.
double eichkurve::fsolve | ( | bild16::data_t | val, | |
double | hmin, | |||
double | hmax | |||
) | const [protected, inherited] |
Definition at line 388 of file imgclass.cpp.
References abs(), eichkurve::eichfun(), and signum().
Referenced by eichkurve::table_init().
void eichkurve::table_init | ( | double | hmin, | |
double | hmax | |||
) | [protected, inherited] |
Definition at line 380 of file imgclass.cpp.
References eichkurve::fsolve(), and eichkurve::lookup.
Referenced by exp4kurve::exp4kurve(), and expkurve().
double expkurve::A [private] |
Definition at line 555 of file imgclass.hpp.
Referenced by deichfun_dx(), eichfun(), and initguess().
double expkurve::g1 [private] |
Definition at line 555 of file imgclass.hpp.
Referenced by deichfun_dx(), eichfun(), and initguess().
double expkurve::g2 [private] |
double expkurve::g3 [private] |
double expkurve::f1 [private] |
double expkurve::f2 [private] |
const char eichkurve::magic = "EICHTABELLE" [static, protected, inherited] |
Definition at line 506 of file imgclass.hpp.
Referenced by eichkurve::table_write(), and tablekurve::tablekurve().
double* eichkurve::lookup [protected, inherited] |
Definition at line 507 of file imgclass.hpp.
Referenced by eichkurve::eichkurve(), flatkurve::flatkurve(), eichkurve::operator()(), eichkurve::table_init(), eichkurve::table_write(), tablekurve::tablekurve(), and eichkurve::~eichkurve().