Created
April 27, 2025 12:52
-
-
Save sherwoac/65c14e819fed1a081d5eba2b62973384 to your computer and use it in GitHub Desktop.
k4a camera intrinsics
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import json | |
import numpy as np | |
class Intrinsics(object): | |
def __init__(self, json_file): | |
assert os.path.isfile(json_file), f'{json_file=} not found' | |
with open(json_file, 'r') as f: | |
intrinsics_data = json.load(f) | |
if 'CalibrationInformation' in intrinsics_data: | |
self._intrinsics_data = Intrinsics.k4a_intrinsics(intrinsics_data) | |
# turn it back into arrays | |
self._intrinsics_data = {k: np.array(v) for k, v in intrinsics_data.items()} | |
def __get_item__(self, key): | |
assert key in self._intrinsics_data, f'{key=} not in _intrinsics_data' | |
return self._intrinsics_data[key] | |
@staticmethod | |
def k4a_intrinsics(k4a_json_data): | |
""" cf: https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/examples/calibration_registration/camera_tools.py#L151 | |
intrinsics = [camera_matrix[0][2]/img_size[0][0], #Px | |
camera_matrix[1][2]/img_size[1][0], #Py | |
camera_matrix[0][0]/img_size[0][0], #Fx | |
camera_matrix[1][1]/img_size[1][0], #Fy | |
dist[0][0], #K1 | |
dist[1][0], #K2 | |
dist[4][0], #K3 | |
dist[5][0], #K4 | |
dist[6][0], #K5 | |
dist[7][0], #K6 | |
0, #Cx always Zero. (BrownConrady) | |
0, #Cy always Zero. (BrownConrady) | |
dist[3][0], #P2/Tx | |
dist[2][0]] #P1/Ty | |
""" | |
bc_model_parameters = k4a_json_data['CalibrationInformation']['Cameras'][1]['Intrinsics']['ModelParameters'] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment