in src/open_vp_cal/core/calibrate.py [0:0]
def convert_samples_to_required_cs(
camera_conversion_cat: Union[str, constants.CAT],
input_plate_cs: RGB_Colourspace,
measured_samples: Dict, reference_samples: Dict, native_camera_gamut_cs: RGB_Colourspace,
decoupled_lens_white_samples: np.array, peak_lum: float) -> Tuple:
""" Convert the measured and reference samples to the required colour spaces.
We also inject synthetic values for the 18% grey which helps us with the calibration
Args:
camera_conversion_cat: The colour conversion cat we want to use
input_plate_cs: The colour space of the input plate we measured the samples from
measured_samples: The measured samples from the input plate
native_camera_gamut_cs: The native colour space of the camera, used to capture the input plate
decoupled_lens_white_samples: An additional sample of the decoupled white
reference_samples: The reference samples for the calibration process displayed on the led wall
peak_lum: The peak luminance of the led wall
Returns: Tuple containing the converted samples
"""
eotf_signal_values = list(measured_samples[Measurements.EOTF_RAMP_SIGNAL])
closest_18_percent_index = find_closest_below(eotf_signal_values, peak_lum * 0.18)
eotf_signal_values.insert(closest_18_percent_index, peak_lum * 0.18)
grey_measurements_native_camera_gamut = colour.RGB_to_RGB(
measured_samples[Measurements.GREY], input_plate_cs, native_camera_gamut_cs, camera_conversion_cat
)
max_white_camera_native_gamut = colour.RGB_to_RGB(
measured_samples[Measurements.MAX_WHITE], input_plate_cs, native_camera_gamut_cs, camera_conversion_cat
)
# Get The Macbeth Samples And Convert To Camera Native
macbeth_measurements_camera_native_gamut = colour.RGB_to_RGB(
measured_samples[Measurements.MACBETH], input_plate_cs, native_camera_gamut_cs, camera_conversion_cat
)
# Combine the primaries and white samples to give us RGBW in the input plate gamut space
rgbw_measurements_input_plate_gamut = np.concatenate(
(measured_samples[Measurements.DESATURATED_RGB], [measured_samples[Measurements.GREY]])
)
rgbw_measurements_camera_native_gamut = colour.RGB_to_RGB(
rgbw_measurements_input_plate_gamut, input_plate_cs, native_camera_gamut_cs, camera_conversion_cat
)
eotf_ramp_camera_native_gamut = colour.RGB_to_RGB(
measured_samples[Measurements.EOTF_RAMP], input_plate_cs, native_camera_gamut_cs, camera_conversion_cat
)
eotf_ramp_camera_native_gamut = np.insert(
eotf_ramp_camera_native_gamut, closest_18_percent_index, grey_measurements_native_camera_gamut,
axis=0
)
rgbw_reference_samples = np.concatenate(
(reference_samples[Measurements.DESATURATED_RGB], [reference_samples[Measurements.GREY]])
)
macbeth_reference_samples = reference_samples[Measurements.MACBETH]
eotf_ramp_reference_samples = list(reference_samples[Measurements.EOTF_RAMP])
eotf_ramp_reference_samples.insert(closest_18_percent_index, [peak_lum * 0.18, peak_lum * 0.18, peak_lum * 0.18])
decoupled_lens_white_samples_camera_native_gamut = None
if decoupled_lens_white_samples:
decoupled_lens_white_samples_camera_native_gamut = colour.RGB_to_RGB(
decoupled_lens_white_samples, input_plate_cs, native_camera_gamut_cs, camera_conversion_cat
)
return (
eotf_ramp_camera_native_gamut,
grey_measurements_native_camera_gamut,
macbeth_measurements_camera_native_gamut,
max_white_camera_native_gamut,
rgbw_measurements_camera_native_gamut,
eotf_signal_values,
decoupled_lens_white_samples_camera_native_gamut,
rgbw_reference_samples,
macbeth_reference_samples,
eotf_ramp_reference_samples
)