USGS

Isis 3.0 Developer's Reference (API)

Home

Isis::Histogram Class Reference
[Statistics]

Container of a cube histogram. More...

#include <Histogram.h>

Inherits Isis::Statistics.

List of all members.

Public Member Functions

 Histogram (double minimum, double maximum, int bins=1024)
 Constructs a histogram object.
 Histogram (Cube &cube, int statsBand, Progress *progress=NULL, double startSample=1.0, double startLine=1.0, double endSample=Null, double endLine=Null, int bins=0, bool addCubeData=false)
 Constructs a histogram object using a cube.
 Histogram (ControlNet &net, double(ControlMeasure::*statFunc)() const, int bins)
 Constructs a histogram from a control netowrk.
 Histogram (ControlNet &net, double(ControlMeasure::*statFunc)() const, double binWidth)
 Constructs a histogram from a control netowrk.
 ~Histogram ()
 Destructs a histogram object.
void SetBins (const int bins)
 Change the number of bins in the histogram and reset counters.
void Reset ()
 Resets histogram counters to zero.
void AddData (const double *data, const unsigned int count)
 Add an array of doubles to the histogram counters.
void AddData (const double data)
 Add a single double data to the histogram.
void RemoveData (const double *data, const unsigned int count)
 Remove an array of doubles from the histogram counters.
double Median () const
 Returns the median.
double Mode () const
 Returns the mode.
double Percent (const double percent) const
 Computes and returns the value at X percent of the histogram.
double Skew () const
 Computes and returns the skew.
BigInt BinCount (const int index) const
 Returns the count at a bin position in the histogram.
void BinRange (const int index, double &low, double &high) const
 Returns the left edge and right edge values of a bin.
double BinMiddle (const int index) const
 Returns the value represented by a bin.
double BinSize () const
 Returns the size of an individual bin.
int Bins () const
 Returns the number of bins in the histogram.
BigInt MaxBinCount () const
 Returns the highest bin count.
double BinRangeStart () const
double BinRangeEnd () const
void SetValidRange (const double minimum=Isis::ValidMinimum, const double maximum=Isis::ValidMaximum)
 Changes the range of the bins.
void RemoveData (const double data)
double ValidMinimum () const
double ValidMaximum () const
bool InRange (const double value)
bool AboveRange (const double value)
bool BelowRange (const double value)
double Average () const
 Computes and returns the average.
double StandardDeviation () const
 Computes and returns the standard deviation.
double Variance () const
 Computes and returns the variance.
double Sum () const
 Returns the sum of all the data.
double SumSquare () const
 Returns the sum of all the squared data.
double Rms () const
 Computes and returns the rms.
double Minimum () const
 Returns the absolute minimum double found in all data passed through the AddData method.
double Maximum () const
 Returns the absolute maximum double found in all data passed through the AddData method.
