颜色转换,从xy坐标得到XYZ

问题描述 投票:0回答:1

我从 GUI 获取需要转换为 sRGB 的 x/y 坐标。 Y 缺失,只有“亮度”可用。由于“亮度”和 Y 是两个完全不同的东西,我尝试使用 x/y。

转换为 X/Y/Z,我们可以将 Y 值 1 用于白点坐标

local function xytoXYZ(x, y)
    if y == 0 then
        return 0, 0, 0
    end
    local z = 1.0 - x - y
    local Y = 1
    local X = (Y / y) * x
    local Z = (Y / y) * z
    return X, Y, Z
end

生成的 X/Y/Z 可以转换为 sRGB 色彩空间,并获得可接受的结果。

但是如何获取所有其他非白点的 x/y 坐标的 X/Y/Z 呢?

matrix colors rgb srgb
1个回答
0
投票

简短回答:

您需要将您提到的“亮度”转换为Y。

更长的答案

色品图上的

xy
坐标不定义颜色,Y值是必需的,不是可选的。虽然 1931 年色度图可能看起来像是一个 2D 表面,但事实并非如此,如果没有 Y 的第三维,您对颜色的定义就不完整。

亮度

如果您从 API/GUI 获取“亮度”或“亮度”,它应该至少可以转换为相对亮度 Y。

您能给我该值的完整描述,以及它如何呈现给您或在 API 中吗?

© www.soinside.com 2019 - 2024. All rights reserved.