[PATCH v2 21/25] libtuning: lsc: rkisp1: Do not calculate ratios to green

Stefan Klug stefan.klug at ideasonboard.com
Tue Jul 2 12:25:21 CEST 2024


Hi Laurent,

On Sat, Jun 29, 2024 at 03:22:33AM +0300, Laurent Pinchart wrote:
> Hi Stefan,
> 
> Thank you for the patch.
> 
> On Fri, Jun 28, 2024 at 12:47:14PM +0200, Stefan Klug wrote:
> > The hardware in the imx8mp treats the lsc tables as absolute factors and
> 
> s/imx8mp/i.MX8MP/
> 
> but maybe you should mention rkisp1 here as that's not specific to the
> version in the i.MX8MP.
> 
> s/lsc/LSC/
> 
> > not as ratios compared to green. Therefore every channel must calculated
> > independently.
> 
> I don't think this is dictated by the hardware, but by the way the LSC
> algorithm is implemented in the IPA. Raspberry Pi has a more advanced
> LSC algorithm that splits processing in luminance LSC and chroma LSC,
> and so needs to handle tuning accordingly. The IPA module calculates R,
> G and B LSC tables at runtime, and the hardware operates on the colour
> channels independently.
> 
> The RkISP1 implementation is (currently) much simpler and handles the
> three colour channels independently. That's why, as far as I understand,
> we shouldn't base the computation on ratios.

Thanks for the clarification. I've updated the comments/commit message
accordingly.

Regards,
Stefan

> 
> > Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
> > ---
> >  utils/tuning/libtuning/modules/lsc/rkisp1.py | 7 +++++--
> >  1 file changed, 5 insertions(+), 2 deletions(-)
> > 
> > diff --git a/utils/tuning/libtuning/modules/lsc/rkisp1.py b/utils/tuning/libtuning/modules/lsc/rkisp1.py
> > index 5874f10c936f..a8ba454a7139 100644
> > --- a/utils/tuning/libtuning/modules/lsc/rkisp1.py
> > +++ b/utils/tuning/libtuning/modules/lsc/rkisp1.py
> > @@ -38,8 +38,11 @@ class LSCRkISP1(LSC):
> >  
> >          # \todo Should these ratio against the average of both greens or just
> >          # each green like we've done here?
> > -        cr, _ = self._lsc_single_channel(image.channels[lt.Color.R], image, gr)
> > -        cb, _ = self._lsc_single_channel(image.channels[lt.Color.B], image, gb)
> > +
> > +        # the lsc tables in the rkisp1 are gains on the corresponding channel,
> 
> s/the lsc/The LSC/
> 
> > +        # 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)
> >  
> >          return image.color, cr.flatten(), cb.flatten(), cgr.flatten(), cgb.flatten()
> >  
> 
> -- 
> Regards,
> 
> Laurent Pinchart


More information about the libcamera-devel mailing list