You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.6 KiB
C++
138 lines
4.6 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkImageHistogramStatistics.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
/**
|
|
* @class vtkImageHistogramStatistics
|
|
* @brief Compute statistics for an image
|
|
*
|
|
* vtkImageHistogramStatistics computes statistics such as mean, median, and
|
|
* standard deviation. These statistics are computed from the histogram
|
|
* of the image, rather than from the image itself, because this is more
|
|
* efficient than computing the statistics while traversing the pixels.
|
|
* If the input image is of type float or double, then the precision of
|
|
* the Mean, Median, and StandardDeviation will depend on the number of
|
|
* histogram bins. By default, 65536 bins are used for float data, giving
|
|
* at least 16 bits of precision.
|
|
* @par Thanks:
|
|
* Thanks to David Gobbi at the Seaman Family MR Centre and Dept. of Clinical
|
|
* Neurosciences, Foothills Medical Centre, Calgary, for providing this class.
|
|
*/
|
|
|
|
#ifndef vtkImageHistogramStatistics_h
|
|
#define vtkImageHistogramStatistics_h
|
|
|
|
#include "vtkImageHistogram.h"
|
|
#include "vtkImagingStatisticsModule.h" // For export macro
|
|
|
|
class vtkImageStencilData;
|
|
class vtkIdTypeArray;
|
|
|
|
class VTKIMAGINGSTATISTICS_EXPORT vtkImageHistogramStatistics : public vtkImageHistogram
|
|
{
|
|
public:
|
|
static vtkImageHistogramStatistics* New();
|
|
vtkTypeMacro(vtkImageHistogramStatistics, vtkImageHistogram);
|
|
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
/**
|
|
* Get the minimum value present in the image. This value is computed
|
|
* when Update() is called.
|
|
*/
|
|
double GetMinimum() { return this->Minimum; }
|
|
|
|
/**
|
|
* Get the maximum value present in the image. This value is computed
|
|
* when Update() is called.
|
|
*/
|
|
double GetMaximum() { return this->Maximum; }
|
|
|
|
/**
|
|
* Get the mean value of the image. This value is computed when Update()
|
|
* is called.
|
|
*/
|
|
double GetMean() { return this->Mean; }
|
|
|
|
/**
|
|
* Get the median value. This is computed when Update() is called.
|
|
*/
|
|
double GetMedian() { return this->Median; }
|
|
|
|
/**
|
|
* Get the standard deviation of the values in the image. This is
|
|
* computed when Update() is called.
|
|
*/
|
|
double GetStandardDeviation() { return this->StandardDeviation; }
|
|
|
|
//@{
|
|
/**
|
|
* Set the percentiles to use for automatic view range computation.
|
|
* This allows one to compute a range that does not include outliers
|
|
* that are significantly darker or significantly brighter than the
|
|
* rest of the pixels in the image. The default is to use the first
|
|
* percentile and the 99th percentile.
|
|
*/
|
|
vtkSetVector2Macro(AutoRangePercentiles, double);
|
|
vtkGetVector2Macro(AutoRangePercentiles, double);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set lower and upper expansion factors to apply to the auto range
|
|
* that was computed from the AutoRangePercentiles. Any outliers that
|
|
* are within this expanded range will be included, even if they are
|
|
* beyond the percentile. This allows inclusion of values that are
|
|
* just slightly outside of the percentile, while rejecting values
|
|
* that are far beyond the percentile. The default is to expand the
|
|
* range by a factor of 0.1 at each end. The range will never be
|
|
* expanded beyond the Minimum or Maximum pixel values.
|
|
*/
|
|
vtkSetVector2Macro(AutoRangeExpansionFactors, double);
|
|
vtkGetVector2Macro(AutoRangeExpansionFactors, double);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Get an automatically computed view range for the image, for use
|
|
* with the lookup table or image property that is used when viewing
|
|
* the image. The use of this range will avoid situations where an
|
|
* image looks too dark because a few pixels happen to be much brighter
|
|
* than the rest.
|
|
*/
|
|
vtkGetVector2Macro(AutoRange, double);
|
|
//@}
|
|
|
|
protected:
|
|
vtkImageHistogramStatistics();
|
|
~vtkImageHistogramStatistics() override;
|
|
|
|
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
|
|
|
|
double Minimum;
|
|
double Maximum;
|
|
double Mean;
|
|
double StandardDeviation;
|
|
double Median;
|
|
|
|
double AutoRange[2];
|
|
double AutoRangePercentiles[2];
|
|
double AutoRangeExpansionFactors[2];
|
|
|
|
private:
|
|
vtkImageHistogramStatistics(const vtkImageHistogramStatistics&) = delete;
|
|
void operator=(const vtkImageHistogramStatistics&) = delete;
|
|
};
|
|
|
|
#endif
|