colour.adaptation.chromatic_adaptation_CMCCAT2000

colour.adaptation.chromatic_adaptation_CMCCAT2000(XYZ: ArrayLike, XYZ_w: ArrayLike, XYZ_wr: ArrayLike, L_A1: FloatingOrArrayLike, L_A2: FloatingOrArrayLike, surround: colour.adaptation.cmccat2000.InductionFactors_CMCCAT2000 = VIEWING_CONDITIONS_CMCCAT2000['Average'], direction: Union[Literal['Forward', 'Inverse'], str] = 'Forward') numpy.ndarray[source]

Adapt given stimulus CIE XYZ tristimulus values using given viewing conditions.

This definition is a convenient wrapper around colour.adaptation.chromatic_adaptation_forward_CMCCAT2000() and colour.adaptation.chromatic_adaptation_inverse_CMCCAT2000().

Parameters
  • XYZ (ArrayLike) – CIE XYZ tristimulus values of the stimulus to adapt.

  • XYZ_w (ArrayLike) – Source viewing condition CIE XYZ tristimulus values of the whitepoint.

  • XYZ_wr (ArrayLike) – Target viewing condition CIE XYZ tristimulus values of the whitepoint.

  • L_A1 (FloatingOrArrayLike) – Luminance of test adapting field \(L_{A1}\) in \(cd/m^2\).

  • L_A2 (FloatingOrArrayLike) – Luminance of reference adapting field \(L_{A2}\) in \(cd/m^2\).

  • surround (colour.adaptation.cmccat2000.InductionFactors_CMCCAT2000) – Surround viewing conditions induction factors.

  • direction (Union[Literal['Forward', 'Inverse'], str]) – Chromatic adaptation direction.

Returns

Adapted stimulus CIE XYZ tristimulus values.

Return type

numpy.ndarray

Notes

Domain

Scale - Reference

Scale - 1

XYZ

[0, 100]

[0, 1]

XYZ_w

[0, 100]

[0, 1]

XYZ_wr

[0, 100]

[0, 1]

Range

Scale - Reference

Scale - 1

XYZ

[0, 100]

[0, 1]

References

[LLRH02], [WRC12a]

Examples

>>> XYZ = np.array([22.48, 22.74, 8.54])
>>> XYZ_w = np.array([111.15, 100.00, 35.20])
>>> XYZ_wr = np.array([94.81, 100.00, 107.30])
>>> L_A1 = 200
>>> L_A2 = 200
>>> chromatic_adaptation_CMCCAT2000(
...     XYZ, XYZ_w, XYZ_wr, L_A1, L_A2, direction='Forward')
... 
array([ 19.5269832...,  23.0683396...,  24.9717522...])

Using the CMCCAT2000 inverse model:

>>> XYZ = np.array([19.52698326, 23.06833960, 24.97175229])
>>> XYZ_w = np.array([111.15, 100.00, 35.20])
>>> XYZ_wr = np.array([94.81, 100.00, 107.30])
>>> L_A1 = 200
>>> L_A2 = 200
>>> chromatic_adaptation_CMCCAT2000(
...     XYZ, XYZ_w, XYZ_wr, L_A1, L_A2, direction='Inverse')
... 
array([ 22.48,  22.74,   8.54])