[PATCH 3/3] ipa: ipu3: Use a Y histogram instead of green
Daniel Scally
dan.scally at ideasonboard.com
Thu Apr 18 14:46:32 CEST 2024
The IPU3 IPA module uses a green histogram for the AGC algorithm's
constraint mode calculations. Switch instead to a luminance histogram
calculated using the Rec.601 coefficients.
Signed-off-by: Daniel Scally <dan.scally at ideasonboard.com>
---
src/ipa/ipu3/algorithms/agc.cpp | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
index a59b73fb..76d2bb60 100644
--- a/src/ipa/ipu3/algorithms/agc.cpp
+++ b/src/ipa/ipu3/algorithms/agc.cpp
@@ -152,18 +152,19 @@ Histogram Agc::parseStatistics(const ipu3_uapi_stats_3a *stats,
reinterpret_cast<const ipu3_uapi_awb_set_item *>(
&stats->awb_raw_buffer.meta_data[cellPosition]);
- rgbTriples_.push_back({
- cell->R_avg,
- (cell->Gr_avg + cell->Gb_avg) / 2,
- cell->B_avg
- });
+ uint8_t G_avg = (cell->Gr_avg + cell->Gb_avg) / 2;
+
+ rgbTriples_.push_back({cell->R_avg, G_avg, cell->B_avg});
/*
- * Store the average green value to estimate the
+ * Store the average luminance value to estimate the
* brightness. Even the overexposed pixels are
* taken into account.
*/
- hist[(cell->Gr_avg + cell->Gb_avg) / 2]++;
+ uint8_t y = (cell->R_avg * .299) +
+ (G_avg * .587) +
+ (cell->B_avg * .114);
+ hist[y]++;
}
}
--
2.34.1
More information about the libcamera-devel
mailing list