double ChebyshevMinimum (const double percent=99.5) const
 This method returns a minimum such that X percent of the data will fall with K standard deviations of the average (Chebyshev's Theorem).
double ChebyshevMaximum (const double percent=99.5) const
 This method returns a maximum such that X percent of the data will fall with K standard deviations of the average (Chebyshev's Theorem).
double BestMinimum (const double percent=99.5) const
 This method returns the better of the absolute minimum or the Chebyshev minimum.
double BestMaximum (const double percent=99.5) const
 This method returns the better of the absolute maximum or the Chebyshev maximum.
double ZScore (const double value) const
 This method returns the better of the z-score of the given value.
BigInt TotalPixels () const
 Returns the total number of pixels processed (valid and invalid).
BigInt ValidPixels () const
 Returns the total number of valid pixels processed.
BigInt OverRangePixels () const
 Returns the total number of pixels over the valid range encountered.
BigInt UnderRangePixels () const
 Returns the total number of pixels under the valid range encountered.
BigInt NullPixels () const
 Returns the total number of NULL pixels encountered.
BigInt LisPixels () const
 Returns the total number of low instrument saturation (LIS) pixels encountered.
BigInt LrsPixels () const
 Returns the total number of low representation saturation (LRS) pixels encountered.
BigInt HisPixels () const
 Returns the total number of high instrument saturation (HIS) pixels encountered.
BigInt HrsPixels () const
 Returns the total number of high representation saturation (HRS) pixels encountered.
BigInt OutOfRangePixels () const
 Returns the total number of pixels outside of the valid range encountered.
bool RemovedData () const
void save (QXmlStreamWriter &stream, const Project *project) const
QDataStream & write (QDataStream &stream) const
 Order saved must match the offsets in the static compoundH5DataType() method.
QDataStream & read (QDataStream &stream)

Static Public Member Functions

static H5::CompType compoundH5DataType ()

Detailed Description

Container of a cube histogram.

This class is used to accumulate a histogram on double arrays. In particular, it is highly useful for obtaining a histogram on cube data. Parameters which can be computed are the 1) median, 2) mode, and 3) skew. The histogram consists of a fixed set of distinct bins. When an object is created the programmer must provide a minimum and maximum which defines how data is further placed in the bins. The minimum is mapped to the left edge of the first bin [0] and the maximum is mapped to the right edge of the last bin [Bins()-1]. There are a set of methods which return bin information such as 1) count, 2) size, 3) middle value, 4) range, and 5) maximum bin count.

Author:
2002-05-13 Jeff Anderson

Constructor & Destructor Documentation

Isis::Histogram::Histogram ( double  minimum,
double  maximum,
int  nbins = 1024 
)

Constructs a histogram object.

Only data between the minimum and maximum will be binned, and the bin range will be from the minimum to the maximum.

Parameters:
minimum Minimum value for binning the data into the histogram.
maximum Maximum value for binning the data into the histogram.
nbins The number of bins to use

References SetBins(), and SetValidRange().

Isis::Histogram::Histogram ( Cube cube,
int  statsBand,
Progress progress = NULL,
double  startSample = 1.0,
double  startLine = 1.0,
double  endSample = Null,
double  endLine = Null,
int  bins = 0,
bool  addCubeData = false 
)

Constructs a histogram object using a cube.

This constructor computes the minimum, maximum for the binning range and number of bins automatically. All statistics will still be collected, though data at either end of the histogram will be put into one bin in order to attempt to achieve better histogram statistics.

TODO: progress needs to be a bool.

Parameters:
cube The cube to used to determine min/max and bins
statsBand The band number the histogram will be collected from
progress The Progress object to be used to output the percent processed information
startSample The sample to start reading cube data from
startLine The line to start reading cube data from
endSample The sample to stop reading cube data at (Null for nsamps)
endLine The line to stop reading cube data at (Null for nlines)
bins The number of histogram bins to create (0 for automatic)
addCubeData True to fill the histogram with data in addition to initializing the binning ranges.

References AddData(), Isis::Cube::bandCount(), Isis::Progress::CheckStatus(), Isis::Cube::pixelType(), Isis::Cube::read(), Isis::Progress::SetMaximumSteps(), and Isis::Progress::SetText().

Isis::Histogram::Histogram ( ControlNet net,
double(ControlMeasure::*)() const   statFunc,
int  bins 
)

Constructs a histogram from a control netowrk.

Parameters:
net,: Reference to a ControlNetwork used to access all the measures.
statFunc,: Pointer to a ControlMeasure acessor, the returns of this function call will be used to build up the network.
bins,: The number of bins to divide the histogram into.
Exceptions:
The number of Histogram Bins must be greater than 0.

References _FILEINFO_, Isis::IException::Programmer, and SetBins().

Isis::Histogram::Histogram ( ControlNet net,
double(ControlMeasure::*)() const   statFunc,
double  binWidth 
)

Constructs a histogram from a control netowrk.

