mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-23 00:25:07 +03:00
ipa: rpi: agc: Allow AGC channels to avoid using "fast desaturation"
"Fast desaturation" is a technique that can help the AGC algorithm to desaturate images more quickly when they are very over-exposed. However, it uses digital gain to do this which can confuse our HDR techniques. Therefore make it optional. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
0923d50b15
commit
edb48a1337
2 changed files with 7 additions and 2 deletions
|
@ -253,6 +253,8 @@ int AgcConfig::read(const libcamera::YamlObject ¶ms)
|
||||||
|
|
||||||
stableRegion = params["stable_region"].get<double>(0.02);
|
stableRegion = params["stable_region"].get<double>(0.02);
|
||||||
|
|
||||||
|
desaturate = params["desaturate"].get<int>(1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -860,8 +862,10 @@ bool AgcChannel::applyDigitalGain(double gain, double targetY, bool channelBound
|
||||||
* quickly (and we then approach the correct value more quickly from
|
* quickly (and we then approach the correct value more quickly from
|
||||||
* below).
|
* below).
|
||||||
*/
|
*/
|
||||||
bool desaturate = !channelBound &&
|
bool desaturate = false;
|
||||||
targetY > config_.fastReduceThreshold && gain < sqrt(targetY);
|
if (config_.desaturate)
|
||||||
|
desaturate = !channelBound &&
|
||||||
|
targetY > config_.fastReduceThreshold && gain < sqrt(targetY);
|
||||||
if (desaturate)
|
if (desaturate)
|
||||||
dg /= config_.fastReduceThreshold;
|
dg /= config_.fastReduceThreshold;
|
||||||
LOG(RPiAgc, Debug) << "Digital gain " << dg << " desaturate? " << desaturate;
|
LOG(RPiAgc, Debug) << "Digital gain " << dg << " desaturate? " << desaturate;
|
||||||
|
|
|
@ -76,6 +76,7 @@ struct AgcConfig {
|
||||||
libcamera::utils::Duration defaultExposureTime;
|
libcamera::utils::Duration defaultExposureTime;
|
||||||
double defaultAnalogueGain;
|
double defaultAnalogueGain;
|
||||||
double stableRegion;
|
double stableRegion;
|
||||||
|
bool desaturate;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AgcChannel
|
class AgcChannel
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue