utils: raspberrypi: ctt: Add alsc_only method
The ctt would not work if only passed alsc images. Add alsc_only.py to run alsc calibration only, and modify check_imgs to allow for no macbeth chart images. Example usage would be ./alsc_only.py -i tuning-images/ -o sensor.json with the same optional arguments as the original ctt. Signed-off-by: William Vinnicombe <william.vinnicombe@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
91cf84fd4e
commit
79b4c1c51e
2 changed files with 46 additions and 5 deletions
34
utils/raspberrypi/ctt/alsc_only.py
Executable file
34
utils/raspberrypi/ctt/alsc_only.py
Executable file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
#
|
||||||
|
# Copyright (C) 2022, Raspberry Pi (Trading) Limited
|
||||||
|
#
|
||||||
|
# alsc_only.py - alsc tuning tool
|
||||||
|
|
||||||
|
from ctt import *
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
"""
|
||||||
|
initialise calibration
|
||||||
|
"""
|
||||||
|
if len(sys.argv) == 1:
|
||||||
|
print("""
|
||||||
|
Pisp Camera Tuning Tool version 1.0
|
||||||
|
|
||||||
|
Required Arguments:
|
||||||
|
'-i' : Calibration image directory.
|
||||||
|
'-o' : Name of output json file.
|
||||||
|
|
||||||
|
Optional Arguments:
|
||||||
|
'-c' : Config file for the CTT. If not passed, default parameters used.
|
||||||
|
'-l' : Name of output log file. If not passed, 'ctt_log.txt' used.
|
||||||
|
""")
|
||||||
|
quit(0)
|
||||||
|
else:
|
||||||
|
"""
|
||||||
|
parse input arguments
|
||||||
|
"""
|
||||||
|
json_output, directory, config, log_output = parse_input()
|
||||||
|
run_ctt(json_output, directory, config, log_output, alsc_only=True)
|
|
@ -668,7 +668,7 @@ class Camera:
|
||||||
- incorrect filename/extension
|
- incorrect filename/extension
|
||||||
- images from different cameras
|
- images from different cameras
|
||||||
"""
|
"""
|
||||||
def check_imgs(self):
|
def check_imgs(self, macbeth=True):
|
||||||
self.log += '\n\nImages found:'
|
self.log += '\n\nImages found:'
|
||||||
self.log += '\nMacbeth : {}'.format(len(self.imgs))
|
self.log += '\nMacbeth : {}'.format(len(self.imgs))
|
||||||
self.log += '\nALSC : {} '.format(len(self.imgs_alsc))
|
self.log += '\nALSC : {} '.format(len(self.imgs_alsc))
|
||||||
|
@ -676,10 +676,14 @@ class Camera:
|
||||||
"""
|
"""
|
||||||
check usable images found
|
check usable images found
|
||||||
"""
|
"""
|
||||||
if len(self.imgs) == 0:
|
if len(self.imgs) == 0 and macbeth:
|
||||||
print('\nERROR: No usable macbeth chart images found')
|
print('\nERROR: No usable macbeth chart images found')
|
||||||
self.log += '\nERROR: No usable macbeth chart images found'
|
self.log += '\nERROR: No usable macbeth chart images found'
|
||||||
return 0
|
return 0
|
||||||
|
elif len(self.imgs) == 0 and len(self.imgs_alsc) == 0:
|
||||||
|
print('\nERROR: No usable images found')
|
||||||
|
self.log += '\nERROR: No usable images found'
|
||||||
|
return 0
|
||||||
"""
|
"""
|
||||||
Double check that every image has come from the same camera...
|
Double check that every image has come from the same camera...
|
||||||
"""
|
"""
|
||||||
|
@ -708,7 +712,7 @@ class Camera:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def run_ctt(json_output, directory, config, log_output):
|
def run_ctt(json_output, directory, config, log_output, alsc_only=False):
|
||||||
"""
|
"""
|
||||||
check input files are jsons
|
check input files are jsons
|
||||||
"""
|
"""
|
||||||
|
@ -770,6 +774,8 @@ def run_ctt(json_output, directory, config, log_output):
|
||||||
try:
|
try:
|
||||||
Cam = Camera(json_output)
|
Cam = Camera(json_output)
|
||||||
Cam.log_user_input(json_output, directory, config, log_output)
|
Cam.log_user_input(json_output, directory, config, log_output)
|
||||||
|
if alsc_only:
|
||||||
|
disable = set(Cam.json.keys()).symmetric_difference({"rpi.alsc"})
|
||||||
Cam.disable = disable
|
Cam.disable = disable
|
||||||
Cam.plot = plot
|
Cam.plot = plot
|
||||||
Cam.add_imgs(directory, mac_config, blacklevel)
|
Cam.add_imgs(directory, mac_config, blacklevel)
|
||||||
|
@ -783,8 +789,9 @@ def run_ctt(json_output, directory, config, log_output):
|
||||||
ccm also technically does an awb but it measures this from the macbeth
|
ccm also technically does an awb but it measures this from the macbeth
|
||||||
chart in the image rather than using calibration data
|
chart in the image rather than using calibration data
|
||||||
"""
|
"""
|
||||||
if Cam.check_imgs():
|
if Cam.check_imgs(macbeth=not alsc_only):
|
||||||
Cam.json['rpi.black_level']['black_level'] = Cam.blacklevel_16
|
if not alsc_only:
|
||||||
|
Cam.json['rpi.black_level']['black_level'] = Cam.blacklevel_16
|
||||||
Cam.json_remove(disable)
|
Cam.json_remove(disable)
|
||||||
print('\nSTARTING CALIBRATIONS')
|
print('\nSTARTING CALIBRATIONS')
|
||||||
Cam.alsc_cal(luminance_strength, do_alsc_colour)
|
Cam.alsc_cal(luminance_strength, do_alsc_colour)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue