Multiple valley shaped curve function. More...
#include <itkCompositeValleyFunction.h>
Public Types | |
typedef Superclass::MeasureArrayType | MeasureArrayType |
typedef Superclass::MeasureType | MeasureType |
typedef CacheableScalarFunction | Superclass |
Public Member Functions | |
CompositeValleyFunction (const MeasureArrayType &classMeans, const MeasureArrayType &classSigmas) | |
MeasureType | Evaluate (MeasureType x) |
double | GetCacheLowerBound () |
double | GetCacheUpperBound () |
double | GetInterval () |
double | GetLowerBound () |
long | GetNumberOfSamples () |
double | GetUpperBound () |
bool | IsCacheAvailable () |
MeasureType | operator() (MeasureType x) |
MeasureType | valley (MeasureType d) |
virtual | ~CompositeValleyFunction () |
MeasureType | GetCachedValue (MeasureType x) |
Protected Member Functions | |
void | AddNewClass (double mean, double sigma) |
void | CreateCache (double lowerBound, double upperBound, long sampleSize) |
void | Initialize () |
Multiple valley shaped curve function.
Its functional form f(x) is : sum (valley( (x - mean[i]) / sigma[i] ) ) over i from 0 to the number of target classes where valley(x) = 1 - 1 / (1 + x^2 / 3)
The plotting of the function return shows multiple lowest points at each mean[i] position. There are two more important shape parameters for this function, higher-bound and lower-bound. Upper-bound will be highest mean value among target classes' means + its sigma value * 9, and lower-bound will be lowest mean value among target classes' means - its sigma value * 9
For example, if there are two target classes with their means at 4 and 6. The plotting may look like the following:
| |********* ****** | * * | * * * | * * * * | * * * * | * * * * | * * ---+-----+------*------*------- | 2 4 6 |
This is a part of the bias correction methods and implementaion that was initially developed and implemented by Martin Styner, Univ. of North Carolina at Chapel Hill, and his colleagues.
For more details. refer to the following articles. "Parametric estimate of intensity inhomogeneities applied to MRI" Martin Styner, G. Gerig, Christian Brechbuehler, Gabor Szekely, IEEE TRANSACTIONS ON MEDICAL IMAGING; 19(3), pp. 153-165, 2000, (http://www.cs.unc.edu/~styner/docs/tmi00.pdf)
"Evaluation of 2D/3D bias correction with 1+1ES-optimization" Martin Styner, Prof. Dr. G. Gerig (IKT, BIWI, ETH Zuerich), TR-197 (http://www.cs.unc.edu/~styner/docs/StynerTR97.pdf)
Definition at line 96 of file itkCompositeValleyFunction.h.
Reimplemented from itk::CacheableScalarFunction.
Definition at line 105 of file itkCompositeValleyFunction.h.
Cost value type.
Reimplemented from itk::CacheableScalarFunction.
Definition at line 104 of file itkCompositeValleyFunction.h.
Superclass to this class.
Definition at line 101 of file itkCompositeValleyFunction.h.
itk::CompositeValleyFunction::CompositeValleyFunction | ( | const MeasureArrayType & | classMeans, | |
const MeasureArrayType & | classSigmas | |||
) |
Constructor.
virtual itk::CompositeValleyFunction::~CompositeValleyFunction | ( | ) | [inline, virtual] |
Destructor.
Definition at line 112 of file itkCompositeValleyFunction.h.
void itk::CompositeValleyFunction::AddNewClass | ( | double | mean, | |
double | sigma | |||
) | [inline, protected] |
Definition at line 160 of file itkCompositeValleyFunction.h.
void itk::CacheableScalarFunction::CreateCache | ( | double | lowerBound, | |
double | upperBound, | |||
long | sampleSize | |||
) | [protected, inherited] |
Create the internal cache table and fill it with pre-evaluated values.
MeasureType itk::CompositeValleyFunction::Evaluate | ( | MeasureType | x | ) | [inline, virtual] |
Evalaute the function at point x.
Reimplemented from itk::CacheableScalarFunction.
Definition at line 140 of file itkCompositeValleyFunction.h.
References valley().
Referenced by operator()().
MeasureType itk::CacheableScalarFunction::GetCachedValue | ( | MeasureType | x | ) | [inline, inherited] |
y = f(x) = (approximately) cache_table(index(x)) Get the function return using the internal cache table NOTE: Since the index calculation needs conversion from double to int, truncation happens. As a result, the return values from Evaluate(x) and GetCachedValue(x) may not be same for the same x.
Definition at line 96 of file itkCacheableScalarFunction.h.
Referenced by operator()().
double itk::CacheableScalarFunction::GetCacheLowerBound | ( | ) | [inline, inherited] |
Get the lower-bound of domain that is used for filling the cache table.
Definition at line 79 of file itkCacheableScalarFunction.h.
double itk::CacheableScalarFunction::GetCacheUpperBound | ( | ) | [inline, inherited] |
Get the upper-bound of domain that is used for filling the cache table.
Definition at line 76 of file itkCacheableScalarFunction.h.
double itk::CacheableScalarFunction::GetInterval | ( | ) | [inline, inherited] |
Gets the interval of each cell between the upper and lower bound
Definition at line 88 of file itkCacheableScalarFunction.h.
double itk::CompositeValleyFunction::GetLowerBound | ( | ) | [inline] |
Get energy table's lower bound.
Definition at line 118 of file itkCompositeValleyFunction.h.
long itk::CacheableScalarFunction::GetNumberOfSamples | ( | ) | [inline, inherited] |
Get the number of samples between the lower-bound and upper-bound of the cache table.
Definition at line 70 of file itkCacheableScalarFunction.h.
double itk::CompositeValleyFunction::GetUpperBound | ( | ) | [inline] |
Get energy table's higher bound.
Definition at line 115 of file itkCompositeValleyFunction.h.
void itk::CompositeValleyFunction::Initialize | ( | ) | [protected] |
calculate and save energy values
bool itk::CacheableScalarFunction::IsCacheAvailable | ( | ) | [inline, inherited] |
Check if the internal cache table and its values are valid.
Definition at line 73 of file itkCacheableScalarFunction.h.
Referenced by operator()().
MeasureType itk::CompositeValleyFunction::operator() | ( | MeasureType | x | ) | [inline] |
Gets an energy value for the intensity difference between a pixel and its corresponding bias.
Definition at line 122 of file itkCompositeValleyFunction.h.
References Evaluate(), itk::CacheableScalarFunction::GetCachedValue(), and itk::CacheableScalarFunction::IsCacheAvailable().
MeasureType itk::CompositeValleyFunction::valley | ( | MeasureType | d | ) | [inline] |
Get an energy value for the valley.
Definition at line 154 of file itkCompositeValleyFunction.h.
Referenced by Evaluate().