dip::Histogram::Configuration struct

Configuration information for how the histogram is computed.

Note that if mode == Mode::COMPUTE_BINS, binSize will be adjusted so that a whole number of bins fits between the bounds. If binSize was set to zero or a negative value, and the input image is of any integer type, then binSize will be computed to be an integer power of two, and such that there are no more than 256 bins in the histogram.

Any illegal values in the configuration will silently be replaced with the default values.

Constructors exist to set different subsets of the configuration; write upper bound and bin size as a floating point number so the right constructor can be selected (they differ in the location of the integer value). For example, note the difference between the following constructor calls, where 10 indicates 10 bins, 10.0 indicates the upper bound, and 1.0 indicates the bin size:

dip::Histogram::Configuration conf1( 0.0, 10.0, 1.0 );
dip::Histogram::Configuration conf1( 0.0, 10.0, 10 );
dip::Histogram::Configuration conf2( 0.0, 10, 1.0 );

An additional constructor takes a dip::DataType, and selects appropriate values for an image of the given data type:

  • For 8-bit images, the histogram has 256 bins, one for each possible input value.
  • For other integer-valued images, the histogram has up to 256 bins, stretching from the lowest value in the image to the highest, and with bin size a power of two. This is the simplest way of correctly handling data from 10-bit, 12-bit and 16-bit sensors that can put data in the lower or the upper bits of the 16-bit words, and will handle other integer data correctly as well.
  • For floating-point images, the histogram always has 256 bins, stretching from the lowest value in the image to the highest.

Constructors, destructors, assignment and conversion operators

Configuration() defaulted noexcept
Default-constructed configuration defines 256 bins in the range [0,256].
Configuration(dip::dfloat lowerBound, dip::dfloat upperBound, dip::dfloat binSize)
A constructor takes a lower and upper bounds, and the bin size. The number of bins are computed.
Configuration(dip::dfloat lowerBound, dip::dfloat upperBound, dip::uint nBins = 256)
A constructor takes a lower and upper bounds, and the number of bins. The bin size is computed.
Configuration(dip::dfloat lowerBound, dip::dfloat upperBound, int nBins)
A constructor takes a lower and upper bounds, and the number of bins. The bin size is computed.
Configuration(dip::dfloat lowerBound, dip::uint nBins, dip::dfloat binSize)
A constructor takes a lower bound, the number of bins and the bin size. The upper bound is computed.
Configuration(dip::dfloat lowerBound, int nBins, dip::dfloat binSize)
A constructor takes a lower bound, the number of bins and the bin size. The upper bound is computed.
Configuration(dip::DataType dataType) explicit
A constructor takes an image data type, yielding a default histogram configuration for that data type.

Enums

enum class Mode: uint8{ COMPUTE_BINSIZE, COMPUTE_BINS, COMPUTE_LOWER, COMPUTE_UPPER }
Which of the four values to compute based on the other three

Functions

auto IsOutOfRange(dip::dfloat value) const -> bool
Returns true if the value should not be included in the histogram.
auto FindBin(dip::dfloat value) const -> dip::sint
Returns the bin that the value belongs in, assuming !IsOutOfRange(value).

Variables

dip::dfloat lowerBound
Lower bound for this dimension, corresponds to the lower bound of the first bin.
dip::dfloat upperBound
Upper bound for this dimension, corresponds to the upper bound of the last bin.
dip::uint nBins
Number of bins for this dimension.
dip::dfloat binSize
Size of each bin for this dimension.
dip::Histogram::Configuration::Mode mode
The given value is ignored and replaced by the computed value.
bool lowerIsPercentile
If set, lowerBound is replaced by the given percentile pixel value.
bool upperIsPercentile
If set, upperBound is replaced by the given percentile pixel value.
bool excludeOutOfBoundValues
If set, pixels outside of the histogram bounds are not counted.