[PATCH v3 21/23] libtuning: lsc: rkisp1: Do not calculate ratios to green

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Jul 4 12:23:17 CEST 2024


Hi Stefan,

Thank you for the patch.

On Wed, Jul 03, 2024 at 04:17:10PM +0200, Stefan Klug wrote:
> The current LSC algorithm for the rkisp1 just forwards the LSC tables to
> the hardware, so absolute factors are needed and not ratios compared to
> green. Therefore every channel needs to be calculated independently.
> 
> Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
> ---
>  utils/tuning/libtuning/modules/lsc/rkisp1.py | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/utils/tuning/libtuning/modules/lsc/rkisp1.py b/utils/tuning/libtuning/modules/lsc/rkisp1.py
> index 512233aeae9d..56df23ec7b42 100644
> --- a/utils/tuning/libtuning/modules/lsc/rkisp1.py
> +++ b/utils/tuning/libtuning/modules/lsc/rkisp1.py
> @@ -38,8 +38,12 @@ class LSCRkISP1(LSC):
>  
>          # \todo Should these ratio against the average of both greens or just
>          # each green like we've done here?

I think this comment can be dropped.

> -        cr, _ = self._lsc_single_channel(image.channels[lt.Color.R], image, gr)
> -        cb, _ = self._lsc_single_channel(image.channels[lt.Color.B], image, gb)

gr and gb are not used anymore, so you can drop them from the lines
above this hunk.

> +
> +        # The LSC tables in the our rkisp1 algorithm represent gains on the
> +        # corresponding channel, not ratios with respect to green, so calculate
> +        # them independently
> +        cr, _ = self._lsc_single_channel(image.channels[lt.Color.R], image, None)
> +        cb, _ = self._lsc_single_channel(image.channels[lt.Color.B], image, None)

None is the default value for the last parameter so you can drop it.

I think all of this should become

        # Perform LSC on each colour channel independently. A future enhancement
	# worth investigating would be splitting the luminance and chrominance
	# LSC as done by Raspberry Pi.
        cgr, _ = self._lsc_single_channel(image.channels[lt.Color.GR], image)
        cgb, _ = self._lsc_single_channel(image.channels[lt.Color.GB], image)
        cr, _ = self._lsc_single_channel(image.channels[lt.Color.R], image)
        cb, _ = self._lsc_single_channel(image.channels[lt.Color.B], image)

You can drop the future enhancement sentence if desired.

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

>  
>          return image.color, cr.flatten(), cb.flatten(), cgr.flatten(), cgb.flatten()
>  

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list