Isis 3 Programmer Reference
Isis::HiEqualization Class Reference

#include <HiEqualization.h>

Inheritance diagram for Isis::HiEqualization:
Inheritance graph
Collaboration diagram for Isis::HiEqualization:
Collaboration graph

Classes

class  HiCalculateFunctor
 

Public Member Functions

 HiEqualization (QString fromListName)
 
void calculateStatistics ()
 
void addHolds (QString holdListName)
 Adds a list of images to be held in the equalization.
 
void calculateStatistics (double samplingPercent, int mincnt, bool wtopt, LeastSquares::SolveMethod methodType)
 Calculates the image and overlap statistics, and then determines corrective factors if possible.
 
void recalculateStatistics (QString inStatsFileName)
 Recalculates statistics for any new input images.
 
void importStatistics (QString instatsFileName)
 Imports statistics for applying correction.
 
void applyCorrection (QString toListName)
 Equalizes the input images.
 
PvlGroup getResults ()
 Returns general information about the equalization.
 
void write (QString outstatsFileName)
 Write the equalization information (results) to a file.
 
double evaluate (double dn, int imageIndex, int bandIndex) const
 

Protected Member Functions

virtual void fillOutList (FileList &outList, QString toListName)
 
virtual void errorCheck (QString fromListName)
 Checks that the input images have the same mapping groups and same number of bands.
 
void loadInputs (QString fromListName)
 Loads in the input images.
 
void setInput (int index, QString value)
 
const FileListgetInputs () const
 
void calculateBandStatistics ()
 Calculates the image statistics on a band-by-band basis.
 
void calculateOverlapStatistics ()
 Calculates the overlap statistics for each pair of input images.
 
void generateOutputs (FileList &outList)
 Generates the names of the equalized cubes if no output list is provided.
 
void loadOutputs (FileList &outList, QString toListName)
 Checks that the output image list is correct.
 
void loadHolds (OverlapNormalization *oNorm)
 
void setResults ()
 Creates the results pvl containing statistics and corrective factors.
 
void clearAdjustments ()
 Frees image adjustments.
 
void addAdjustment (ImageAdjustment *adjustment)
 Adds an image adjustment.
 
void clearNormalizations ()
 Frees overlap normalizations.
 
void clearOverlapStatistics ()
 Frees overlap statistics.
 
void addValid (int count)
 Increments the number of valid overlaps by a given amount.
 
void addInvalid (int count)
 Increments the number of invalid overlaps by a given amount.
 
void fromPvl (const PvlObject &inStats)
 Loads a previous Equalization state from an input pvl object.
 
void setSolved (bool solved)
 Sets solved state indicating if OverlapNormalizations (corrective factors) were solved.
 
bool isSolved () const
 Indicates if the corrective factors were solved.
 

Private Member Functions

int getCCDType (int ccd)
 
void init ()
 Initializes member variables to default values.
 
QVector< int > validateInputStatistics (QString instatsFileName)
 Validates the input statistics pvl file.
 

Private Attributes

std::vector< int > movedIndices
 
bool m_normsSolved
 Indicates if corrective factors were solved.
 
bool m_recalculating
 Indicates if recalculating with loaded statistics.
 
bool m_wtopt
 Whether or not overlaps should be weighted.
 
FileList m_imageList
 
double m_samplingPercent
 Percentage of the lines to consider when gathering cube and overlap statistics (process-by-line)
 
int m_validCnt
 Number of valid overlaps.
 
int m_invalidCnt
 Number of invalid overlaps.
 
int m_mincnt
 Minimum number of pixels for an overlap to be considered valid.
 
int m_maxCube
 Number of input images.
 
int m_maxBand
 Number of bands in each input image.
 
QStringList m_badFiles
 List of image names that don't overlap.
 
vector< ImageAdjustment * > m_adjustments
 
vector< int > m_holdIndices
 Indices of images being held.
 
vector< bool > m_doesOverlapList
 Which images have a valid overlap.
 
vector< bool > m_alreadyCalculated
 Which images that have statistics already calculated.
 
vector< OverlapNormalization * > m_overlapNorms
 Normalization data for input images.
 
vector< OverlapStatistics * > m_overlapStats
 Calculated overlap statistics.
 
OverlapNormalization::SolutionType m_sType
 The normalization solution type for solving normalizations (offsets, gains, or both)
 
