Isis 3 Programmer Reference
|
Calculate the bases and multipliers for normalizing overlapping "data sets" (e.g., cubes). More...
#include <OverlapNormalization.h>
Classes | |
class | Overlap |
Store statistics pertaining to the overlapping areas and indices (corresponding to the statistics list) for two data sets. More... | |
Public Types | |
enum | AddStatus { Success, NoOverlap, NoContrast } |
The result of the attempt to add overlap data to the list of valid overlaps, where Success is a successful add, NoOverlap is a failure due to one or both Statistics objects containing no data, and NoContrast is a failure due to one or both averages being 0. More... | |
enum | SolutionType { Gains, Offsets, Both, GainsWithoutNormalization } |
Enumeration for whether user/programmer wants to calculate new gains, offsets, or both when solving. More... | |
Public Member Functions | |
OverlapNormalization (std::vector< Statistics * > statsList) | |
Constructs an OverlapNormalization object. More... | |
virtual | ~OverlapNormalization () |
Destroys the OverlapNormalization object, frees up pointers. More... | |
AddStatus | AddOverlap (const Statistics &area1, const unsigned index1, const Statistics &area2, const unsigned index2, double weight=1.0) |
Attempts to add the given overlap data to a collection of valid overlaps, and returns the success or failure of that attempt. More... | |
void | AddHold (unsigned holdIndex) |
Sets the list of files to be held during the solving process. More... | |
void | Solve (SolutionType type=Both, LeastSquares::SolveMethod method=LeastSquares::QRD) |
Attempts to solve the least squares equation for all data sets. More... | |
double | Average (const unsigned index) const |
Returns the calculated average DN value for the given data set. More... | |
double | Gain (const unsigned index) const |
Returns the calculated gain (multiplier) for the given data set. More... | |
double | Offset (const unsigned index) const |
Returns the calculated offset (base) for the given data set. More... | |
double | Evaluate (double dn, unsigned index) const |
Returns a new DN from an old using the calculated gains and offsets of the data set the pixel belongs to. More... | |
Private Member Functions | |
OverlapNormalization & | operator= (const OverlapNormalization &) |
Cannot copy this object. More... | |
OverlapNormalization (const OverlapNormalization &) | |
Cannot copy this object. More... | |
Private Attributes | |
std::vector< Statistics * > | m_statsList |
Vector of Statistics objects for each data set. More... | |
std::vector< int > | m_idHoldList |
Vector of indices corresponding to the m_statsList vector representing data sets to be held in solution. More... | |
std::vector< Overlap > | m_overlapList |
Vector of valid overlaps collected. More... | |
std::vector< double > | m_deltas |
Vector of delta values (differences between the averages of two overlapping data sets) for every valid overlap. More... | |
std::vector< double > | m_weights |
Vector of weights for every valid overlap. More... | |
bool | m_solved |
Whether or not the least squares solution has been solved. More... | |
SolutionType | m_solutionType |
Whether the user of this class wants to solve for the offsets, the gains, or both. More... | |
std::vector< double > | m_gains |
Vector of calculated gains filled by the Solve method. More... | |
std::vector< double > | m_offsets |
Vector of calculated offsets filled by the Solve method. More... | |
BasisFunction * | m_gainFunction |
The gain function to be solved. More... | |
BasisFunction * | m_offsetFunction |
The offset function to be solved. More... | |
LeastSquares * | m_gainLsq |
The least squares object that solves for the new gains. More... | |
LeastSquares * | m_offsetLsq |
The least squares object that calculates offsets. More... | |
Calculate the bases and multipliers for normalizing overlapping "data sets" (e.g., cubes).
Specifically, this class is designed for normalizing data in equalization applications such as equalizer and hiequal. Given collections for statistical data sets, overlapping statistics between these sets, and at least one data set to be "held", this class will use a least squares solution to calculate gain and offset coefficients for every set of data in the collection.
Once the multiplicative and additive corrections have been derived, this class can then be used to calculate new DN values for a known data set. The actual equation to be used for calculating new DN values with the derived gains and offsets is:
\[ newDN = (oldDN - avg(i)) * MULT(i) + avg(i) + BASE(i) \]
where i is the index of a known data set from the statistics list.
Definition at line 61 of file OverlapNormalization.h.
The result of the attempt to add overlap data to the list of valid overlaps, where Success is a successful add, NoOverlap is a failure due to one or both Statistics objects containing no data, and NoContrast is a failure due to one or both averages being 0.
Enumerator | |
---|---|
Success | Overlap is valid and was added successfully. |
NoOverlap | Data sets do not overlap one another. |
NoContrast | One or both areas contain no valid average. |
Definition at line 75 of file OverlapNormalization.h.
Enumeration for whether user/programmer wants to calculate new gains, offsets, or both when solving.
Definition at line 111 of file OverlapNormalization.h.
Isis::OverlapNormalization::OverlapNormalization | ( | std::vector< Statistics * > | statsList | ) |
Constructs an OverlapNormalization object.
Compares and stores the vector, and initializes the basis and least squares functions. This object will also take ownership of the pointers in the vector parameter.
statsList | The list of Statistics objects corresponding to specific data sets (e.g., cubes) |
Definition at line 29 of file OverlapNormalization.cpp.
|
virtual |
Destroys the OverlapNormalization object, frees up pointers.
Definition at line 56 of file OverlapNormalization.cpp.
|
private |
Cannot copy this object.
|
inline |
Sets the list of files to be held during the solving process.
holdIndex | The index of a set of data from the list of Statistics objects to be held |
Definition at line 103 of file OverlapNormalization.h.
References m_idHoldList.
OverlapNormalization::AddStatus Isis::OverlapNormalization::AddOverlap | ( | const Statistics & | area1, |
const unsigned | index1, | ||
const Statistics & | area2, | ||
const unsigned | index2, | ||
double | weight = 1.0 |
||
) |
Attempts to add the given overlap data to a collection of valid overlaps, and returns the success or failure of that attempt.
area1 | The statistics for the overlap area of the first overlapping data set |
index1 | The index in the list of Statistics of the first data set |
area2 | The statistics for the overlap area of the second data set |
index2 | The index in the list of Statistics of the second overlapping data set |
weight | Relative significance of this overlap. Default value = 1.0 |
Isis::iException::Programmer | - Identifying index 1 must exist in the statsList |
Isis::iException::Programmer | - Identifying index 2 must exist in the statsList |
Isis::iException::Programmer | - Weights must be all positive real numbers |
Definition at line 90 of file OverlapNormalization.cpp.
References Isis::OverlapNormalization::Overlap::area1, Isis::OverlapNormalization::Overlap::area2, Isis::Statistics::Average(), Isis::OverlapNormalization::Overlap::index1, Isis::OverlapNormalization::Overlap::index2, and Isis::Statistics::ValidPixels().
double Isis::OverlapNormalization::Average | ( | const unsigned | index | ) | const |
Returns the calculated average DN value for the given data set.
index | The index in the Statistics list corresponding to the data set desired |
Isis::iException::Programmer | - Identifying index must exist in the statsList |
Definition at line 293 of file OverlapNormalization.cpp.
double Isis::OverlapNormalization::Evaluate | ( | double | dn, |
unsigned | index | ||
) | const |
Returns a new DN from an old using the calculated gains and offsets of the data set the pixel belongs to.
dn | The value of the pixel prior to equalization |
index | The index in the Statistics list corresponding to the data set for the pixel |
Isis::iException::Programmer | - Least Squares equation must be solved before returning the gain |
Definition at line 358 of file OverlapNormalization.cpp.
References Isis::IsSpecial().
double Isis::OverlapNormalization::Gain | ( | const unsigned | index | ) | const |
Returns the calculated gain (multiplier) for the given data set.
index | The index in the Statistics list corresponding to the data set desired |
Isis::iException::Programmer | - Identifying index must exist in the statsList |
Definition at line 314 of file OverlapNormalization.cpp.
double Isis::OverlapNormalization::Offset | ( | const unsigned | index | ) | const |
Returns the calculated offset (base) for the given data set.
index | The index in the Statistics list corresponding to the data set desired |
Isis::iException::Programmer | - Identifying index must exist in the statsList |
Definition at line 335 of file OverlapNormalization.cpp.
|
private |
Cannot copy this object.
void Isis::OverlapNormalization::Solve | ( | SolutionType | type = Both , |
LeastSquares::SolveMethod | method = LeastSquares::QRD |
||
) |
Attempts to solve the least squares equation for all data sets.
type | The enumeration clarifying whether the offset, gain, or both should be solved here |
method | The enumeration clarifying the LeastSquares::SolveMethod to be used. |
Isis::iException::User | - Number of overlaps and holds must be greater than the number of data sets |
Definition at line 147 of file OverlapNormalization.cpp.
References Isis::OverlapNormalization::Overlap::area1, Isis::OverlapNormalization::Overlap::area2, Isis::Statistics::Average(), Isis::OverlapNormalization::Overlap::index1, Isis::OverlapNormalization::Overlap::index2, and Isis::Statistics::StandardDeviation().
|
private |
Vector of delta values (differences between the averages of two overlapping data sets) for every valid overlap.
Definition at line 204 of file OverlapNormalization.h.
|
private |
The gain function to be solved.
Definition at line 237 of file OverlapNormalization.h.
|
private |
The least squares object that solves for the new gains.
Definition at line 247 of file OverlapNormalization.h.
|
private |
Vector of calculated gains filled by the Solve method.
Definition at line 226 of file OverlapNormalization.h.
|
private |
Vector of indices corresponding to the m_statsList vector representing data sets to be held in solution.
Definition at line 158 of file OverlapNormalization.h.
Referenced by AddHold().
|
private |
The offset function to be solved.
Definition at line 242 of file OverlapNormalization.h.
|
private |
The least squares object that calculates offsets.
Definition at line 252 of file OverlapNormalization.h.
|
private |
Vector of calculated offsets filled by the Solve method.
Definition at line 231 of file OverlapNormalization.h.
|
private |
Vector of valid overlaps collected.
Definition at line 198 of file OverlapNormalization.h.
|
private |
Whether the user of this class wants to solve for the offsets, the gains, or both.
Definition at line 221 of file OverlapNormalization.h.
|
private |
Whether or not the least squares solution has been solved.
Definition at line 215 of file OverlapNormalization.h.
|
private |
Vector of Statistics objects for each data set.
Definition at line 152 of file OverlapNormalization.h.
|
private |
Vector of weights for every valid overlap.
Definition at line 209 of file OverlapNormalization.h.