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:
parent
731cc02e79
commit
b1ec488f1b
3 changed files with 69 additions and 0 deletions
6
utils/tuning/libtuning/modules/awb/__init__.py
Normal file
6
utils/tuning/libtuning/modules/awb/__init__.py
Normal file
|
@ -0,0 +1,6 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#
|
||||
# Copyright (C) 2024, Ideas On Board
|
||||
|
||||
from libtuning.modules.awb.awb import AWB
|
||||
from libtuning.modules.awb.rkisp1 import AWBRkISP1
|
36
utils/tuning/libtuning/modules/awb/awb.py
Normal file
36
utils/tuning/libtuning/modules/awb/awb.py
Normal 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]
|
27
utils/tuning/libtuning/modules/awb/rkisp1.py
Normal file
27
utils/tuning/libtuning/modules/awb/rkisp1.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#
|
||||
# Copyright (C) 2024, Ideas On Board
|
||||
#
|
||||
# AWB module for tuning rkisp1
|
||||
|
||||
from .awb import AWB
|
||||
|
||||
import libtuning as lt
|
||||
|
||||
|
||||
class AWBRkISP1(AWB):
|
||||
hr_name = 'AWB (RkISP1)'
|
||||
out_name = 'Awb'
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
||||
def validate_config(self, config: dict) -> bool:
|
||||
return True
|
||||
|
||||
def process(self, config: dict, images: list, outputs: dict) -> dict:
|
||||
output = {}
|
||||
|
||||
output['colourGains'] = self.do_calculation(images)
|
||||
|
||||
return output
|
Loading…
Add table
Add a link
Reference in a new issue