LeastSquares::SolveMethod m_lsqMethod
 Least squares method for solving normalization correcitve factors.
 
Pvlm_results
 Calculation results and normalization corrective factors (if solved)
 

Detailed Description

Author
????-??-?? Unknown

Definition at line 34 of file HiEqualization.h.

Constructor & Destructor Documentation

◆ HiEqualization()

Isis::HiEqualization::HiEqualization ( QString fromListName)

Definition at line 29 of file HiEqualization.cpp.

◆ ~HiEqualization()

Isis::HiEqualization::~HiEqualization ( )
virtual

Definition at line 35 of file HiEqualization.cpp.

Member Function Documentation

◆ addAdjustment()

void Isis::Equalization::addAdjustment ( ImageAdjustment * adjustment)
protectedinherited

Adds an image adjustment.

This method adds an image adjustment to be used for equalizing.

Parameters
adjustment- ImageAdjustment pointer to add.

Definition at line 748 of file Equalization.cpp.

Referenced by Isis::Equalization::calculateOverlapStatistics(), and Isis::Equalization::importStatistics().

◆ addHolds()

void Isis::Equalization::addHolds ( QString holdListName)
inherited

Adds a list of images to be held in the equalization.

Parameters
holdListNameName of the file containing a list of images to hold.
Exceptions
IException::User"The list of identifiers to be held must be less than or equal to the total number of identifiers."
IException::User"The hold list file does not match a file in the from list"

Definition at line 84 of file Equalization.cpp.

References Isis::Equalization::m_holdIndices, Isis::FileList::read(), and Isis::IException::User.

◆ addInvalid()

void Isis::Equalization::addInvalid ( int count)
protectedinherited

Increments the number of invalid overlaps by a given amount.

Parameters
countAn integer value to increment the internally stored number of invalid overlaps

Definition at line 790 of file Equalization.cpp.

References Isis::Equalization::m_invalidCnt.

◆ addValid()

void Isis::Equalization::addValid ( int count)
protectedinherited

Increments the number of valid overlaps by a given amount.

Parameters
countAn integer value to increment the internally stored number of valid overlaps

Definition at line 780 of file Equalization.cpp.

References Isis::Equalization::m_validCnt.

◆ applyCorrection()

void Isis::Equalization::applyCorrection ( QString toListName = "")
inherited

Equalizes the input images.

This method applies corretive factors to the input images, thereby equalizing them.

Parameters
toListName(Default value is "") List of cube names to save the equalized images as
Exceptions
IException::User"Corrective factors have not yet been determined. Fix any " "non-overlapping images and recalculate the image statistics."

Definition at line 496 of file Equalization.cpp.

References Isis::Equalization::isSolved(), Isis::Equalization::m_badFiles, Isis::Process::Progress(), Isis::Progress::SetText(), Isis::toString(), and Isis::IException::User.

◆ calculateBandStatistics()

void Isis::Equalization::calculateBandStatistics ( )
protectedinherited

Calculates the image statistics on a band-by-band basis.

This method calculates statistics by band for the input images. Each set of band statistics is used to initialize the OverlapNormalizations that will be used to determine gains and offsets for equalization.

Definition at line 212 of file Equalization.cpp.

References Isis::Equalization::m_maxBand, Isis::Equalization::m_maxCube, Isis::Equalization::m_overlapNorms, Isis::Equalization::m_samplingPercent, and Isis::toString().

Referenced by Isis::Equalization::calculateStatistics(), and Isis::Equalization::fromPvl().

◆ calculateOverlapStatistics()

◆ calculateStatistics() [1/2]

void Isis::HiEqualization::calculateStatistics ( )

Definition at line 39 of file HiEqualization.cpp.

◆ calculateStatistics() [2/2]

void Isis::Equalization::calculateStatistics ( double percent,
int mincnt,
bool wtopt,
LeastSquares::SolveMethod methodType )
inherited

Calculates the image and overlap statistics, and then determines corrective factors if possible.

This method calculates image statistics on a band-by-band basis and calculates overlap statistics for the input images. Overlaps are considered valid if the number of valid pixels in the overlapping area is greater than or equal to the provided mincnt parameter. Corrective factors will only be determined if all of the input images have at least one valid overlap.

