彩色转灰度的公式
用PS之类软件把彩色图像转成灰度图好像很简单嘛,猜不就是每个像素的RGB值分别乘1/3再加起来就是灰度吗?
直到读书看到这么一行:
fixed luminance = 0.2125 * renderTex.r + 0.7154 * renderTex.g + 0.0721 * renderTex.b;
——冯乐乐《UnityShader入门精要》P.248
书中指出,这是特定的系数。
哦原来不是1/3,彩色转灰度转换不是线性的,应该是跟人眼生理特性有关的,对三原色敏感度不同的三种视锥细胞的比例可能决定了不同的权重。
搜索了一番,
0.2125R +0.7154G+0.0721B这个公式应该来自国际电联Rec709标准,是为CRT显示器优化的
新版本微调了一点:0.2126 R+0.7152G+0.0722B
除此之外,还有其他公式
比如Gray = R*0.299 + G*0.587 + B*0.114
而这里更是列出了7种方法:Seven grayscale conversion algorithms (with pseudocode and VB6 source code)