【发布时间】:2018-02-18 07:59:55
【问题描述】:
这个矩阵应该从 linear RGBA 转换为 XYZ,保持 alpha 通道原样:
vec4 M[4]=
{
vec4{0.4124564f,0.3575761f,0.1804375f,0.0f}
,vec4{0.2126729f,0.7151522f,0.0721750f,0.0f}
,vec4{0.0193339f,0.1191920f,0.9503041f,0.0f}
,vec4{0.0,0.0f,0.0f,1.0f}
};
正确吗?我在哪里可以找到双精度值?我在问,因为第二行非常接近亮度公式,据我了解,这与非线性 sRGB 值相关:
vec4 weights{0.2126f,0.7152f,0.0722f,0.0f};
auto temp=m_data*weights; //vectorized multiplication
return temp[0] + temp[1] + temp[2] + temp[3]; //Sum it up to compute the dot product (weighted average)
其他问题:讨论的权重实际上是否应该相同?转换为 Y'CbCr 是否应该使用相同的权重?应该在线性空间还是 sRGB 空间中执行?
【问题讨论】:
标签: c++ data-conversion standards-compliance color-space