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.
2009-06-05 Mackenzie Boyd - fixed unittest to work on all systems
2009-06-12 Travis Addair - changed public interface to use indices instead of file names and renamed from IntersectionStatistics
2009-06-15 Travis Addair - documented all variables/enums
2009-06-24 Travis Addair - changed gain and offset vectors to itialize to 1.0 and 0.0, respectively
2009-11-25 Travis Addair - held images are now weighted to ensure gain and offset of 1.0 and 0.0, respectively
2013-12-29 Jeannie Backer - Added LeastSquares::SolveMethod input parameter to Solve() method. Improved error message. Fixes #962,
2013-02-14 Steven Lambright - Added SolutionType GainsWithoutNormalization. Fixes #911.
2019-09-05 Makayla Shepherd & Jesse Mapel - Changed weight for hold images from 1E30 to 1E10 to avoid poorly conditioned normal matrix.
Definition at line 77 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 91 of file OverlapNormalization.h.
Enumeration for whether user/programmer wants to calculate new gains, offsets, or both when solving.
Definition at line 127 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 45 of file OverlapNormalization.cpp.
|
virtual |
Destroys the OverlapNormalization object, frees up pointers.
Definition at line 72 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 119 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 106 of file OverlapNormalization.cpp.
References _FILEINFO_, 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 309 of file OverlapNormalization.cpp.
References _FILEINFO_.
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 374 of file OverlapNormalization.cpp.
References _FILEINFO_, and 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 330 of file OverlapNormalization.cpp.
References _FILEINFO_.
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 351 of file OverlapNormalization.cpp.
References _FILEINFO_.
|
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 163 of file OverlapNormalization.cpp.
References _FILEINFO_, 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 220 of file OverlapNormalization.h.
|
private |
The gain function to be solved.
Definition at line 253 of file OverlapNormalization.h.
|
private |
The least squares object that solves for the new gains.
Definition at line 263 of file OverlapNormalization.h.
|
private |
Vector of calculated gains filled by the Solve method.
Definition at line 242 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 174 of file OverlapNormalization.h.
Referenced by AddHold().
|
private |
The offset function to be solved.
Definition at line 258 of file OverlapNormalization.h.
|
private |
The least squares object that calculates offsets.
Definition at line 268 of file OverlapNormalization.h.
|
private |
Vector of calculated offsets filled by the Solve method.
Definition at line 247 of file OverlapNormalization.h.
|
private |
Vector of valid overlaps collected.
Definition at line 214 of file OverlapNormalization.h.
|
private |
Whether the user of this class wants to solve for the offsets, the gains, or both.
Definition at line 237 of file OverlapNormalization.h.
|
private |
Whether or not the least squares solution has been solved.
Definition at line 231 of file OverlapNormalization.h.
|
private |
Vector of Statistics objects for each data set.
Definition at line 168 of file OverlapNormalization.h.
|
private |
Vector of weights for every valid overlap.
Definition at line 225 of file OverlapNormalization.h.