From 2fae9603e6cc483d9d0d74868721b272776513cf Mon Sep 17 00:00:00 2001 From: David Plowman Date: Wed, 22 Nov 2023 09:13:02 +0000 Subject: ipa: rpi: alsc: Do not allow zero colour ratio statistics The algorithm computes R/G and B/G colour ratio statistics which we should not allow to go to zero because there is clearly no gain you could apply to R or B to equalise them. Instead flag such regions as having "insufficient data" in the normal manner. Signed-off-by: David Plowman Reviewed-by: Naushir Patuck Reviewed-by: Kieran Bingham Signed-off-by: Laurent Pinchart --- src/ipa/rpi/controller/rpi/alsc.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/ipa/rpi/controller/rpi/alsc.cpp') diff --git a/src/ipa/rpi/controller/rpi/alsc.cpp b/src/ipa/rpi/controller/rpi/alsc.cpp index b7413611..8a205c60 100644 --- a/src/ipa/rpi/controller/rpi/alsc.cpp +++ b/src/ipa/rpi/controller/rpi/alsc.cpp @@ -548,7 +548,9 @@ static void calculateCrCb(const RgbyRegions &awbRegion, Array2D &cr, for (unsigned int i = 0; i < cr.size(); i++) { auto s = awbRegion.get(i); - if (s.counted <= minCount || s.val.gSum / s.counted <= minG) { + /* Do not return unreliable, or zero, colour ratio statistics. */ + if (s.counted <= minCount || s.val.gSum / s.counted <= minG || + s.val.rSum / s.counted <= minG || s.val.bSum / s.counted <= minG) { cr[i] = cb[i] = InsufficientData; continue; } -- cgit v1.2.1