我需要从色度图中获取 CIE x 和 y 坐标。我尝试了以下方法:取一个 RGB 点,转换为 sRGB,绘制它。分别将RGB转换为xyY,比较结果。
import numpy as np
from colour.plotting import *
import colour
rgb = np.array([100,50,200])
RGB = colour.models.eotf_inverse_sRGB(rgb / 255)
plot_RGB_chromaticities_in_chromaticity_diagram_CIE1931(RGB)
所以我正在寻找的坐标在 [0.3, 0.26] 左右。据我了解,要获得它们,我需要将 RGB 转换为 XYZ,并获取 XY 坐标。我找到了以下解决方案:
illuminant_RGB = np.array([0.31270, 0.32900])
illuminant_XYZ = np.array([0.34570, 0.35850])
chromatic_adaptation_transform = 'Bradford'
RGB_to_XYZ_matrix = np.array([[0.41240000, 0.35760000, 0.18050000],
[0.21260000, 0.71520000, 0.07220000],
[0.01930000, 0.11920000, 0.95050000]])
result = colour.RGB_to_XYZ(rgb/255., illuminant_RGB, illuminant_XYZ, RGB_to_XYZ_matrix, chromatic_adaptation_transform)
colour.XYZ_to_xyY(result)
但是,这会产生[ 0.29439225, 0.22595116, 0.27536142]
,这是不正确的。