Parameters
percentPercentage of the lines to consider when gathering overall cube statistics and overlap statistics
mincntMinimum number of points in overlapping area required to be used in the solution
wtoptIndicates whether overlaps should be weighted
methodTypeAn integer value corresponding to the enumerated value of the desired LeastSquares::SolveMethod to be used.
Exceptions
IException::User"There are input images that do not overlap with enough valid pixels." "See application log or Nonoverlaps keyword in output statistics file"
IException::Unknown"Calculation for equalization statistics failed. Gain = 0."
IException::Unknown"Unable to calculate the equalization statistics. You may " "want to try another LeastSquares::SolveMethod."

Definition at line 136 of file Equalization.cpp.

References Isis::Equalization::calculateBandStatistics(), Isis::Equalization::calculateOverlapStatistics(), Isis::Equalization::m_badFiles, Isis::Equalization::m_doesOverlapList, Isis::Equalization::m_lsqMethod, Isis::Equalization::m_maxBand, Isis::Equalization::m_mincnt, Isis::Equalization::m_normsSolved, Isis::Equalization::m_overlapNorms, Isis::Equalization::m_recalculating, Isis::Equalization::m_samplingPercent, Isis::Equalization::m_sType, Isis::Equalization::m_wtopt, Isis::Equalization::setResults(), Isis::IException::Unknown, and Isis::IException::User.

Referenced by Isis::Equalization::recalculateStatistics().

◆ clearAdjustments()

void Isis::Equalization::clearAdjustments ( )
protectedinherited

Frees image adjustments.

Definition at line 733 of file Equalization.cpp.

Referenced by Isis::Equalization::importStatistics(), and Isis::Equalization::~Equalization().

◆ clearNormalizations()

void Isis::Equalization::clearNormalizations ( )
protectedinherited

Frees overlap normalizations.

Definition at line 756 of file Equalization.cpp.

References Isis::Equalization::m_overlapNorms.

Referenced by Isis::Equalization::~Equalization().

◆ clearOverlapStatistics()

void Isis::Equalization::clearOverlapStatistics ( )
protectedinherited

Frees overlap statistics.

Definition at line 767 of file Equalization.cpp.

References Isis::Equalization::m_overlapStats.

Referenced by Isis::Equalization::~Equalization().

◆ errorCheck()

void Isis::HiEqualization::errorCheck ( QString fromListName)
protectedvirtual

Checks that the input images have the same mapping groups and same number of bands.

Exceptions
IException::User"Number of bands do not match between cubes"
IException::User"Mapping groups do not match between cubes"

Reimplemented from Isis::Equalization.

Definition at line 115 of file HiEqualization.cpp.

References Isis::Cube::open(), and Isis::toString().

◆ evaluate()

double Isis::Equalization::evaluate ( double dn,
int imageIndex,
int bandIndex ) const
inherited

Definition at line 588 of file Equalization.cpp.

◆ fillOutList()

void Isis::HiEqualization::fillOutList ( FileList & outList,
QString toListName )
protectedvirtual

Reimplemented from Isis::Equalization.

Definition at line 100 of file HiEqualization.cpp.

◆ fromPvl()

void Isis::Equalization::fromPvl ( const PvlObject & inStats)
protectedinherited

Loads a previous Equalization state from an input pvl object.

This method will unserialize Equalization data from an input pvl, obtaining any previously calculated overlap statistics and corrective factors (if solved).

Parameters
constPvlObject& Input pvl object containing previous Equalization state

Definition at line 803 of file Equalization.cpp.

References Isis::Equalization::calculateBandStatistics(), Isis::PvlObject::findObject(), Isis::Equalization::m_alreadyCalculated, Isis::Equalization::m_doesOverlapList, Isis::Equalization::m_lsqMethod, Isis::Equalization::m_mincnt, Isis::Equalization::m_overlapNorms, Isis::Equalization::m_overlapStats, Isis::Equalization::m_samplingPercent, Isis::Equalization::m_sType, and Isis::Equalization::m_wtopt.

Referenced by Isis::Equalization::recalculateStatistics().

◆ generateOutputs()

void Isis::Equalization::generateOutputs ( FileList & outList)
protectedinherited

Generates the names of the equalized cubes if no output list is provided.

Definition at line 684 of file Equalization.cpp.

◆ getCCDType()

int Isis::HiEqualization::getCCDType ( int ccd)
private

