Skip to content

Commit

Permalink
utils: raspberrypi: ctt: Add alsc_only method
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
will-v-pi authored and pinchartl committed Aug 2, 2022
1 parent 91cf84f commit 79b4c1c
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 5 deletions.
34 changes: 34 additions & 0 deletions utils/raspberrypi/ctt/alsc_only.py
Original file line number Diff line number Diff line change
@@ -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)
17 changes: 12 additions & 5 deletions utils/raspberrypi/ctt/ctt.py
Original file line number Diff line number Diff line change
Expand Up @@ -668,18 +668,22 @@ def add_imgs(self, directory, mac_config, blacklevel=-1):
- incorrect filename/extension
- images from different cameras
"""
def check_imgs(self):
def check_imgs(self, macbeth=True):
self.log += '\n\nImages found:'
self.log += '\nMacbeth : {}'.format(len(self.imgs))
self.log += '\nALSC : {} '.format(len(self.imgs_alsc))
self.log += '\n\nCamera metadata'
"""
check usable images found
"""
if len(self.imgs) == 0:
if len(self.imgs) == 0 and macbeth:
print('\nERROR: No usable macbeth chart images found')
self.log += '\nERROR: No usable macbeth chart images found'
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...
"""
Expand Down Expand Up @@ -708,7 +712,7 @@ def check_imgs(self):
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
"""
Expand Down Expand Up @@ -770,6 +774,8 @@ def run_ctt(json_output, directory, config, log_output):
try:
Cam = Camera(json_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.plot = plot
Cam.add_imgs(directory, mac_config, blacklevel)
Expand All @@ -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
chart in the image rather than using calibration data
"""
if Cam.check_imgs():
Cam.json['rpi.black_level']['black_level'] = Cam.blacklevel_16
if Cam.check_imgs(macbeth=not alsc_only):
if not alsc_only:
Cam.json['rpi.black_level']['black_level'] = Cam.blacklevel_16
Cam.json_remove(disable)
print('\nSTARTING CALIBRATIONS')
Cam.alsc_cal(luminance_strength, do_alsc_colour)
Expand Down

0 comments on commit 79b4c1c

Please sign in to comment.