[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