mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 15:29:45 +03:00
ipa: rpi: contrast: Allow adaptive contrast enhancement to be disabled
The enableCe() function enables or disables adaptive contrast enhancement and the restoreCe() function sets it back to its normal state (which is what was read from the tuning file). In future, algorithms like HDR might want to take over tonemapping functions, so any dynamic behaviour here would upset them. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
9c90e56733
commit
0ff20bf8c1
3 changed files with 17 additions and 1 deletions
|
@ -17,6 +17,8 @@ public:
|
||||||
/* A contrast algorithm must provide the following: */
|
/* A contrast algorithm must provide the following: */
|
||||||
virtual void setBrightness(double brightness) = 0;
|
virtual void setBrightness(double brightness) = 0;
|
||||||
virtual void setContrast(double contrast) = 0;
|
virtual void setContrast(double contrast) = 0;
|
||||||
|
virtual void enableCe(bool enable) = 0;
|
||||||
|
virtual void restoreCe() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} /* namespace RPiController */
|
} /* namespace RPiController */
|
||||||
|
|
|
@ -42,6 +42,7 @@ int Contrast::read(const libcamera::YamlObject ¶ms)
|
||||||
{
|
{
|
||||||
// enable adaptive enhancement by default
|
// enable adaptive enhancement by default
|
||||||
config_.ceEnable = params["ce_enable"].get<int>(1);
|
config_.ceEnable = params["ce_enable"].get<int>(1);
|
||||||
|
ceEnable_ = config_.ceEnable;
|
||||||
// the point near the bottom of the histogram to move
|
// the point near the bottom of the histogram to move
|
||||||
config_.loHistogram = params["lo_histogram"].get<double>(0.01);
|
config_.loHistogram = params["lo_histogram"].get<double>(0.01);
|
||||||
// where in the range to try and move it to
|
// where in the range to try and move it to
|
||||||
|
@ -65,6 +66,16 @@ void Contrast::setContrast(double contrast)
|
||||||
contrast_ = contrast;
|
contrast_ = contrast;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Contrast::enableCe(bool enable)
|
||||||
|
{
|
||||||
|
ceEnable_ = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Contrast::restoreCe()
|
||||||
|
{
|
||||||
|
ceEnable_ = config_.ceEnable;
|
||||||
|
}
|
||||||
|
|
||||||
void Contrast::initialise()
|
void Contrast::initialise()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -150,7 +161,7 @@ void Contrast::process(StatisticsPtr &stats,
|
||||||
* histogram down, and possibly push the end up.
|
* histogram down, and possibly push the end up.
|
||||||
*/
|
*/
|
||||||
Pwl gammaCurve = config_.gammaCurve;
|
Pwl gammaCurve = config_.gammaCurve;
|
||||||
if (config_.ceEnable) {
|
if (ceEnable_) {
|
||||||
if (config_.loMax != 0 || config_.hiMax != 0)
|
if (config_.loMax != 0 || config_.hiMax != 0)
|
||||||
gammaCurve = computeStretchCurve(histogram, config_).compose(gammaCurve);
|
gammaCurve = computeStretchCurve(histogram, config_).compose(gammaCurve);
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -37,6 +37,8 @@ public:
|
||||||
int read(const libcamera::YamlObject ¶ms) override;
|
int read(const libcamera::YamlObject ¶ms) override;
|
||||||
void setBrightness(double brightness) override;
|
void setBrightness(double brightness) override;
|
||||||
void setContrast(double contrast) override;
|
void setContrast(double contrast) override;
|
||||||
|
void enableCe(bool enable) override;
|
||||||
|
void restoreCe() override;
|
||||||
void initialise() override;
|
void initialise() override;
|
||||||
void prepare(Metadata *imageMetadata) override;
|
void prepare(Metadata *imageMetadata) override;
|
||||||
void process(StatisticsPtr &stats, Metadata *imageMetadata) override;
|
void process(StatisticsPtr &stats, Metadata *imageMetadata) override;
|
||||||
|
@ -46,6 +48,7 @@ private:
|
||||||
double brightness_;
|
double brightness_;
|
||||||
double contrast_;
|
double contrast_;
|
||||||
ContrastStatus status_;
|
ContrastStatus status_;
|
||||||
|
double ceEnable_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} /* namespace RPiController */
|
} /* namespace RPiController */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue