colour_hdri.models Package

Module Contents

colour_hdri.models.xy_to_camera_neutral(xy, CCT_calibration_illuminant_1, CCT_calibration_illuminant_2, M_color_matrix_1, M_color_matrix_2, M_camera_calibration_1, M_camera_calibration_2, analog_balance)[source]

Converts given xy white balance chromaticity coordinates to Camera Neutral coordinates.

Parameters:
  • xy (array_like) – xy white balance chromaticity coordinates.
  • CCT_calibration_illuminant_1 (numeric) – Correlated colour temperature of CalibrationIlluminant1.
  • CCT_calibration_illuminant_2 (numeric) – Correlated colour temperature of CalibrationIlluminant2.
  • M_color_matrix_1 (array_like) – ColorMatrix1 tag matrix.
  • M_color_matrix_2 (array_like) – ColorMatrix2 tag matrix.
  • M_camera_calibration_1 (array_like) – CameraCalibration1 tag matrix.
  • M_camera_calibration_2 (array_like) – CameraCalibration2 tag matrix.
  • analog_balance (array_like) – AnalogBalance tag vector.
Returns:

Camera Neutral coordinates.

Return type:

ndarray

References

[4]Adobe Systems. (2012). Translating White Balance xy Coordinates to Camera Neutral Coordinates. In Digital Negative (DNG) Specification (p. 80).

Examples

>>> M_color_matrix_1 = np.array([
...     [0.5309, -0.0229, -0.0336],
...     [-0.6241, 1.3265, 0.3337],
...     [-0.0817, 0.1215, 0.6664]])
>>> M_color_matrix_2 = np.array([
...     [0.4716, 0.0603, -0.0830],
...     [-0.7798, 1.5474, 0.2480],
...     [-0.1496, 0.1937, 0.6651]])
>>> M_camera_calibration_1 = np.identity(3)
>>> M_camera_calibration_2 = np.identity(3)
>>> analog_balance = np.ones(3)
>>> xy_to_camera_neutral(  # doctest: +ELLIPSIS
...     np.array([0.32816244, 0.34698169]),
...     2850,
...     6500,
...     M_color_matrix_1,
...     M_color_matrix_2,
...     M_camera_calibration_1,
...     M_camera_calibration_2,
...     analog_balance)
array([ 0.4130699...,  1...        ,  0.646465...])
colour_hdri.models.camera_neutral_to_xy(camera_neutral, CCT_calibration_illuminant_1, CCT_calibration_illuminant_2, M_color_matrix_1, M_color_matrix_2, M_camera_calibration_1, M_camera_calibration_2, analog_balance, epsilon=<Mock name='mock.EPSILON' id='139671442442560'>)[source]

Converts given Camera Neutral coordinates to xy white balance chromaticity coordinates.

Parameters:
  • camera_neutral (array_like) – Camera Neutral coordinates.
  • CCT_calibration_illuminant_1 (numeric) – Correlated colour temperature of CalibrationIlluminant1.
  • CCT_calibration_illuminant_2 (numeric) – Correlated colour temperature of CalibrationIlluminant2.
  • M_color_matrix_1 (array_like) – ColorMatrix1 tag matrix.
  • M_color_matrix_2 (array_like) – ColorMatrix2 tag matrix.
  • M_camera_calibration_1 (array_like) – CameraCalibration1 tag matrix.
  • M_camera_calibration_2 (array_like) – CameraCalibration2 tag matrix.
  • analog_balance (array_like) – AnalogBalance tag vector.
  • epsilon (numeric, optional) – Threshold value for computation convergence.
Returns:

xy white balance chromaticity coordinates.

Return type:

ndarray

Raises:

RuntimeError – If the given Camera Neutral coordinates did not converge to xy white balance chromaticity coordinates.

References

[5]Adobe Systems. (2012). Translating Camera Neutral Coordinates to White Balance xy Coordinates. In Digital Negative (DNG) Specification (pp. 80–81).

Examples

