libcamera v0.5.0
Supporting cameras in Linux since 2019
Loading...
Searching...
No Matches
awb.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2/*
3 * Copyright (C) 2024 Ideas on Board Oy
4 *
5 * Generic AWB algorithms
6 */
7
8#pragma once
9
10#include <map>
11
13#include <libcamera/controls.h>
14
17
18namespace libcamera {
19
20namespace ipa {
21
26
27struct AwbStats {
28 virtual double computeColourError(const RGB<double> &gains) const = 0;
29 virtual RGB<double> rgbMeans() const = 0;
30
31protected:
32 ~AwbStats() = default;
33};
34
36{
37public:
38 virtual ~AwbAlgorithm() = default;
39
40 virtual int init(const YamlObject &tuningData) = 0;
41 virtual AwbResult calculateAwb(const AwbStats &stats, unsigned int lux) = 0;
42 virtual RGB<double> gainsFromColourTemperature(double colourTemperature) = 0;
43
45 {
46 return controls_;
47 }
48
49 virtual void handleControls([[maybe_unused]] const ControlList &controls) {}
50
51protected:
52 int parseModeConfigs(const YamlObject &tuningData,
53 const ControlValue &def = {});
54
55 struct ModeConfig {
56 double ctHi;
57 double ctLo;
58 };
59
61 std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> modes_;
62};
63
64} /* namespace ipa */
65
66} /* namespace libcamera */
std::unordered_map< const ControlId *, ControlInfo > Map
The base std::unsorted_map<> container.
Definition controls.h:369
Associate a list of ControlId with their values for an object.
Definition controls.h:411
Abstract type representing the value of a control.
Definition controls.h:134
A class representing the tree structure of the YAML content.
Definition yaml_parser.h:28
A base class for auto white balance algorithms.
Definition awb.h:36
const ControlInfoMap::Map & controls() const
Get the controls info map for this algorithm.
Definition awb.h:44
virtual int init(const YamlObject &tuningData)=0
Initialize the algorithm with the given tuning data.
ControlInfoMap::Map controls_
Controls info map for the controls provided by the algorithm.
Definition awb.h:60
int parseModeConfigs(const YamlObject &tuningData, const ControlValue &def={})
Parse the mode configurations from the tuning data.
Definition awb.cpp:165
virtual RGB< double > gainsFromColourTemperature(double colourTemperature)=0
Compute white balance gains from a colour temperature.
virtual void handleControls(const ControlList &controls)
Handle the controls supplied in a request.
Definition awb.h:49
virtual AwbResult calculateAwb(const AwbStats &stats, unsigned int lux)=0
Calculate AWB data from the given statistics.
std::map< controls::AwbModeEnum, AwbAlgorithm::ModeConfig > modes_
Map of all configured modes.
Definition awb.h:61
Camera controls identifiers.
Framework to manage controls related to an object.
The IPA (Image Processing Algorithm) namespace.
Definition af.cpp:58
Top-level libcamera namespace.
Definition backtrace.h:17
Vector< T, 3 > RGB
A Vector of 3 elements representing an RGB pixel value.
Definition vector.h:292
Holds the configuration of a single AWB mode.
Definition awb.h:55
double ctLo
The lowest valid colour temperature of that mode.
Definition awb.h:57
double ctHi
The highest valid colour temperature of that mode.
Definition awb.h:56
The result of an AWB calculation.
Definition awb.h:22
double colourTemperature
The calculated colour temperature in Kelvin.
Definition awb.h:24
RGB< double > gains
The calculated white balance gains.
Definition awb.h:23
An abstraction class wrapping hardware-specific AWB statistics.
Definition awb.h:27
virtual double computeColourError(const RGB< double > &gains) const =0
Compute an error value for when the given gains would be applied.
virtual RGB< double > rgbMeans() const =0
Get RGB means of the statistics.
Vector class.
A YAML parser helper.