[PATCH v2 14/17] libipa: lux: Update for a normalized referenceY to 1

Dan Scally dan.scally at ideasonboard.com
Fri Feb 14 18:22:00 CET 2025


Hi Stefan

On 23/01/2025 11:41, Stefan Klug wrote:
> By normalizing the referenceY value to 1 (which is the usual range for
> Y) in the tuning file, the bins_ value is no longer needed. Remove it.
>
> Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
Reviewed-by: Daniel Scally <dan.scally at ideasonboard.com>
> ---
>
> Changes in v2:
> - Added this patch
> ---
>   src/ipa/libipa/lux.cpp            | 16 ++++------------
>   src/ipa/libipa/lux.h              |  3 +--
>   src/ipa/rkisp1/algorithms/lux.cpp |  4 ----
>   3 files changed, 5 insertions(+), 18 deletions(-)
>
> diff --git a/src/ipa/libipa/lux.cpp b/src/ipa/libipa/lux.cpp
> index bae8198fa169..899e88248f04 100644
> --- a/src/ipa/libipa/lux.cpp
> +++ b/src/ipa/libipa/lux.cpp
> @@ -43,11 +43,6 @@ namespace ipa {
>    * that depend on the estimated lux value.
>    */
>   
> -/**
> - * \var Lux::binSize_
> - * \brief The maximum count of each bin
> - */
> -
>   /**
>    * \var Lux::referenceExposureTime_
>    * \brief The exposure time of the reference image, in microseconds
> @@ -65,9 +60,8 @@ namespace ipa {
>   
>   /**
>    * \var Lux::referenceY_
> - * \brief The measured luminance of the reference image, out of the bin size
> + * \brief The measured luminance of the reference image, normalized to 1
>    *
> - * \sa binSize_
>    */
>   
>   /**
> @@ -77,10 +71,8 @@ namespace ipa {
>   
>   /**
>     * \brief Construct the Lux helper module
> -  * \param[in] binSize The maximum count of each bin
>     */
> -Lux::Lux(unsigned int binSize)
> -	: binSize_(binSize)
> +Lux::Lux()
>   {
>   }
>   
> @@ -97,7 +89,7 @@ Lux::Lux(unsigned int binSize)
>    *       referenceExposureTime: 10000
>    *       referenceAnalogueGain: 4.0
>    *       referenceDigitalGain: 1.0
> - *       referenceY: 12000
> + *       referenceY: 0.1831
>    *       referenceLux: 1000
>    * \endcode
>    *
> @@ -167,7 +159,7 @@ double Lux::estimateLux(utils::Duration exposureTime,
>   	double exposureTimeRatio = referenceExposureTime_ / exposureTime;
>   	double aGainRatio = referenceAnalogueGain_ / aGain;
>   	double dGainRatio = referenceDigitalGain_ / dGain;
> -	double yRatio = currentY * (binSize_ / yHist.bins()) / referenceY_;
> +	double yRatio = (currentY / yHist.bins()) / referenceY_;
>   
>   	double estimatedLux = exposureTimeRatio * aGainRatio * dGainRatio *
>   			      yRatio * referenceLux_;
> diff --git a/src/ipa/libipa/lux.h b/src/ipa/libipa/lux.h
> index 93ca64795803..d95bcdafcfcd 100644
> --- a/src/ipa/libipa/lux.h
> +++ b/src/ipa/libipa/lux.h
> @@ -21,7 +21,7 @@ class Histogram;
>   class Lux
>   {
>   public:
> -	Lux(unsigned int binSize);
> +	Lux();
>   
>   	int parseTuningData(const YamlObject &tuningData);
>   	double estimateLux(utils::Duration exposureTime,
> @@ -29,7 +29,6 @@ public:
>   			   const Histogram &yHist) const;
>   
>   private:
> -	unsigned int binSize_;
>   	utils::Duration referenceExposureTime_;
>   	double referenceAnalogueGain_;
>   	double referenceDigitalGain_;
> diff --git a/src/ipa/rkisp1/algorithms/lux.cpp b/src/ipa/rkisp1/algorithms/lux.cpp
> index b0f74963af4f..a467767e1298 100644
> --- a/src/ipa/rkisp1/algorithms/lux.cpp
> +++ b/src/ipa/rkisp1/algorithms/lux.cpp
> @@ -33,12 +33,8 @@ namespace ipa::rkisp1::algorithms {
>   
>   /**
>    * \brief Construct an rkisp1 Lux algo module
> - *
> - * The Lux helper is initialized to 65535 as that is the max bin count on the
> - * rkisp1.
>    */
>   Lux::Lux()
> -	: lux_(65535)
>   {
>   }
>   


More information about the libcamera-devel mailing list