咨询电话:400-810-1418服务与监督电话:400-810-1418转接2
  • 相关推荐
  • nuke模拟飞行案例详解(六):调整最终效果
  • nuke模拟飞行案例详解(五):制作尾气效果②
  • nuke模拟飞行案例详解(五):制作尾气效果①
  • nuke模拟飞行案例详解(四): Transform [位移]节点补充
  • nuke模拟飞行案例详解(四):飞行动画②
  • nuke模拟飞行案例详解(四):飞行动画①
  • nuke教程之色彩空间原理精讲(八)

    发布时间:2019-09-17 11:55:40

    02.Exponential Math [指数运算]

    Gamma虽然是 一个专有名词,其实可以解释为power (指数)运算。如果参数x的Gamma值为a,那么这个公式可以写为:

    y=xa

    我们通常将X称为底数,a称为指数。需要记住的就是这样的一个公式:

    output = inputGamma

    Power指数函数对于读者来说可能不是很直观,但其实它很简单。只需要把底数设置为0~1,如果指数设置为1,那么结果就不会改变(恒等公式),比如图中的“Gammal 0曲线”这时当我们把指数设置为2,也就是底数的平方。通过这样的操作,我们会得到一些很重要的特性:

    0.002= 0.00●0.00=0

    0.252= 0.25●0.25 = 0.0625

    0.502= 0.50●0.50= 0.25

    0.752 = 0.75●0.75= 0.5625

    1.002= 1.00●1.00= 1.00

    nuke教程之色彩空间原理精讲(八)

    请注意,图中 的Gamma2.0曲线,在这个例子中我们可以看到当指数大于1时最终的结果要小于输入值。

    nuke教程之色彩空间原理精讲(八)

    蓝色的线条表示Gamma输出为1.0,红色的线条表示Gamma输出为2.0。

    当所有的Gamma值都小于1.0时,得到的结果也会越大,也就是相反的曲线形状。当我们将Gam值调整为0.4:

    0.000.4=0

    0.250.4 = 0.5743... 

    0.500.4 = 0.7578....

    0.750.4= 0.8913....

    1.000.4= 1.00

    在这之前,我们的最小值和最大值都保持在0~1之间没有改变,所有其他的值都有了较大的改变,如图所示。

    nuke教程之色彩空间原理精讲(八)

    现在如果我想要把两个Gamma操作合并呢?例如上面的函数Gamma0.4外再进行--个Gamma3.0的操作会得到什么样的结果呢?根据指数法则我们知道,在一个指数函数外再加一个指数,就是把两个指数相乘:

    (xa)b=xab

    合并一些Gamma操作其实就是简单的乘法操作。当Gamma 为2.0,我们想要通过一种 方式来使最终的结果为Gamma等于1.0。很明显我们需要另外的power指数函数,也就是什么值乘以2能得到1呢?答案就是12=0.5,我们称之为倒数(或是乘法互逆),如果两个数相乘的结果为1,那么这两个数就互为倒数。

    由此得出,如果想要把- 个经过Gamma校正的图像恢复为linear [线性],便需要在此Gamma基础上再乘以一个当前Gamma的倒数即可:

    linear output = input1/current Gamma

    这也就解释了为什么当显示器对画面进行了Gamma2.2的操作,这是为了使图像恢复正常的线性显示,我们需要再为图像进行- 次Gamma 0.4545的操作,2.2 X0.4545= 1.0,如图所示。

    nuke教程之色彩空间原理精讲(八)

    通过上面的学习,我们知道Gamma其实就是一条曲线,其背后的运算为指数运算,并且Gamma值为L.0时的曲线为Linear [线性]曲线。

    为什么要学习这些呢?因为早期CRT显示器显示的问题导致图像显示较暗。这种好像电视的色彩空间YUV一样的历史遗留问题,直接导致现在的图像在拍摄后其Gamma便不是Linear [线性]。

    Gamma的由来其实与我们所使用的电脑的显示设备有很大的关系。由于早期的CRT显示器使用的是电子枪发射电子束到荧光屏幕上,但是屏幕上显示的亮度和实际的亮度信号并不是1:1的,而存在一种度失真。假设输入的是黑白信号,这种失真将使被显示的图像中间区域偏暗,从而觉得图像整体比原始图像偏暗;如果输入的是彩色信号,这种失真除了使显示的图像偏暗以外,还可能会造成图像的色调发生偏移。Gamma伽马校正就是用来解决这一问题的。

    通过对原始输入的信号进行伽马校正,提高其中间调区域来恢复其原始亮度。对于CRT显示器,由于品牌不同,其技术水平也有所不同,但一般来说,Gamma伽马校正值就是2.2。这也是Gamma22的由来。

    Notice :只有CRT显示器存在亮度信号失真这种问题,现在的液晶显示器并不存在这种问题。

    下图所示为Sony显示器的Gamma伽马曲线,图上的曲线表示的就是Sony显示器未经校正的Gamma伽马曲线,x轴为输入的亮度信号,y轴为屏幕显示的亮度(单位为cd/m2流明度)。

    nuke教程之色彩空间原理精讲(八)

    我们可以看到输入值与输出值并不是一-对应的,而存在-条凹陷的曲线,这会使输出图象的亮度明显偏暗。如果想要解决这个问题,可以通过为输入值应用--条对应的倒数曲线,这样便可以使最终的显示结果恢复正常。

    下面一组图像就是为了说明Gamma曲线对图像亮度所产生的影响,如图所示。

    nuke教程之色彩空间原理精讲(八)

    由上面的原理我们知道,所有图像在真实环境下其Gamma曲线都是1.0,可以显示正确的明暗效果,但当使用显示器进行显示时,便会显示为比我们肉眼所看到要暗的图像,因为图像进行了一个Gamma 2.2的调整。所以为了解决这个问题,大多数数字图像在产生后就自动加亮了(进行了Gamma04545的反向调节),这样显示在显示器上时,其实进行了如下运算:

    Gamma 2.2 x Gamma 0.4545 = Gamma 1.0

    这样便把Gamma恢复成了1.0的正确显示结果。对于大多数普通用户来说,这确实是一件好事,它使我们看到了正确的图像效果,不需要我们手动去做任何亮度调节处理。Gamma的调整确实方便了普通用户,但对于我们制作人员来说却变成了一一个问题。

    如果一张图像其对于场景的亮度描述不是线性的,一旦我们对其进行操作,或是把它同其他的图片进行合成操作,便会得到错误的颜色结果,我们将不同Gamma值的图像进行合成操作时,会得到不同的Y值,也就是不同的亮度值,如图所示。

    nuke教程之色彩空间原理精讲(八)

    把几种不同坐 标曲线的图像进行合成操作,因为每个坐标系的曲线不同,同一个X如等于5,那么代入不同的坐标系,得到的Y也不相同。

    如何来解决这个 问题呢?聪明的小伙伴可能已经想到了,那就是把所有图像都转换成Linear [线性,这样一来,所有的X就都等于Y。这便提醒我们建立一个正确地使用Gamma的工作流程,把所有的工程文件都转换为线性状态进行存储和操作。很多软件并没有把Gamma的校正作为默认操作来处理,好在ENike在这方面进行了自动操作。