>>> M_color_matrix_1 = np.array([
...     [0.5309, -0.0229, -0.0336],
...     [-0.6241, 1.3265, 0.3337],
...     [-0.0817, 0.1215, 0.6664]])
>>> M_color_matrix_2 = np.array([
...     [0.4716, 0.0603, -0.0830],
...     [-0.7798, 1.5474, 0.2480],
...     [-0.1496, 0.1937, 0.6651]])
>>> M_camera_calibration_1 = np.identity(3)
>>> M_camera_calibration_2 = np.identity(3)
>>> analog_balance = np.ones(3)
>>> camera_neutral_to_xy(  # doctest: +ELLIPSIS
...     np.array([0.413070, 1.000000, 0.646465]),
...     2850,
...     6500,
...     M_color_matrix_1,
...     M_color_matrix_2,
...     M_camera_calibration_1,
...     M_camera_calibration_2,
...     analog_balance)
array([ 0.3281624...,  0.3469816...])
colour_hdri.models.XYZ_to_camera_space_matrix(xy, CCT_calibration_illuminant_1, CCT_calibration_illuminant_2, M_color_matrix_1, M_color_matrix_2, M_camera_calibration_1, M_camera_calibration_2, analog_balance)[source]

Returns the CIE XYZ to Camera Space matrix for given xy white balance chromaticity coordinates. [4]

Parameters:
  • xy (array_like) – xy white balance chromaticity coordinates.
  • CCT_calibration_illuminant_1 (numeric) – Correlated colour temperature of CalibrationIlluminant1.
  • CCT_calibration_illuminant_2 (numeric) – Correlated colour temperature of CalibrationIlluminant2.
  • M_color_matrix_1 (array_like) – ColorMatrix1 tag matrix.
  • M_color_matrix_2 (array_like) – ColorMatrix2 tag matrix.
  • M_camera_calibration_1 (array_like) – CameraCalibration1 tag matrix.
  • M_camera_calibration_2 (array_like) – CameraCalibration2 tag matrix.
  • analog_balance (array_like) – AnalogBalance tag vector.
Returns:

CIE XYZ to Camera Space matrix.

Return type:

ndarray

Notes

  • The reference illuminant is D50 as defined per ADOBE_DNG_XYZ_ILLUMINANT attribute.

Examples

>>> M_color_matrix_1 = np.array([
...     [0.5309, -0.0229, -0.0336],
...     [-0.6241, 1.3265, 0.3337],
...     [-0.0817, 0.1215, 0.6664]])
>>> M_color_matrix_2 = np.array([
...     [0.4716, 0.0603, -0.0830],
...     [-0.7798, 1.5474, 0.2480],
...     [-0.1496, 0.1937, 0.6651]])
>>> M_camera_calibration_1 = np.identity(3)
>>> M_camera_calibration_2 = np.identity(3)
>>> analog_balance = np.ones(3)
>>> XYZ_to_camera_space_matrix(  # doctest: +ELLIPSIS
...     np.array([0.34510414, 0.35162252]),
...     2850,
...     6500,
...     M_color_matrix_1,
...     M_color_matrix_2,
...     M_camera_calibration_1,
...     M_camera_calibration_2,
...     analog_balance)
array([[ 0.4854908...,  0.0408106..., -0.0714282...],
       [-0.7433278...,  1.4956549...,  0.2680749...],
       [-0.1336946...,  0.1767874...,  0.6654045...]])
colour_hdri.models.camera_space_to_XYZ_matrix(xy, CCT_calibration_illuminant_1, CCT_calibration_illuminant_2, M_color_matrix_1, M_color_matrix_2, M_camera_calibration_1, M_camera_calibration_2, analog_balance, M_forward_matrix_1, M_forward_matrix_2, chromatic_adaptation_transform='Bradford')[source]

Returns the Camera Space to CIE XYZ matrix for given xy white balance chromaticity coordinates.

Parameters:
  • xy (array_like) – xy white balance chromaticity coordinates.
  • CCT_calibration_illuminant_1 (numeric) – Correlated colour temperature of CalibrationIlluminant1.
  • CCT_calibration_illuminant_2 (numeric) – Correlated colour temperature of CalibrationIlluminant2.
  • M_color_matrix_1 (array_like) – ColorMatrix1 tag matrix.
  • M_color_matrix_2 (array_like) – ColorMatrix2 tag matrix.
  • M_camera_calibration_1 (array_like) – CameraCalibration1 tag matrix.
  • M_camera_calibration_2 (array_like) – CameraCalibration2 tag matrix.
  • analog_balance (array_like) – AnalogBalance tag vector.
  • M_forward_matrix_1 (array_like) – ForwardMatrix1 tag matrix.
  • M_forward_matrix_2 (array_like) – ForwardMatrix2 tag matrix.
  • chromatic_adaptation_transform (unicode, optional) – {‘CAT02’, ‘XYZ Scaling’, ‘Von Kries’, ‘Bradford’, ‘Sharp’, ‘Fairchild’, ‘CMCCAT97’, ‘CMCCAT2000’, ‘CAT02_BRILL_CAT’, ‘Bianco’, ‘Bianco PC’}, Chromatic adaptation transform.
