PHP - 如何将RGB颜色转换为CIE 1931颜色规范

3

我正在创建一个基于PHP的应用程序,我想将RGB颜色转换为CIE 1931的xy格式。

如何将我的RGB颜色规格转换为CIE颜色空间?

2个回答

10

首先使用变换矩阵计算 X、Y 和 Z,然后对结果进行归一化处理。

X = 0.4124*R + 0.3576*G + 0.1805*B
Y = 0.2126*R + 0.7152*G + 0.0722*B
Z = 0.0193*R + 0.1192*G + 0.9505*B

规范化:

x = X / (X + Y + Z)
y = Y / (X + Y + Z)

太棒了!谢谢老兄 :) - Ravirpandey - CS
这是否假定RGB是浮点数还是整数?如果它是整数,您是否通过除以255来进行归一化? - tachijuan
我认为它应该在0和1.0之间。通过除以256进行归一化。 - Philipp

2
这是我的JavaScript版本。它应该能够帮助你足够了 ;)
 /**
 * Convert RGB to XY
 */
function RGBtoXY(red,green,blue){
    red = (red > 0.04045) ? Math.pow((red + 0.055) / (1.0 + 0.055), 2.4) : (red / 12.92);
    green = (green > 0.04045) ? Math.pow((green + 0.055) / (1.0 + 0.055), 2.4) : (green / 12.92);
    blue = (blue > 0.04045) ? Math.pow((blue + 0.055) / (1.0 + 0.055), 2.4) : (blue / 12.92);
    var X = red * 0.664511 + green * 0.154324 + blue * 0.162028;
    var Y = red * 0.283881 + green * 0.668433 + blue * 0.047685;
    var Z = red * 0.000088 + green * 0.072310 + blue * 0.986039;
    var fx = X / (X + Y + Z);
    var fy = Y / (X + Y + Z);
    return [fx.toPrecision(4),fy.toPrecision(4)];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接