这是 ARGB 中的颜色矩阵:
[
R,0,0,0,0,
0,G,0,0,0,
0,0,B,0,0,
0,0,0,A,0,
0,0,0,0,1
]
我知道它的色调颜色矩阵如下:(参考 Gskinner 的源代码:http://gskinner.com/blog/archives/2007/12/colormatrix_cla.html)
define lr=0.213
define lg=0.715
define lb=0.072
define a=0.143
define b=0.140
define c=-0.283
define hueangle
define cos=cos(hueangle)
define sin=sin(hueangle)
[
lr+cos*(1-lr)+sin*(-lr),lg+cos*(-lg) +sin*(-lg),lb+cos(-lb) +sin*(1-lb),0,0,
lr+cos*(-lr)+ sin*(a),lg+cos*(1-lg)+sin*(b),lb+cos(-lb) +sin*(c),0,0,
lr+cos*(-lr)+ sin*(-(1-lr)),lg+cos*(-lg) +sin*(lg) ,lb+cos(1-lb)+sin*(lb),0,0,
0,0,0,1,0,
0,0,0,0,1
]
(感谢son_of_fire指出上一版中问题的莫名其妙之处。
问题
- 是什么公式导致了这个色调矩阵,尤其是其中的数字 a、b 和 c?
lr
、lg
和lb
是亮度常数。如果你计算<R
、G
、B
>与<lr
、lg
的点积,lb
>你会得到颜色的亮度。如果要在不更改颜色亮度的情况下更改色调和/或饱和度,这将非常有用。
我不认识a
,b
,c
从我的头顶上下来。它们可能与色度(饱和度)有关。
hueangle
是要旋转颜色的角度。它绕R
= G
= B
轴旋转。如果旋转 180°,红色变为青色,绿色变为品红色,黄色变为蓝色等。
您可能会发现 Gamma 常见问题解答很有用,因为它描述了许多这些概念。本页描述了绕任意轴旋转背后的数学原理。
此外,您通常需要一个 4x4 矩阵进行颜色转换,而不是 5x5。