Definition at line 211 of file HiEqualization.cpp.

◆ getInputs()

const FileList & Isis::Equalization::getInputs ( ) const
protectedinherited

Definition at line 629 of file Equalization.cpp.

◆ getResults()

PvlGroup Isis::Equalization::getResults ( )
inherited

Returns general information about the equalization.

This method returns general information about the equalization, including number of valid and invalid overlaps, any non-overlapping images, the LeastSquares solution type, the type of equalization adjustmnet, and corrective factors (if solved).

Definition at line 549 of file Equalization.cpp.

References Isis::PvlObject::findObject(), Isis::Equalization::m_maxBand, Isis::Equalization::m_normsSolved, Isis::Equalization::m_results, and Isis::toString().

◆ importStatistics()

void Isis::Equalization::importStatistics ( QString instatsFileName)
inherited

Imports statistics for applying correction.

This method obtains corrective factors from an input statistics pvl file so that input images can be equalized. These corrective factors are obtained from Normalization groups within the EqualizationInformation object in the input pvl.

See also
Equalization::applyCorrection()
Parameters
instatsFileNameName of the input statistics pvl file

Definition at line 447 of file Equalization.cpp.

References Isis::Equalization::addAdjustment(), Isis::Equalization::clearAdjustments(), Isis::PvlObject::findObject(), Isis::Equalization::m_normsSolved, Isis::Equalization::m_sType, Isis::toDouble(), and Isis::Equalization::validateInputStatistics().

◆ init()

◆ isSolved()

bool Isis::Equalization::isSolved ( ) const
protectedinherited

Indicates if the corrective factors were solved.

Returns
bool Returns true if corrective factors were solved

Definition at line 909 of file Equalization.cpp.

References Isis::Equalization::m_normsSolved.

Referenced by Isis::Equalization::applyCorrection().

◆ loadHolds()

void Isis::Equalization::loadHolds ( OverlapNormalization * oNorm)
protectedinherited

Definition at line 724 of file Equalization.cpp.

◆ loadInputs()

void Isis::Equalization::loadInputs ( QString fromListName)
protectedinherited

Loads in the input images.

This method loads in the input images contained in the provided file name.

Parameters
fromListNameName of the file containing the input images
Exceptions
IException::User"The input file must contain at least 2 file names"

Definition at line 602 of file Equalization.cpp.

References Isis::Equalization::errorCheck(), Isis::Equalization::m_alreadyCalculated, Isis::Equalization::m_doesOverlapList, Isis::Equalization::m_maxBand, Isis::Equalization::m_maxCube, Isis::Cube::open(), Isis::FileList::read(), Isis::toString(), and Isis::IException::User.

Referenced by Isis::Equalization::Equalization().

◆ loadOutputs()

void Isis::Equalization::loadOutputs ( FileList & outList,
QString toListName )
protectedinherited

Checks that the output image list is correct.

Exceptions
IException::User"Each input file in the FROM LIST must have a corresponding output file in the TO LIST."
IException::User"The to list file has the same name as its corresponding from list fil."

Definition at line 702 of file Equalization.cpp.

References Isis::toString(), and Isis::IException::User.

◆ recalculateStatistics()

void Isis::Equalization::recalculateStatistics ( QString instatsFileName)
inherited

Recalculates statistics for any new input images.

This method loads a previous Equalization state from an input pvl file and calculates overlap statistics for any new input images. Corrective factors will also be calculated if there are no non-overlapping images and there are enough valid overlaps.

Parameters
instatsFileNameName of input pvl file containing previously calculated statistics

Definition at line 428 of file Equalization.cpp.

References Isis::Equalization::calculateStatistics(), Isis::Equalization::fromPvl(), Isis::Equalization::m_lsqMethod, Isis::Equalization::m_mincnt, Isis::Equalization::m_recalculating, Isis::Equalization::m_samplingPercent, and Isis::Equalization::m_wtopt.

◆ setInput()

void Isis::Equalization::setInput ( int index,
QString value )
protectedinherited

Definition at line 624 of file Equalization.cpp.

◆ setResults()

void Isis::Equalization::setResults ( )
protectedinherited

◆ setSolved()

void Isis::Equalization::setSolved ( bool solved)
protectedinherited

Sets solved state indicating if OverlapNormalizations (corrective factors) were solved.

