libcamera  v0.5.0
Supporting cameras in Linux since 2019
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | List of all members
libcamera::ipa::AwbBayes Class Reference

Implementation of a bayesian auto white balance algorithm. More...

Inheritance diagram for libcamera::ipa::AwbBayes:
Inheritance graph
[legend]
Collaboration diagram for libcamera::ipa::AwbBayes:
Collaboration graph
[legend]

Public Member Functions

int init (const YamlObject &tuningData) override
 Initialize the algorithm with the given tuning data. More...
 
AwbResult calculateAwb (const AwbStats &stats, unsigned int lux) override
 Calculate AWB data from the given statistics. More...
 
RGB< double > gainsFromColourTemperature (double temperatureK) override
 Compute white balance gains from a colour temperature. More...
 
void handleControls (const ControlList &controls) override
 
- Public Member Functions inherited from libcamera::ipa::AwbAlgorithm
const ControlInfoMap::Mapcontrols () const
 Get the controls info map for this algorithm. More...
 
virtual void handleControls ([[maybe_unused]] const ControlList &controls)
 Handle the controls supplied in a request. More...
 

Additional Inherited Members

- Protected Member Functions inherited from libcamera::ipa::AwbAlgorithm
int parseModeConfigs (const YamlObject &tuningData, const ControlValue &def={})
 Parse the mode configurations from the tuning data. More...
 
- Protected Attributes inherited from libcamera::ipa::AwbAlgorithm
ControlInfoMap::Map controls_
 Controls info map for the controls provided by the algorithm.
 
std::map< controls::AwbModeEnum, AwbAlgorithm::ModeConfigmodes_
 Map of all configured modes. More...
 

Detailed Description

Implementation of a bayesian auto white balance algorithm.

In a bayesian AWB algorithm the auto white balance estimation is improved by taking the likelihood of a given lightsource based on the estimated lux level into account. E.g. If it is very bright we can assume that we are outside and that colour temperatures around 6500 are preferred.

The second part of this algorithm is the search for the most likely colour temperature. It is implemented in AwbBayes::coarseSearch() and in AwbBayes::fineSearch(). The search works very well without prior likelihoods and therefore the algorithm itself provides very good results even without prior likelihoods.

Member Function Documentation

◆ calculateAwb()

AwbResult libcamera::ipa::AwbBayes::calculateAwb ( const AwbStats stats,
unsigned int  lux 
)
overridevirtual

Calculate AWB data from the given statistics.

Parameters
[in]statsThe statistics to use for the calculation
[in]luxThe lux value of the scene

Calculate an AwbResult object from the given statistics and lux value. A lux value of 0 means it is unknown or invalid and the algorithm shall ignore it.

Returns
The AWB result

Implements libcamera::ipa::AwbAlgorithm.

◆ gainsFromColourTemperature()

RGB< double > libcamera::ipa::AwbBayes::gainsFromColourTemperature ( double  colourTemperature)
overridevirtual

Compute white balance gains from a colour temperature.

Parameters
[in]colourTemperatureThe colour temperature in Kelvin

Compute the white balance gains from a colourTemperature. This function does not take any statistics into account. It is used to compute the colour gains when the user manually specifies a colour temperature.

Returns
The colour gains

Implements libcamera::ipa::AwbAlgorithm.

◆ init()

int libcamera::ipa::AwbBayes::init ( const YamlObject tuningData)
overridevirtual

Initialize the algorithm with the given tuning data.

Parameters
[in]tuningDataThe tuning data to use for the algorithm
Returns
0 on success, a negative error code otherwise

Implements libcamera::ipa::AwbAlgorithm.


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