[PATCH] ipa: rpi: awb: Disable CT search bias for Grey World AWB

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Nov 19 11:04:26 CET 2024


On Tue, Nov 19, 2024 at 09:11:08AM +0000, David Plowman wrote:
> Hi Naush
> 
> Thanks for the patch. Yes, we should probably have spotted this
> earlier. But I'll add a test for grey world AWB so that we don't get
> caught out like this again!
> 
> On Tue, 19 Nov 2024 at 08:55, Naushir Patuck <naush at raspberrypi.com> wrote:
> >
> > If grey world AWB is setup in the tuning file, the CT curve will either
> > be missing or invalid. Disable biasing the statistics for the search in
> > such cases.
> >
> > Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
> > ---
> >  src/ipa/rpi/controller/rpi/awb.cpp | 7 +++++--
> >  1 file changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/ipa/rpi/controller/rpi/awb.cpp b/src/ipa/rpi/controller/rpi/awb.cpp
> > index 9d8e170d1bfe..87b1b077ffb8 100644
> > --- a/src/ipa/rpi/controller/rpi/awb.cpp
> > +++ b/src/ipa/rpi/controller/rpi/awb.cpp
> > @@ -459,10 +459,13 @@ void Awb::prepareStats()
> >          * LSC has already been applied to the stats in this pipeline, so stop
> >          * any LSC compensation.  We also ignore config_.fast in this version.
> >          */
> > +       const double biasCtR = config_.bayes && config_.ctR.size() ?
> > +                              config_.ctR.eval(config_.biasCT) : 0;
> > +       const double biasCtB = config_.bayes && config_.ctB.size() ?
> > +                              config_.ctB.eval(config_.biasCT) : 0;
> 
> I'm OK with this, though perhaps "empty()" is microscopically better
> than "size()" here? Actually, I think the read function ensures that
> the PWLs are set if bayes is, so we could leave it out completely. But
> either way I'm not overly bothered:

Yes, I think we can write

	const double biasCtR = config_.bayes ? config_.ctR.eval(config_.biasCT) : 0;
	const double biasCtB = config_.bayes ? config_.ctB.eval(config_.biasCT) : 0;

> Reviewed-by: David Plowman <david.plowman at raspberrypi.com>
> 
> >         generateStats(zones_, statistics_, config_.minPixels,
> >                       config_.minG, getGlobalMetadata(),
> > -                     config_.biasProportion, config_.ctR.eval(config_.biasCT),
> > -                     config_.ctB.eval(config_.biasCT));
> > +                     config_.biasProportion, biasCtR, biasCtB);
> >         /*
> >          * apply sensitivities, so values appear to come from our "canonical"
> >          * sensor.

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list