Source code for colorex.cex_constants

# Copyright 2021 Alex Harvill
# SPDX-License-Identifier: Apache-2.0
'colorex constants'
import enum
import numpy as np

REC_709_LUMA_WEIGHTS = (0.2126, 0.7152, 0.0722)

MAX_COMPONENT_VALUE = np.finfo(np.float32).max
SMALL_COMPONENT_VALUE = 1.0e-7
XYZ_D65_2A_WHITEPOINT = np.array([0.95047, 1.0, 1.08883], dtype=np.float32)

#https://en.wikipedia.org/wiki/SRGB#The_forward_transformation_(CIE_XYZ_to_sRGB)
M_RGB_TO_XYZ = np.array([
    [0.412453, 0.357580, 0.180423],
    [0.212671, 0.715160, 0.072169],
    [0.019334, 0.119193, 0.950227],
])
M_XYZ_TO_RGB = np.linalg.inv(M_RGB_TO_XYZ)
M_RGB_TO_XYZ_T = np.ascontiguousarray(M_RGB_TO_XYZ.T)
M_XYZ_TO_RGB_T = np.ascontiguousarray(M_XYZ_TO_RGB.T)

#https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.601_conversion
YCBCR_MIN, YCBCR_YMAX, YCBCR_CMAX, YCBCR_OFFSET = 16.0, 235.0, 240.0, 128.0
M_RGB_TO_YCBCR = np.array([
    [65.481, 128.553, 24.966],
    [-37.797, -74.203, 112.0],
    [112.0, -93.786, -18.214],
])
M_YCBCR_TO_RGB = np.linalg.inv(M_RGB_TO_YCBCR)
M_RGB_TO_YCBCR_T = np.ascontiguousarray(M_RGB_TO_YCBCR.T)
M_YCBCR_TO_RGB_T = np.ascontiguousarray(M_YCBCR_TO_RGB.T)

D50_TO_D65 = np.eye(3, dtype=np.float32)
D50_TO_D65[0, 0] = 0.85027254
D50_TO_D65[1, 1] = 1.02490389
D50_TO_D65[2, 2] = 1.38509774
D50_TO_D65_T = np.ascontiguousarray(D50_TO_D65.T)


[docs]class Space(enum.Enum): 'named color spaces' RGB = 0 SRGB = 1 XYZ = 2 xyY = 3 LAB = 4 YCbCr = 5 LUM = 6
S = Space