Parameters:
Net,: Reference to a ControlNetwork used to access all the measures.
statFunc,: Pointer to a ControlMeasure acessor, the returns of this. function call will be used to build up the network.
binWidth,: The width of histogram bins.
Exceptions:
The width of Histogram Bins must be greater than 0.

References _FILEINFO_, Isis::IException::Programmer, SetBins(), Isis::Statistics::ValidMaximum(), and Isis::Statistics::ValidMinimum().

Isis::Histogram::~Histogram (  ) 

Destructs a histogram object.


Member Function Documentation

bool Isis::Statistics::AboveRange ( const double  value  )  [inherited]
void Isis::Histogram::AddData ( const double  data  ) 

Add a single double data to the histogram.

Of course this can be invoke multiple times. e.g. once for each residual in a network for instance.

Parameters:
data a single observation to be added to the histogram

Reimplemented from Isis::Statistics.

References AddData(), BinRangeEnd(), BinRangeStart(), Isis::Statistics::InRange(), and Isis::IsValidPixel().

void Isis::Histogram::AddData ( const double *  data,
const unsigned int  count 
)

Add an array of doubles to the histogram counters.

This method can be invoked multiple times. For example, once for each line in a cube, before obtaining statistics and histogram information.

Parameters:
data Pointer to array of double to add.
count Number of doubles to process.

Reimplemented from Isis::Statistics.

References BinRangeEnd(), BinRangeStart(), Isis::Statistics::InRange(), and Isis::IsValidPixel().

Referenced by AddData(), Isis::StretchTool::histFromBuffer(), Isis::StretchTool::histFromCube(), Histogram(), Isis::Cube::histogram(), and Isis::HistogramTool::refreshPlot().

double Isis::Statistics::Average (  )  const [inherited]
bool Isis::Statistics::BelowRange ( const double  value  )  [inherited]
double Isis::Statistics::BestMaximum ( const double  percent = 99.5  )  const [inherited]

This method returns the better of the absolute maximum or the Chebyshev maximum.

The better value is considered the value closest to the mean.

Parameters:
percent The probability that the maximum is within K standard deviations of the mean (Used to compute the Chebyshev maximum). Default value = 99.5.
Returns:
Best of absolute and Chebyshev maximums
See also:
Statistics::Maximum Statistics::ChebyshevMaximum

References Isis::Statistics::ChebyshevMaximum(), Isis::Statistics::Maximum(), and Isis::NULL8.

Referenced by Isis::IndependentCubeViewport::cubeDataChanged(), Isis::StretchTool::histFromBuffer(), Isis::VisualDisplay::setPixelData(), Isis::LinearStretchType::setStretch(), Isis::StretchTool::stretchBand(), and Isis::StretchTool::stretchBuffer().

double Isis::Statistics::BestMinimum ( const double  percent = 99.5  )  const [inherited]

This method returns the better of the absolute minimum or the Chebyshev minimum.

The better value is considered the value closest to the mean.

Parameters:
percent The probability that the minimum is within K standard deviations of the mean (Used to compute the Chebyshev minimum). Default value = 99.5.
Returns:
Best of absolute and Chebyshev minimums
See also:
Statistics::Minimum Statistics::ChebyshevMinimum

References Isis::Statistics::ChebyshevMinimum(), Isis::Statistics::Minimum(), and Isis::NULL8.

Referenced by Isis::IndependentCubeViewport::cubeDataChanged(), Isis::StretchTool::histFromBuffer(), Isis::VisualDisplay::setPixelData(), Isis::LinearStretchType::setStretch(), Isis::StretchTool::stretchBand(), and Isis::StretchTool::stretchBuffer().

BigInt Isis::Histogram::BinCount ( const int  index  )  const

Returns the count at a bin position in the histogram.

Parameters:
index Index of the desired bin 0 to Bins()-1.
Returns:
The count at a bin position in the histogram.

References _FILEINFO_, Isis::Message::ArraySubscriptNotInRange(), and Isis::IException::Programmer.

