LUT基本上就是一些转换模型,或者说是不同的组合,它的两种主要分支是1D LUT和3D LUT。
1D LUT
举个例子,一个1D LUT的开端可能是这样子的:
(注意:严格来说这是3个1D LUT,因为每种颜色(RGB)都是一个1D LUT。)
R, G, B
3, 0, 0
5, 2, 1
7, 5, 3
9, 9, 9
上面的意思是:
在R、G、B的输入值是0时,输出值是R=3,G=0,B=0
在R、G、B的输入值是1时,输出值是R=5,G=2,B=1
在R、G、B的输入值是2时,输出值是R=7,G=5,B=3
在R、G、B的输入值是3时,输出值是R=9,G=9,B=9
这是一个特别的LUT,不过你可以看到一个特定的R、G或B输入值都有特定的输出值。
所以如果某个像素的RGB输入值是3, 1, 0,它的输出值将为9, 2, 0。
如果R的输入值变成了2,但是G和B保持不变,那么只有R的输出值会改变,这时候像素的输出值为7, 2, 0。
以上的内容可以用如下图像来表示:
我们很容易可以看出,变动某个颜色输入值只会影响到该颜色的输出值,RBG的数据之间是互相独立的。
这就意味着1D LUT只能控制gamma值、RGB平衡(灰阶)和白场(white point)。
1D LUT加上3×3的模型
为了克服1D LUT的限制,我们可以对其应用一个3×3的矩阵来控制颜色饱和度和亮度,在完整的色彩空间中进行线性缩放。
R x x x R
G = x x x = G
B x x x B
虽然这种方法能够做出“可接受”的校准结果,但是显示效果中的所有非线性属性仍然不能得到改正。