Comprehensive Python library providing algorithms and datasets for colour science computations, including chromatic adaptation, colour appearance models, colorimetry, and spectral analysis.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Comprehensive colour temperature and correlated colour temperature (CCT) calculations supporting multiple computational methods for converting between chromaticity coordinates and temperature values.
Convert CIE xy chromaticity coordinates to correlated colour temperature using various computational methods.
def xy_to_CCT(xy: ArrayLike, method: str = "CIE Illuminant D Series") -> NDArray:
"""
Calculate correlated colour temperature from CIE xy chromaticity coordinates.
Parameters:
- xy: CIE xy chromaticity coordinates as ndarray shape (2,) or (..., 2)
- method: computation method
- "CIE Illuminant D Series" (default): CIE D-illuminant series method
- "Hernandez 1999": Hernández-Andrés, Lee, and Romero (1999) method
- "Kang 2002": Kang et al. (2002) method
- "McCamy 1992": McCamy's (1992) approximation method
Returns:
Correlated colour temperature in Kelvin
"""
# Method collection for xy to CCT conversion
XY_TO_CCT_METHODS: Dict[str, Callable]Convert correlated colour temperature to CIE xy chromaticity coordinates.
def CCT_to_xy(CCT: ArrayLike, method: str = "CIE Illuminant D Series") -> NDArray:
"""
Calculate CIE xy chromaticity coordinates from correlated colour temperature.
Parameters:
- CCT: correlated colour temperature in Kelvin
- method: computation method (same options as xy_to_CCT)
Returns:
CIE xy chromaticity coordinates as ndarray shape (2,) or (..., 2)
"""
# Method collection for CCT to xy conversion
CCT_TO_XY_METHODS: Dict[str, Callable]Convert CIE UCS uv chromaticity coordinates to correlated colour temperature with delta uv.
def uv_to_CCT(uv: ArrayLike, method: str = "Ohno 2013", **kwargs) -> NDArray:
"""
Calculate correlated colour temperature and Duv from CIE UCS uv coordinates.
Parameters:
- uv: CIE UCS uv chromaticity coordinates as ndarray shape (2,) or (..., 2)
- method: computation method
- "Ohno 2013" (default): Ohno (2013) method with Duv calculation
- "Krystek 1985": Krystek (1985) optimization method
- "Planck 1900": Planckian radiator method
- "Robertson 1968": Robertson (1968) isotemperature lines method
- **kwargs: additional method-specific parameters
Returns:
ndarray with CCT in Kelvin and Duv as [CCT, Duv]
"""
# Method collection for uv to CCT conversion
UV_TO_CCT_METHODS: Dict[str, Callable]Convert correlated colour temperature and delta uv to CIE UCS uv chromaticity coordinates.
def CCT_to_uv(CCT_D_uv: ArrayLike, method: str = "Ohno 2013", **kwargs) -> NDArray:
"""
Calculate CIE UCS uv coordinates from correlated colour temperature and Duv.
Parameters:
- CCT_D_uv: array containing [CCT, Duv] values
- method: computation method (same options as uv_to_CCT)
- **kwargs: additional method-specific parameters
Returns:
CIE UCS uv chromaticity coordinates as ndarray shape (2,) or (..., 2)
"""
# Method collection for CCT to uv conversion
CCT_TO_UV_METHODS: Dict[str, Callable]Additional temperature-related utility functions for specific applications.
def CCT_to_XYZ_Ohno2013(CCT_D_uv: ArrayLike, cmfs: XYZ_ColourMatchingFunctions = None) -> NDArray:
"""
Convert CCT and Duv to CIE XYZ tristimulus values using Ohno (2013) method.
Parameters:
- CCT_D_uv: array containing [CCT, Duv] values
- cmfs: colour matching functions
Returns:
CIE XYZ tristimulus values
"""
def XYZ_to_CCT_Ohno2013(XYZ: ArrayLike, cmfs: XYZ_ColourMatchingFunctions = None, **kwargs) -> NDArray:
"""
Convert CIE XYZ tristimulus values to CCT and Duv using Ohno (2013) method.
Parameters:
- XYZ: CIE XYZ tristimulus values
- cmfs: colour matching functions
- **kwargs: additional computation parameters
Returns:
ndarray with CCT in Kelvin and Duv as [CCT, Duv]
"""
def CCT_to_mired(CCT: ArrayLike) -> NDArray:
"""
Convert correlated colour temperature to mireds (micro reciprocal degrees).
Parameters:
- CCT: correlated colour temperature in Kelvin
Returns:
Temperature in mireds
"""
def mired_to_CCT(mireds: ArrayLike) -> NDArray:
"""
Convert mireds to correlated colour temperature.
Parameters:
- mireds: temperature in mireds
Returns:
Correlated colour temperature in Kelvin
"""import colour
import numpy as np
# Convert xy chromaticity to CCT
xy_d65 = np.array([0.31270, 0.32900]) # D65 white point
cct_d65 = colour.xy_to_CCT(xy_d65)
print(f"D65 CCT: {cct_d65:.0f}K") # ~6500K
# Convert CCT back to xy
xy_recovered = colour.CCT_to_xy(cct_d65)
print(f"Recovered xy: {xy_recovered}")
# Try different methods
cct_hernandez = colour.xy_to_CCT(xy_d65, method="Hernandez 1999")
cct_mccamy = colour.xy_to_CCT(xy_d65, method="McCamy 1992")
print(f"Hernandez 1999: {cct_hernandez:.0f}K")
print(f"McCamy 1992: {cct_mccamy:.0f}K")import colour
import numpy as np
# Convert uv coordinates to CCT with Duv
uv = np.array([0.1978, 0.3122])
cct_duv = colour.uv_to_CCT(uv, method="Ohno 2013")
print(f"CCT: {cct_duv[0]:.0f}K, Duv: {cct_duv[1]:.4f}")
# Convert CCT and Duv back to uv
uv_recovered = colour.CCT_to_uv(cct_duv, method="Ohno 2013")
print(f"Recovered uv: {uv_recovered}")
# Direct XYZ to CCT conversion
XYZ_d65 = np.array([95.047, 100.0, 108.883])
cct_duv_xyz = colour.XYZ_to_CCT_Ohno2013(XYZ_d65)
print(f"XYZ to CCT: {cct_duv_xyz[0]:.0f}K, Duv: {cct_duv_xyz[1]:.4f}")import colour
import numpy as np
# Convert CCT to mireds for color correction calculations
cct_values = np.array([2850, 5600, 6500]) # Tungsten, daylight, D65
mireds = colour.CCT_to_mired(cct_values)
print(f"CCT: {cct_values}")
print(f"Mireds: {mireds}")
# Color temperature shift calculation
shift_mireds = mireds[1] - mireds[0] # Tungsten to daylight shift
print(f"Color correction shift: {shift_mireds:.0f} mireds")
# Convert back to CCT
cct_recovered = colour.mired_to_CCT(mireds)
print(f"Recovered CCT: {cct_recovered}")import colour
import numpy as np
# Compare different methods for same chromaticity
xy_test = np.array([0.3, 0.32])
methods = ["CIE Illuminant D Series", "Hernandez 1999", "Kang 2002", "McCamy 1992"]
for method in methods:
cct = colour.xy_to_CCT(xy_test, method=method)
print(f"{method}: {cct:.0f}K")
# Compare uv methods
uv_test = np.array([0.2, 0.31])
uv_methods = ["Ohno 2013", "Krystek 1985", "Robertson 1968", "Planck 1900"]
for method in uv_methods:
result = colour.uv_to_CCT(uv_test, method=method)
if len(result) == 2:
print(f"{method}: {result[0]:.0f}K, Duv: {result[1]:.4f}")
else:
print(f"{method}: {result:.0f}K")from colour.hints import ArrayLike, NDArray, Dict, Callable, Literal
from colour.colorimetry import XYZ_ColourMatchingFunctions
# Method collections type
MethodCollection = Dict[str, Callable]
# CCT calculation result types
CCTResult = NDArray # Single CCT value
CCTDuvResult = NDArray # [CCT, Duv] pair# Master temperature functions
from colour.temperature import (
xy_to_CCT, CCT_to_xy, uv_to_CCT, CCT_to_uv,
XY_TO_CCT_METHODS, CCT_TO_XY_METHODS,
UV_TO_CCT_METHODS, CCT_TO_UV_METHODS
)
# Specialized functions
from colour.temperature import (
CCT_to_XYZ_Ohno2013, XYZ_to_CCT_Ohno2013,
CCT_to_mired, mired_to_CCT
)
# Alternative imports from main package
from colour import (
xy_to_CCT, CCT_to_xy, uv_to_CCT, CCT_to_uv,
CCT_to_mired, mired_to_CCT
)Install with Tessl CLI
npx tessl i tessl/pypi-colour-science