Referenced by Isis::QHistogram::Load(), Isis::HistogramTool::refreshPlot(), and Isis::HistogramWidget::setHistogram().

double Isis::Histogram::BinMiddle ( const int  index  )  const

Returns the value represented by a bin.

This is not the count, but the actual data value at the middle of the bin.

Parameters:
index Index of the desired bin 0 to Bins()-1.
Returns:
The middle value of the bin.

References _FILEINFO_, Isis::Message::ArraySubscriptNotInRange(), BinRange(), and Isis::IException::Programmer.

Referenced by Isis::QHistogram::Load(), Mode(), Percent(), Isis::HistogramTool::refreshPlot(), and Isis::HistogramWidget::setHistogram().

void Isis::Histogram::BinRange ( const int  index,
double &  low,
double &  high 
) const

Returns the left edge and right edge values of a bin.

That is the range of data the bin covers.

Exceptions:
iException The programmer has passed in an index outside of 0 to Bins()-1.
Parameters:
index Index of the desired bin 0 to Bins()-1.
low The value at the left edge of the requested bin.
high The value at the right edge of the requested bin.

References _FILEINFO_, Isis::Message::ArraySubscriptNotInRange(), BinRangeEnd(), BinRangeStart(), and Isis::IException::Programmer.

Referenced by BinMiddle(), and BinSize().

double Isis::Histogram::BinRangeEnd (  )  const [inline]
double Isis::Histogram::BinRangeStart (  )  const [inline]
int Isis::Histogram::Bins (  )  const

Returns the number of bins in the histogram.

Returns:
The number of bins in the histogram.

Referenced by Isis::GaussianStretch::GaussianStretch(), Isis::QHistogram::Load(), Isis::HistogramTool::refreshPlot(), and Isis::HistogramWidget::setHistogram().

double Isis::Histogram::BinSize (  )  const

Returns the size of an individual bin.

Essentially, the difference of the high and low edge values (BinRange) of a bin. This value is constant for all bins.

Returns:
The size of the individual bin.

References BinRange().

Referenced by Isis::HistogramTool::refreshPlot(), Isis::HistogramWidget::setHistogram(), Isis::SawtoothStretchType::setStretch(), Isis::LinearStretchType::setStretch(), and Isis::BinaryStretchType::setStretch().

double Isis::Statistics::ChebyshevMaximum ( const double  percent = 99.5  )  const [inherited]