Returns:

Camera Space to CIE XYZ matrix.

Return type:

ndarray

Notes

  • The reference illuminant is D50 as defined per ADOBE_DNG_XYZ_ILLUMINANT attribute.

References

[6]Adobe Systems. (2012). Camera to XYZ (D50) Transform. In Digital Negative (DNG) Specification (p. 81).

Examples

>>> M_color_matrix_1 = np.array([
...     [0.5309, -0.0229, -0.0336],
...     [-0.6241, 1.3265, 0.3337],
...     [-0.0817, 0.1215, 0.6664]])
>>> M_color_matrix_2 = np.array([
...     [0.4716, 0.0603, -0.0830],
...     [-0.7798, 1.5474, 0.2480],
...     [-0.1496, 0.1937, 0.6651]])
>>> M_camera_calibration_1 = np.identity(3)
>>> M_camera_calibration_2 = np.identity(3)
>>> analog_balance = np.ones(3)
>>> M_forward_matrix_1 = np.array([
...     [0.8924, -0.1041, 0.1760],
...     [0.4351, 0.6621, -0.0972],
...     [0.0505, -0.1562, 0.9308]])
>>> M_forward_matrix_2 = np.array([
...     [0.8924, -0.1041, 0.1760],
...     [0.4351, 0.6621, -0.0972],
...     [0.0505, -0.1562, 0.9308]])
>>> camera_space_to_XYZ_matrix(  # doctest: +ELLIPSIS
...     np.array([0.32816244, 0.34698169]),
...     2850,
...     6500,
...     M_color_matrix_1,
...     M_color_matrix_2,
...     M_camera_calibration_1,
...     M_camera_calibration_2,
...     analog_balance,
...     M_forward_matrix_1,
...     M_forward_matrix_2)
array([[ 2.1604087..., -0.1041...    ,  0.2722498...],
       [ 1.0533324...,  0.6621...    , -0.1503561...],
       [ 0.1222553..., -0.1562...    ,  1.4398304...]])
colour_hdri.models.camera_space_to_RGB(RGB, M_XYZ_to_camera_space, RGB_to_XYZ_matrix)[source]

Converts given RGB array from camera space to given RGB colourspace.

Parameters:
  • RGB (array_like) – Camera space RGB colourspace array.
  • XYZ_to_camera_matrix (array_like) – Matrix converting from CIE XYZ tristimulus values to camera space.
  • RGB_to_XYZ_matrix (array_like) – Matrix converting from RGB colourspace to CIE XYZ tristimulus values.
Returns:

RGB colourspace array.

Return type:

ndarray

Examples

>>> RGB = np.array([0.80660, 0.81638, 0.65885])
>>> M_XYZ_to_camera_space = np.array([
...     [0.47160000, 0.06030000, -0.08300000],
...     [-0.77980000, 1.54740000, 0.24800000],
...     [-0.14960000, 0.19370000, 0.66510000]])
>>> RGB_to_XYZ_matrix = np.array([
...     [0.41238656, 0.35759149, 0.18045049],
...     [0.21263682, 0.71518298, 0.07218020],
...     [0.01933062, 0.11919716, 0.95037259]])
>>> camera_space_to_RGB(
...     RGB,
...     M_XYZ_to_camera_space,
...     RGB_to_XYZ_matrix)  # doctest: +ELLIPSIS
array([ 0.7564180...,  0.8683192...,  0.6044589...])
colour_hdri.models.camera_space_to_sRGB(RGB, M_XYZ_to_camera_space)[source]

Converts given RGB array from camera space to sRGB colourspace.

Parameters:
  • RGB (array_like) – Camera space RGB colourspace array.
  • M_XYZ_to_camera_space (array_like) – Matrix converting from CIE XYZ tristimulus values to camera space.
Returns:

sRGB colourspace array.

Return type:

ndarray

Examples

>>> RGB = np.array([0.80660, 0.81638, 0.65885])
>>> M_XYZ_to_camera_space = np.array([
...     [0.47160000, 0.06030000, -0.08300000],
...     [-0.77980000, 1.54740000, 0.24800000],
...     [-0.14960000, 0.19370000, 0.66510000]])
>>> camera_space_to_sRGB(RGB, M_XYZ_to_camera_space)  # doctest: +ELLIPSIS
array([ 0.7564350...,  0.8683155...,  0.6044706...])