3D LUT的编写方式也是非常令人困惑的。
3D LUT通常也会有三栏的RGB数值,不过一般蓝色的改变是最快的,绿色次之,最慢的是红色。
下面是一个“默认旁路”的17^3 3D LUT的前几行(输出与输入相等):
R, G, B
0, 0, 0
0, 0, 64
0, 0, 128
x, x, x
0, 0, 960
0, 0, 1023
0, 64, 0
0, 64, 64
0, 64, 128
x, x, x
0, 64, 1023
0, 128, 0
0, 128, 64
0, 128, 128
x, x, x
我们可以看到的是蓝色会快速地经过17点的循环,绿色会在每个蓝色17点循环之后变动一次,红色则会在经过整个LUT的长度之后更新一次,也就是在绿色经过17次循环之后。
这42行会在总共4913行当中继续重复……
在上图的立体图像中,红色平面从它的17个点的第1个点开始。
绿色平面和蓝色平面也是从它们的第一个点开始。
这个位置的输出值会被记录成LUT的第一行(0, 0, 0)。
红色平面和绿色平面会保持不动,蓝色平面开始移向它的第二个位置。
这个位置的输出值会被记录成LUT对的第二行(0, 0, 64)。
然后蓝色会继续移动17个点(位置)。
然后绿色平面开始移向它的第二个点,蓝色继续重复它的17个点。
在绿色经过了它的17个点之后,红色开始移向它的第二个点,这个循环开始继续重复……
所以对于非旁路的LUT来说,每个“平面”的位置会在17个点当中的每一个点之间发生变化,生成所需的输出值。
因此,一个真正的“校准用3D LUT”的前几行应该是这样子的:
R, G, B
0, 0, 0
0, 0, 36
0, 0, 112
0, 0, 188
0, 0, 261
0, 0, 341
0, 0, 425
0, 0, 509
0, 0, 594
0, 0, 682
0, 0, 771
0, 0, 859
0, 0, 955
0, 0, 1023
0, 0, 1023
0, 0, 1023
0, 0, 1023
0, 32, 0
0, 28, 28
0, 28, 96
0, 24, 172
0, 24, 252
0, 20, 333
x, x, x
x, x, x