我正在尝试实现从Yxy颜色空间到RGB的转换方法。这是通过首先转换为XYZ而不是RGB来完成的。我发现Yxy的“官方”矩阵 - > XYZ是
3.2410 -1.5374 -0.4986 -0.9692 1.8760 0.0416 0.0556 -0.2040 1.0570
这也是Matt Pharr的书“基于物理的渲染”中使用的那个。
另一方面,3D图形领域的许多人使用
2.5651-1.1665 -0.3986 -1.0217 1.9777 0.0439 0.0753 -0.2543 1.1892
现在,据我所知,如果x = 0.33333且y = 0.33333,Yxy会产生灰色阴影。这确实是我用第二个矩阵获得的。第一个创建一个红色RGB值。
第二个矩阵有效,但它来自哪里?我发现许多人在他们的示例代码中使用它,但没有人真正解释它是否具有物理背景。
提前致谢
答案 0 :(得分:1)
从xyY到XYZ的转换是非线性的,即它不能通过矩阵乘法计算。 来自维基百科CIE 1931 color space:
X = Y / y * x
Z = Y / y * ( 1 - x - y )
您的矩阵似乎都是针对XYZ到RGB的转换。第一个由sRGB初选和白点给出。第二种原则非常接近sRGB(绿色有x = 0.29
,y = 0.60
)和x = 0.334
,y = 0.334
白点。
如果您想使用其他RGB原色和白点,有一个列表:http://brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html