CIE XYZ转sRGB颜色空间转换异常求助:代码输出值错误
CIE XYZ转sRGB颜色空间实现问题
我正尝试将CIE XYZ颜色空间转换为sRGB,以此作为CIELAB与sRGB颜色空间之间的中间转换步骤。参考了相关技术资料中的公式进行实现,但目前代码输出结果不正确(可与在线颜色转换器结果对比),且必须对线性RGB值取绝对值才能让公式运行。请问正确的实现方式是什么?我的代码哪里出错了?
以下是我的实现代码:
// Convert XYZ to sRGB function xyz2rgb(xyz){ const r = 3.2404542*xyz.x + -1.5371385*xyz.y + -0.4985314*xyz.z const g = -0.9692660*xyz.x + 1.8760108*xyz.y + 0.0415560*xyz.z const b = 0.0556434*xyz.x + -0.2040259*xyz.y + 1.0572252*xyz.z //convert to srgb function adj(C) { C = Math.abs(C) let v if (C <= 0.0031308) { v = 12.92 * C } else { v = 1.055 * C**(1/24) - 0.055 } return Math.round(v*255) } const R = adj(r) const G = adj(g) const B = adj(b) return { 'r':R, 'g':G, 'b':B } } const xyz = {x:0.02, y:0.18, z:1.08} const rgb = xyz2rgb(xyz) console.log(rgb)
编辑补充:相关代码可在JSFiddle查看
内容的提问来源于stack exchange,提问作者M.L.
相关产品推荐
相关产品推荐