This method returns a maximum such that X percent of the data will fall with K standard deviations of the average (Chebyshev's Theorem).

It can be used to obtain a minimum that does not include statistical outliers.

Parameters:
percent The probability that the maximum is within K standard deviations of the mean. Default value = 99.5.
Returns:
maximum value excluding statistical outliers
Exceptions:
Isis::IException::Message 

References _FILEINFO_, Isis::Statistics::Average(), Isis::NULL8, Isis::IException::Programmer, and Isis::Statistics::StandardDeviation().

Referenced by Isis::Statistics::BestMaximum().

double Isis::Statistics::ChebyshevMinimum ( const double  percent = 99.5  )  const [inherited]

This method returns a minimum such that X percent of the data will fall with K standard deviations of the average (Chebyshev's Theorem).

It can be used to obtain a minimum that does not include statistical outliers.

Parameters:
percent The probability that the minimum is within K standard deviations of the mean. Default value = 99.5.
Returns:
Minimum value (excluding statistical outliers)
Exceptions:
Isis::IException::Message 

References _FILEINFO_, Isis::Statistics::Average(), Isis::NULL8, Isis::IException::Programmer, and Isis::Statistics::StandardDeviation().

Referenced by Isis::Statistics::BestMinimum().

static H5::CompType Isis::Statistics::compoundH5DataType (  )  [static, inherited]
BigInt Isis::Statistics::HisPixels (  )  const [inherited]

Returns the total number of high instrument saturation (HIS) pixels encountered.

Returns:
The number of HIS pixels (data) processed
BigInt Isis::Statistics::HrsPixels (  )  const [inherited]

Returns the total number of high representation saturation (HRS) pixels encountered.

Returns:
The number of HRS pixels (data) processed
bool Isis::Statistics::InRange ( const double  value  )  [inherited]
BigInt Isis::Statistics::LisPixels (  )  const [inherited]

Returns the total number of low instrument saturation (LIS) pixels encountered.

Returns:
The number of LIS pixels (data) processed
BigInt Isis::Statistics::LrsPixels (  )  const [inherited]

Returns the total number of low representation saturation (LRS) pixels encountered.

Returns:
The number of LRS pixels (data) processed
BigInt Isis::Histogram::MaxBinCount (  )  const

Returns the highest bin count.

Returns:
The highest bin count.

Referenced by Isis::HistogramWidget::setHistogram().

double Isis::Statistics::Maximum (  )  const [inherited]
double Isis::Histogram::Median (  )  const
double Isis::Statistics::Minimum (  )  const [inherited]
double Isis::Histogram::Mode (  )  const

Returns the mode.

Returns:
The mode

References BinMiddle(), and Isis::NULL8.

Referenced by Isis::HistogramTool::refreshPlot().

BigInt Isis::Statistics::NullPixels (  )  const [inherited]

Returns the total number of NULL pixels encountered.

Returns:
The number of NULL pixels (data) processed
BigInt Isis::Statistics::OutOfRangePixels (  )  const [inherited]

Returns the total number of pixels outside of the valid range encountered.

Returns:
The number of Out of Range pixels (data) processed
BigInt Isis::Statistics::OverRangePixels (  )  const [inherited]

Returns the total number of pixels over the valid range encountered.

Returns:
The number of pixels less than the ValidMaximum() processed
double Isis::Histogram::Percent ( const double  percent  )  const

Computes and returns the value at X percent of the histogram.

For example, Percent(50.0) is equivalent to the computing the median. While Percent(0.5) and Percent(99.5) would obtain a minimum and maximum for the data that could be used for a good contrast stretch.

Parameters:
percent X percent of the histogram to compute.
Returns:
The value at X percent of the histogram.

References _FILEINFO_, BinMiddle(), Isis::NULL8, Isis::IException::Programmer, and Isis::Statistics::ValidPixels().

Referenced by Isis::BinaryStretchType::BinaryStretchType(), Isis::GaussianStretch::GaussianStretch(), Median(), Isis::Stretch::Parse(), Isis::ProcessExport::SetInputRange(), and Isis::StretchTool::stretchBuffer().

QDataStream & Isis::Statistics::read ( QDataStream &  stream  )  [inherited]
void Isis::Statistics::RemoveData ( const double  data  )  [inherited]
void Isis::Histogram::RemoveData ( const double *  data,
const unsigned int  count 
)

Remove an array of doubles from the histogram counters.

Note that this invalidates the absolute minimum and maximum. They will no longer be useable.

See also:
Stats
Parameters:
data Pointer to array of doubles to remove.
count number of doubles to process.

Reimplemented from Isis::Statistics.

References BinRangeEnd(), BinRangeStart(), and Isis::IsValidPixel().

bool Isis::Statistics::RemovedData (  )  const [inherited]
void Isis::Histogram::Reset (  ) 

Resets histogram counters to zero.

Reimplemented from Isis::Statistics.

Referenced by SetBins(), and SetValidRange().

double Isis::Statistics::Rms (  )  const [inherited]

Computes and returns the rms.

If there are no valid pixels, then NULL8 is returned.

Returns:
The rms (root mean square)

References Isis::NULL8.

Referenced by Isis::ControlPoint::GetLineResidualRms(), Isis::ControlPoint::GetResidualRms(), and Isis::ControlPoint::GetSampleResidualRms().

void Isis::Statistics::save ( QXmlStreamWriter &  stream,
const Project project 
) const [inherited]

References Isis::toString().

void Isis::Histogram::SetBins ( const int  bins  ) 

Change the number of bins in the histogram and reset counters.

References Reset().

Referenced by Histogram().

void Isis::Histogram::SetValidRange ( const double  minimum = Isis::ValidMinimum,
const double  maximum = Isis::ValidMaximum 
)

Changes the range of the bins.

This function also sets the range of the parent statistics class and resets the stats/histogram counters. So binRange = setValidRange. Should only be called once, prior to Adding data to the histogram.

Parameters:
binStart The start of the bin range
binEnd The end of the bin range

Reimplemented from Isis::Statistics.

References _FILEINFO_, Isis::IException::Programmer, and Reset().

Referenced by Histogram(), and Isis::Cube::histogram().

double Isis::Histogram::Skew (  )  const

Computes and returns the skew.

If there are no valid pixels then NULL8 is returned. Recognize that because of the binning which occurs, in order to generate the histogram, the skew may not be precise but will be very close.

Returns:
The skew.

References Isis::Statistics::Average(), Median(), Isis::NULL8, Isis::Statistics::StandardDeviation(), and Isis::Statistics::ValidPixels().

Referenced by Isis::HistogramTool::refreshPlot().

double Isis::Statistics::StandardDeviation (  )  const [inherited]
double Isis::Statistics::Sum (  )  const [inherited]

Returns the sum of all the data.

Returns:
The sum of the data

Referenced by Isis::MultivariateStatistics::Covariance(), and Isis::MultivariateStatistics::LinearRegression().

double Isis::Statistics::SumSquare (  )  const [inherited]

Returns the sum of all the squared data.

Returns:
The sum of the squared data

Referenced by Isis::MultivariateStatistics::LinearRegression(), and Isis::BundleAdjust::Solve().

BigInt Isis::Statistics::TotalPixels (  )  const [inherited]

Returns the total number of pixels processed (valid and invalid).

Returns:
The number of pixels (data) processed

Referenced by Isis::VisualDisplay::paintPixmap(), and Isis::BundleAdjust::Solve().

BigInt Isis::Statistics::UnderRangePixels (  )  const [inherited]

Returns the total number of pixels under the valid range encountered.

Returns:
The number of pixels less than the ValidMinimum() processed
double Isis::Statistics::ValidMaximum (  )  const [inherited]

Referenced by Histogram().

double Isis::Statistics::ValidMinimum (  )  const [inherited]

Referenced by Histogram().

BigInt Isis::Statistics::ValidPixels (  )  const [inherited]

Returns the total number of valid pixels processed.

Only valid pixels are utilized when computing the average, standard deviation, variance, minimum and maximum.

Returns:
The number of valid pixels (data) processed

Referenced by Isis::OverlapNormalization::AddOverlap(), Isis::IndependentCubeViewport::cubeDataChanged(), Isis::QHistogram::Load(), Percent(), Isis::HistogramTool::refreshPlot(), Skew(), Isis::StretchTool::stretchBuffer(), and Isis::StretchTool::updateHistograms().

double Isis::Statistics::Variance (  )  const [inherited]

Computes and returns the variance.

If there are no valid pixels, then NULL8 is returned.

Returns:
The variance

References Isis::NULL8.

Referenced by Isis::HistogramTool::refreshPlot(), and Isis::Statistics::StandardDeviation().

QDataStream & Isis::Statistics::write ( QDataStream &  stream  )  const [inherited]

Order saved must match the offsets in the static compoundH5DataType() method.

double Isis::Statistics::ZScore ( const double  value  )  const [inherited]

This method returns the better of the z-score of the given value.

The z-score is the number of standard deviations the value lies above or below the average.

Parameters:
value The value to calculate the z-score of.
Returns:
z-score

References _FILEINFO_, Isis::Statistics::Average(), Isis::Statistics::Maximum(), Isis::IException::Programmer, Isis::Statistics::StandardDeviation(), and Isis::toString().


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