Parameters
boolIndiciates if corrective factors were solved

Definition at line 899 of file Equalization.cpp.

References Isis::Equalization::m_normsSolved.

◆ validateInputStatistics()

QVector< int > Isis::Equalization::validateInputStatistics ( QString instatsFileName)
privateinherited

Validates the input statistics pvl file.

This method determines if each input image has a corresponding set of corrective factors (i.e. a normalization group). Throws an exception if this condition is not met.

Parameters
instatsFileNameName of the input statistics pvl file
Returns
QVector<int> The indices of the corrective factors for the input images
Exceptions
IException::User"Each input file in the FROM LIST must have a corresponding input file in the INPUT STATISTICS."
IException::User"The from list file does not have any corresponding file in the stats list."

Definition at line 956 of file Equalization.cpp.

References Isis::PvlObject::findObject(), and Isis::IException::User.

Referenced by Isis::Equalization::importStatistics().

◆ write()

void Isis::Equalization::write ( QString outstatsFileName)
inherited

Write the equalization information (results) to a file.

Parameters
outstatsFileNameThe name of the file to write the results to

Definition at line 582 of file Equalization.cpp.

References Isis::Equalization::m_results, and Isis::Pvl::write().

Member Data Documentation

◆ m_adjustments

vector<ImageAdjustment *> Isis::Equalization::m_adjustments
privateinherited

Definition at line 310 of file Equalization.h.

◆ m_alreadyCalculated

vector<bool> Isis::Equalization::m_alreadyCalculated
privateinherited

Which images that have statistics already calculated.

Definition at line 313 of file Equalization.h.

Referenced by Isis::Equalization::calculateOverlapStatistics(), Isis::Equalization::fromPvl(), Isis::Equalization::init(), and Isis::Equalization::loadInputs().

◆ m_badFiles

QStringList Isis::Equalization::m_badFiles
privateinherited

◆ m_doesOverlapList

vector<bool> Isis::Equalization::m_doesOverlapList
privateinherited

◆ m_holdIndices

vector<int> Isis::Equalization::m_holdIndices
privateinherited

Indices of images being held.

Definition at line 311 of file Equalization.h.

Referenced by Isis::Equalization::addHolds().

◆ m_imageList

FileList Isis::Equalization::m_imageList
privateinherited

Definition at line 296 of file Equalization.h.

◆ m_invalidCnt

int Isis::Equalization::m_invalidCnt
privateinherited

◆ m_lsqMethod

LeastSquares::SolveMethod Isis::Equalization::m_lsqMethod
privateinherited

Least squares method for solving normalization correcitve factors.

Definition at line 320 of file Equalization.h.

Referenced by Isis::Equalization::calculateStatistics(), Isis::Equalization::fromPvl(), Isis::Equalization::init(), Isis::Equalization::recalculateStatistics(), and Isis::Equalization::setResults().

◆ m_maxBand

◆ m_maxCube

int Isis::Equalization::m_maxCube
privateinherited

◆ m_mincnt

int Isis::Equalization::m_mincnt
privateinherited

◆ m_normsSolved

◆ m_overlapNorms

◆ m_overlapStats

vector<OverlapStatistics *> Isis::Equalization::m_overlapStats
privateinherited

◆ m_recalculating

bool Isis::Equalization::m_recalculating
privateinherited

Indicates if recalculating with loaded statistics.

Definition at line 293 of file Equalization.h.

Referenced by Isis::Equalization::calculateStatistics(), Isis::Equalization::init(), and Isis::Equalization::recalculateStatistics().

◆ m_results

Pvl* Isis::Equalization::m_results
privateinherited

Calculation results and normalization corrective factors (if solved)

Definition at line 322 of file Equalization.h.

Referenced by Isis::Equalization::getResults(), Isis::Equalization::init(), Isis::Equalization::setResults(), Isis::Equalization::write(), and Isis::Equalization::~Equalization().

◆ m_samplingPercent

double Isis::Equalization::m_samplingPercent
privateinherited

◆ m_sType

◆ m_validCnt

int Isis::Equalization::m_validCnt
privateinherited

◆ m_wtopt

◆ movedIndices

std::vector<int> Isis::HiEqualization::movedIndices
private

Definition at line 77 of file HiEqualization.h.


The documentation for this class was generated from the following files: