调整亮度的颜色矩阵是什么?

本文关键字:是什么 色矩 颜色 亮度 调整 | 更新日期: 2023-09-27 17:49:31

搜索周围有很多关于将图像转换为亮度(B&W)或调整饱和度W/out改变亮度的信息。但是如何调整亮度本身呢?例如,如何使用5x5矩阵增加红色通道亮度?最终这将在C中使用,但同样的数学应该在/java或flash中工作。

调整亮度的颜色矩阵是什么?

对于从google来到这里的人来说,这里是缩放亮度的矩阵:

rl×l + gl + bl    gl×l - gl         bl×l - bl         0
rl×l - rl         gl×l + rl + bl    bl×l - bl         0
rl×l - rl         gl×l - gl         bl×l + rl + gl    0
0                 0                 0                 1

,

  • l -亮度倍增器,
  • rl -红色亮度(sRGB 0.213),
  • gl -绿色亮度(sRGB为0.715),
  • bl -蓝色亮度(sRGB为0.072)。

请注意:这个矩阵可能很容易产生色域外的颜色,所以当你期望准确的结果时不要使用它。例如,对于1, 0, 0, 1向量和l=2,它将产生1.213, 0.213, 0.213, 1结果。从技术上讲,该向量具有期望的亮度(0.426),但显示的颜色将≈0.381。

我相信你把这三个颜色的值都改变了,所以…

要缩放RGB颜色,使用如下的矩阵:

float mat[4][4] = {
    rscale, 0.0,    0.0,    0.0,
    0.0,    gscale, 0.0,    0.0,
    0.0,    0.0,    bscale, 0.0,
    0.0,    0.0,    0.0,    1.0,
};

从:http://www.graficaobscura.com/matrix/index.html