colour.Hellwig2022_to_XYZ#

colour.Hellwig2022_to_XYZ(specification: Annotated[CAM_Specification_Hellwig2022, 100, 100, 360, 100, 100, 100, 400, 100, 100], XYZ_w: Annotated[_Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | bytes | str | _NestedSequence[complex | bytes | str], 100], L_A: ArrayLike, Y_b: ArrayLike, surround: InductionFactors_CIECAM02 | InductionFactors_Hellwig2022 = VIEWING_CONDITIONS_HELLWIG2022['Average'], discount_illuminant: bool = False) Annotated[ndarray[tuple[Any, ...], dtype[float16 | float32 | float64]], 100][source]#

Convert the Hellwig and Fairchild (2022) colour appearance model specification to CIE XYZ tristimulus values.

This implementation supports the Helmholtz-Kohlrausch effect extension from [HSF22].

Parameters:
  • specification (Annotated[CAM_Specification_Hellwig2022, (100, 100, 360, 100, 100, 100, 400, 100, 100)]) – Hellwig and Fairchild (2022) colour appearance model specification. Correlate of lightness \(J\), correlate of chroma \(C\) or correlate of colourfulness \(M\) and hue angle \(h\) in degrees must be specified, e.g., \(JCh\) or \(JMh\).

  • XYZ_w (Annotated[_Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | complex | bytes | str | _NestedSequence[complex | bytes | str], 100]) – CIE XYZ tristimulus values of reference white.

  • L_A (ArrayLike) – Adapting field luminance \(L_A\) in \(cd/m^2\), (often taken to be 20% of the luminance of a white object in the scene).

  • Y_b (ArrayLike) – Luminous factor of background \(Y_b\) such as \(Y_b = 100 \times L_b / L_w\) where \(L_w\) is the luminance of the light source and \(L_b\) is the luminance of the background. For viewing images, \(Y_b\) can be the average \(Y\) value for the pixels in the entire image, or frequently, a \(Y\) value of 20, approximating an \(L^*\) of 50 is used.

  • surround (InductionFactors_CIECAM02 | InductionFactors_Hellwig2022) – Surround viewing conditions.

  • discount_illuminant (bool) – Discount the illuminant.

Returns:

CIE XYZ tristimulus values.

Return type:

numpy.ndarray

Raises:

ValueError – If neither \(C\) or \(M\) correlates have been defined in the specification argument.

Notes

Domain

Scale - Reference

Scale - 1

specification.J

100

1

specification.C

100

1

specification.h

360

1

specification.s

100

1

specification.Q

100

1

specification.M

100

1

specification.H

400

1

specification.J_HK

100

1

specification.Q_HK

100

1

XYZ_w

100

1

Range

Scale - Reference

Scale - 1

XYZ

100

1

References

[FH22], [HF22], [HSF22]

Examples

>>> specification = CAM_Specification_Hellwig2022(
...     J=41.731207905126638, C=0.025763615829912909, h=217.06795976739301
... )
>>> XYZ_w = np.array([95.05, 100.00, 108.88])
>>> L_A = 318.31
>>> Y_b = 20.0
>>> Hellwig2022_to_XYZ(specification, XYZ_w, L_A, Y_b)
...
array([ 19.01...,  20...  ,  21.78...])
>>> specification = CAM_Specification_Hellwig2022(
...     J_HK=41.880278283880095,
...     C=0.025763615829912909,
...     h=217.06795976739301,
... )
>>> Hellwig2022_to_XYZ(specification, XYZ_w, L_A, Y_b)
...
array([ 19.01...,  20...  ,  21.78...])