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

Paul Elder paul.elder at ideasonboard.com
Mon Jan 27 12:36:40 CET 2025


On Thu, Jan 23, 2025 at 12:41:04PM +0100, 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>

I think the subject can simply be "libipa: lux: Normalize referenceY to 1"
or something along those lines.

Reviewed-by: Paul Elder <paul.elder 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)
>  {
>  }
>  
> -- 
> 2.43.0
> 


More information about the libcamera-devel mailing list