libcamera
v0.3.0+92226ce294
Supporting cameras in Linux since 2019

The base class for creating histograms. More...
Public Member Functions  
Histogram ()  
Construct an empty Histogram. More...  
Histogram (Span< const uint32_t > data)  
Create a cumulative histogram. More...  
template<typename Transform , std::enable_if_t< std::is_invocable_v< Transform, uint32_t >> * = nullptr>  
Histogram (Span< const uint32_t > data, Transform transform)  
Create a cumulative histogram. More...  
size_t  bins () const 
Retrieve the number of bins currently used by the Histogram. More...  
uint64_t  total () const 
Retrieve the total number of values in the data set. More...  
uint64_t  cumulativeFrequency (double bin) const 
Cumulative frequency up to a (fractional) point in a bin. More...  
double  quantile (double q, uint32_t first=0, uint32_t last=UINT_MAX) const 
Return the (fractional) bin of the point through the histogram. More...  
double  interQuantileMean (double lowQuantile, double hiQuantile) const 
Calculate the mean between two quantiles. More...  
The base class for creating histograms.
This class stores a cumulative frequency histogram, which is a mapping that counts the cumulative number of observations in all of the bins up to the specified bin. It can be used to find quantiles and averages between quantiles.

inline 
libcamera::ipa::Histogram::Histogram  (  Span< const uint32_t >  data  ) 
Create a cumulative histogram.
[in]  data  A (noncumulative) histogram 

inline 
Create a cumulative histogram.
[in]  data  A (noncumulative) histogram 
[in]  transform  The transformation function to apply to every bin 

inline 
Retrieve the number of bins currently used by the Histogram.
uint64_t libcamera::ipa::Histogram::cumulativeFrequency  (  double  bin  )  const 
Cumulative frequency up to a (fractional) point in a bin.
[in]  bin  The bin up to which to cumulate 
With F(p) the cumulative frequency of the histogram, the value is 0 at the bottom of the histogram, and the maximum is the number of bins. The pixels are spread evenly throughout the “bin” in which they lie, so that F(p) is a continuous (monotonically increasing) function.
double libcamera::ipa::Histogram::interQuantileMean  (  double  lowQuantile, 
double  highQuantile  
)  const 
Calculate the mean between two quantiles.
[in]  lowQuantile  low Quantile 
[in]  highQuantile  high Quantile 
Quantiles are not ideal for metering as they suffer several limitations. Instead, a concept is introduced here: interquantile mean. It returns the mean of all pixels between lowQuantile and highQuantile.
double libcamera::ipa::Histogram::quantile  (  double  q, 
uint32_t  first = 0 , 

uint32_t  last = UINT_MAX 

)  const 
Return the (fractional) bin of the point through the histogram.
[in]  q  the desired point (0 <= q <= 1) 
[in]  first  low limit (default is 0) 
[in]  last  high limit (default is UINT_MAX) 
A quantile gives us the point p = Q(q) in the range such that a proportion q of the pixels lie below p. A familiar quantile is Q(0.5) which is the median of a distribution.

inline 
Retrieve the total number of values in the data set.