# colour.colorimetry.sd_to_XYZ_integration¶

colour.colorimetry.sd_to_XYZ_integration(sd, cmfs=XYZ_ColourMatchingFunctions(name='CIE 1931 2 Degree Standard Observer', ...), illuminant=SpectralDistribution(name='1 Constant', ...), k=None)[source]

Converts given spectral distribution to CIE XYZ tristimulus values using given colour matching functions and illuminant according to classical integration method.

Parameters: sd (SpectralDistribution) – Spectral distribution. cmfs (XYZ_ColourMatchingFunctions) – Standard observer colour matching functions. illuminant (SpectralDistribution, optional) – Illuminant spectral distribution. k (numeric, optional) – Normalisation constant $$k$$. For reflecting or transmitting object colours, $$k$$ is chosen so that $$Y = 100$$ for objects for which the spectral reflectance factor $$R(\lambda)$$ of the object colour or the spectral transmittance factor $$\tau(\lambda)$$ of the object is equal to unity for all wavelengths. For self-luminous objects and illuminants, the constants $$k$$ is usually chosen on the grounds of convenience. If, however, in the CIE 1931 standard colorimetric system, the $$Y$$ value is required to be numerically equal to the absolute value of a photometric quantity, the constant, $$k$$, must be put equal to the numerical value of $$K_m$$, the maximum spectral luminous efficacy (which is equal to 683 $$lm\cdot W^{-1}$$) and $$\Phi_\lambda(\lambda)$$ must be the spectral concentration of the radiometric quantity corresponding to the photometric quantity required. CIE XYZ tristimulus values. ndarray, (3,)

Notes

Range Scale - Reference Scale - 1
XYZ [0, 100] [0, 1]

References

[WS00f]

Examples

>>> from colour import (
...     CMFS, ILLUMINANTS_SDS, SpectralDistribution)
>>> cmfs = CMFS['CIE 1931 2 Degree Standard Observer']
>>> data = {
...     400: 0.0641,
...     420: 0.0645,
...     440: 0.0562,
...     460: 0.0537,
...     480: 0.0559,
...     500: 0.0651,
...     520: 0.0705,
...     540: 0.0772,
...     560: 0.0870,
...     580: 0.1128,
...     600: 0.1360,
...     620: 0.1511,
...     640: 0.1688,
...     660: 0.1996,
...     680: 0.2397,
...     700: 0.2852
... }
>>> sd = SpectralDistribution(data)
>>> illuminant = ILLUMINANTS_SDS['D65']
>>> sd_to_XYZ_integration(sd, cmfs, illuminant)
... # doctest: +ELLIPSIS
array([ 10.8401846...,   9.6837311...,   6.2120912...])