libtuning: Add initial AWB module

This AWB module uses the awb function from Raspberry Pi to calculate the
needed white balance gains per colour temperature. It stores these gains
in the tuning file.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Stefan Klug 2024-12-19 18:57:24 +01:00
parent 731cc02e79
commit b1ec488f1b
3 changed files with 69 additions and 0 deletions

View file

@ -0,0 +1,36 @@
# SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright (C) 2024, Ideas On Board
import logging
from ..module import Module
from libtuning.ctt_awb import awb
import numpy as np
logger = logging.getLogger(__name__)
class AWB(Module):
type = 'awb'
hr_name = 'AWB (Base)'
out_name = 'GenericAWB'
def __init__(self, *, debug: list):
super().__init__()
self.debug = debug
def do_calculation(self, images):
logger.info('Starting AWB calculation')
imgs = [img for img in images if img.macbeth is not None]
gains, _, _ = awb(imgs, None, None, False)
gains = np.reshape(gains, (-1, 3))
return [{
'ct': int(v[0]),
'gains': [float(1.0 / v[1]), float(1.0 / v[2])]
} for v in gains]