libcamera: utils: Raspberry Pi Camera Tuning Tool
Initial implementation of the Raspberry Pi (BCM2835) Camera Tuning Tool. All code is licensed under the BSD-2-Clause terms. Copyright (c) 2019-2020 Raspberry Pi Trading Ltd. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
0db2c8dc75
commit
c01cfe14f5
14 changed files with 3552 additions and 0 deletions
69
utils/raspberrypi/ctt/ctt_ransac.py
Normal file
69
utils/raspberrypi/ctt/ctt_ransac.py
Normal file
|
@ -0,0 +1,69 @@
|
|||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
# Copyright (C) 2019, Raspberry Pi (Trading) Limited
|
||||
#
|
||||
# ctt_ransac.py - camera tuning tool RANSAC selector for Macbeth chart locator
|
||||
|
||||
import numpy as np
|
||||
|
||||
scale = 2
|
||||
|
||||
"""
|
||||
constructs normalised macbeth chart corners for ransac algorithm
|
||||
"""
|
||||
def get_square_verts(c_err = 0.05,scale = scale):
|
||||
"""
|
||||
define macbeth chart corners
|
||||
"""
|
||||
b_bord_x,b_bord_y = scale*8.5,scale*13
|
||||
s_bord = 6*scale
|
||||
side = 41*scale
|
||||
x_max = side*6 + 5*s_bord + 2*b_bord_x
|
||||
y_max = side*4 + 3*s_bord + 2*b_bord_y
|
||||
c1 = (0,0)
|
||||
c2 = (0,y_max)
|
||||
c3 = (x_max,y_max)
|
||||
c4 = (x_max,0)
|
||||
mac_norm = np.array((c1,c2,c3,c4),np.float32)
|
||||
mac_norm = np.array([ mac_norm ])
|
||||
|
||||
square_verts = []
|
||||
square_0 = np.array(((0,0),(0,side),
|
||||
(side,side),(side,0)),np.float32)
|
||||
offset_0 = np.array((b_bord_x,b_bord_y),np.float32)
|
||||
c_off = side * c_err
|
||||
offset_cont = np.array(((c_off,c_off),(c_off,-c_off),
|
||||
(-c_off,-c_off),(-c_off,c_off)),np.float32)
|
||||
square_0 += offset_0
|
||||
square_0 += offset_cont
|
||||
"""
|
||||
define macbeth square corners
|
||||
"""
|
||||
for i in range(6):
|
||||
shift_i = np.array(((i*side,0),(i*side,0),
|
||||
(i*side,0),(i*side,0)),np.float32)
|
||||
shift_bord =np.array(((i*s_bord,0),(i*s_bord,0),
|
||||
(i*s_bord,0),(i*s_bord,0)),np.float32)
|
||||
square_i = square_0 + shift_i + shift_bord
|
||||
for j in range(4):
|
||||
shift_j = np.array(((0,j*side),(0,j*side),
|
||||
(0,j*side),(0,j*side)),np.float32)
|
||||
shift_bord = np.array(((0,j*s_bord),
|
||||
(0,j*s_bord),(0,j*s_bord),
|
||||
(0,j*s_bord)),np.float32)
|
||||
square_j = square_i + shift_j + shift_bord
|
||||
square_verts.append(square_j)
|
||||
# print('square_verts')
|
||||
# print(square_verts)
|
||||
return np.array(square_verts,np.float32),mac_norm
|
||||
|
||||
def get_square_centres(c_err = 0.05,scale=scale):
|
||||
"""
|
||||
define macbeth square centres
|
||||
"""
|
||||
verts,mac_norm = get_square_verts(c_err,scale=scale)
|
||||
|
||||
centres = np.mean(verts,axis = 1)
|
||||
# print('centres')
|
||||
# print(centres)
|
||||
return np.array(centres,np.float32)
|
Loading…
Add table
Add a link
Reference in a new issue