colour.matrix_idt#
- colour.matrix_idt(sensitivities: RGB_CameraSensitivities, illuminant: SpectralDistribution, training_data: MultiSpectralDistributions | None = None, cmfs: MultiSpectralDistributions | None = None, optimisation_factory: Callable = optimisation_factory_rawtoaces_v1, optimisation_kwargs: dict | None = None, chromatic_adaptation_transform: LiteralChromaticAdaptationTransform | str | None = 'CAT02', additional_data: Literal[True] = True) Tuple[NDArrayFloat, NDArrayFloat, NDArrayFloat, NDArrayFloat][source]#
- colour.matrix_idt(sensitivities: ..., illuminant: ..., training_data: MultiSpectralDistributions | None = None, cmfs: MultiSpectralDistributions | None = None, optimisation_factory: Callable = optimisation_factory_rawtoaces_v1, optimisation_kwargs: dict | None = None, chromatic_adaptation_transform: LiteralChromaticAdaptationTransform | str | None = 'CAT02', *, additional_data: Literal[False]) Tuple[NDArrayFloat, NDArrayFloat]
- colour.matrix_idt(sensitivities: RGB_CameraSensitivities, illuminant: SpectralDistribution, training_data: MultiSpectralDistributions | None, cmfs: MultiSpectralDistributions | None, optimisation_factory: Callable, optimisation_kwargs: dict | None, chromatic_adaptation_transform: LiteralChromaticAdaptationTransform | str | None, additional_data: Literal[False]) Tuple[NDArrayFloat, NDArrayFloat, NDArrayFloat, NDArrayFloat]
Compute an Input Device Transform (IDT) matrix for camera RGB spectral sensitivities, illuminant, training data, standard observer colour matching functions and optimisation settings according to RAW to ACES v1 and P-2013-001 procedures.
- Parameters:
sensitivities (RGB_CameraSensitivities) – Camera RGB spectral sensitivities.
illuminant (SpectralDistribution) – Illuminant spectral distribution.
training_data (MultiSpectralDistributions | None) – Training data multi-spectral distributions, defaults to using the RAW to ACES v1 190 patches.
cmfs (MultiSpectralDistributions | None) – Standard observer colour matching functions, default to the CIE 1931 2 Degree Standard Observer.
optimisation_factory (Callable) – Callable producing the objective function and the CIE XYZ to optimisation colour model function.
optimisation_kwargs (dict | None) – Parameters for
scipy.optimize.minimize()definition.chromatic_adaptation_transform (LiteralChromaticAdaptationTransform | str | None) – Chromatic adaptation transform, if None no chromatic adaptation is performed.
additional_data (bool) – If True, the XYZ and RGB tristimulus values are also returned.
- Returns:
Tuple of IDT matrix and white balance multipliers or tuple of IDT matrix, white balance multipliers, XYZ and RGB tristimulus values.
- Return type:
References
[DFI+17], [TheAoMPAaSciencesScienceaTCouncilAcademyCESACESPSubcommittee15]
Examples
Computing the IDT matrix for a CANON EOS 5DMark II and CIE Illuminant D Series D55 using the method specified in RAW to ACES v1:
>>> path = os.path.join( ... ROOT_RESOURCES_RAWTOACES, ... "CANON_EOS_5DMark_II_RGB_Sensitivities.csv", ... ) >>> sensitivities = sds_and_msds_to_msds(read_sds_from_csv_file(path).values()) >>> illuminant = SDS_ILLUMINANTS["D55"] >>> M, RGB_w = matrix_idt(sensitivities, illuminant) >>> np.around(M, 3) array([[ 0.865, -0.026, 0.161], [ 0.057, 1.123, -0.18 ], [ 0.024, -0.203, 1.179]]) >>> RGB_w array([ 2.3414154..., 1. , 1.5163375...])
The RAW to ACES v1 matrix for the same camera and optimized by Ceres Solver is as follows:
0.864994 -0.026302 0.161308 0.056527 1.122997 -0.179524 0.023683 -0.202547 1.178864
>>> M, RGB_w = matrix_idt( ... sensitivities, ... illuminant, ... optimisation_factory=optimisation_factory_Jzazbz, ... ) >>> np.around(M, 3) array([[ 0.852, -0.009, 0.158], [ 0.054, 1.122, -0.176], [ 0.023, -0.224, 1.2 ]]) >>> RGB_w array([ 2.3414154..., 1. , 1.5163375...])
>>> M, RGB_w = matrix_idt( ... sensitivities, ... illuminant, ... optimisation_factory=optimisation_factory_Oklab_15, ... ) >>> np.around(M, 3) array([[ 0.645, -0.611, 0.107, 0.736, 0.398, -0.275], [-0.159, 0.728, -0.091, 0.651, 0.01 , -0.139], [-0.172, -0.403, 1.394, 0.51 , -0.295, -0.034]]) >>> RGB_w array([ 2.3414154..., 1. , 1.5163375...])