zoukankan      html  css  js  c++  java
  • 色彩管理中的Gamma值的理解

    我们的正常视觉(不是过暗或非常明亮的条件)对暗色调的变化更敏感,并且由于图像的捕捉过程,颜色可能被误传,由于我们从原始图像被捕获时感知亮度和亮度的方式不同。我们的眼睛以不成比例的方式捕捉亮度,例如,如果相机在极亮的环境中拍摄图像,我们的眼睛会感觉到光线只是亮度的一小部分。如果图像在没有伽马校正的情况下被处理并显示在桌面上,则用户将其视为褪色或太亮。

    广义的Gamma值

    Gamma值的广义定义就是输入值和输出值的Gamma幂指数关系,用来补偿人眼对自然亮度的非线性感知。输入与输出关系如下图所示:

    输入和输出的关系可表达为:输出 = 输入gamma

    Gamma=1,斜45°直线,不校正,输出=输入;Gamma大于1,曲线下压,输出值小于输入值;Gamma小于1,曲线上拱,输出值大于输入值。

    为什么要将输出和输入做Gamma运算?

    上面提到,Gamma为了解决人眼对自然亮度非线性感知的问题,其二是因为记录存储的有限性。举个栗子:一间黑屋子中,点亮了一只灯泡A,人眼会感觉照亮整间屋子,持续点亮第2个、第2个……灯泡后,人眼会感觉屋子逐渐变得明亮,此时再点亮第N+1个灯泡,其实人眼没有什么感觉甚至微乎其微,为什么?

    • 亮度对人眼的刺激是非线性的,第1个和最后一个灯泡点亮对人眼的刺激感觉是不同的;
    • 人眼感觉黑->白范围“有限”,灯泡可以无限,但感觉会趋于一个有限制值;

    分析:此时输入是灯泡的强度,输出是人眼的感觉,大自然中,感觉的差别阈限随原来刺激量的变化而变化,这是著名的韦伯定律,下图显示了自然界的线性增长的亮度和人心里感觉的灰介关系图:

     

    当物理亮度达到白色的20%左右的时候,人的心目中已经感受到中灰色(即0.5处)的概念。而剩下的一半高光区的灰阶,需要用白色80%的物理能量才能照亮成白色。根据输入和输出的关系,可确定此时的Gamma大约在1.8~2.5,而现在大多数用2.2。

    所以,GAMMA值的应用非常多,如图像的拍摄中的相机的GAMMA、图像显示中的显示器的GAMMA、图像输出中的打印机、印刷机等GAMMA等,不同设备的GAMMA描述的都是此设备的信号值对应的亮暗关系,而且,这些关系都是非线性的。

    显示器的Gamma值

    显示器的Gamma值表示了输入信号的颜色值以及发光的亮度之间的关系,也就是输出时从黑到白的亮度过渡。同样,其也是非线性关系的。使用不同的Gamma值:1.0(线性响应),1.8~2.2(较暗的图像),3.0(过暗的图像)显示同一幅图像:

    可见,较低的Gamma值(1.0)有一个较亮,较平稳的显示;而较高的Gamma值(2.2)有更高对比度的较暗的显示。现在显示器一般用8位深的RGB来记录数字图像,所以最大的数据存储量就是28 * 28 * 28 = 16,777,216,如果使用线性的方式进行存储自然中的亮度,那可能根本不够用。所以拍摄的图像先用GAMMA进行压缩,保留了大部分的中间和暗调细节,再通过GAMMA释放(校正)并显示,展示给人眼看见,保证了人眼在显示器上感觉和自然中相同。

    什么是Gamma值为1.0线性响应?

    对于采集设备,如相机或者扫描仪,Gamma为1.0的时候,图像不存在压缩和释放,直接将原自然高动态亮度1:1输出为高动态显示信号,如果不对图像进行GAMMA校正,整体图像会显得更亮,会失去更多的中间调和暗调,同时图像文件的大小也会更大。如我们熟知的RAW工作流程就是一种线性GAMMA流程。

    显示器的Gamma值标准是多少?

    GAMMA值没有标准,如果要正确的找到GAMMA的标准,只能通过每台显示器的调整GAMMA更适合人眼的感觉,即感觉白-黑之间的渐变平滑,而且中间灰处于0.5中间的位置,如下图(8位深的RGB编码模式下):

     

    一般而言,显示器的GAMMA值会在1.8~2.5之间。由于最初的CRT显示器的GAMMA采用2.2,所以现在大部分显示器还是沿用2.2作为推荐的GAMMA值,但Mac中使用1.8。没有对与错,最正确的方法则是通过灰介自己找到最佳的GAMMA值。

    未使用GAMMA校正和使用1.8GAMMA校正的图像对比

    打印机、印刷机Gamma值?

    流程中的所有设备都有它们自己独有的Gamma特性,这也是为什么用Gamma查找表(LUTs)来生成显示器的Gamma以匹配其它设备的Gamma。如专业的扫描仪的Gamma值一直都是1.0,这样可以在扫描过程中得到最大的线性响应,而便宜的扫描仪则使用较高的Gamma值来避免多余的暗调噪声。

    对于胶印,GAMMA是CMYK比例和人眼的亮度刺激关系,也就是密度值大小,所以我们通常使用“网点扩大”或者“TVI”,而不是“Gamma”,但是两者同理。它是设备的阶调响应以及中间调的主要影响因素,这点与Gamma类似。印刷机的网点扩大有点像1.7,1.8的Gamma。但是实际的值取决于印刷机、纸张、油墨等。相关的因素比显示器的GAMMA校正多很多。

    印刷机Gamma与显示器的Gamma的比较

    事实上,如果观察一幅印刷图像,你实际会看到低亮度和高光部分的压缩,因此,在曲线图上,印刷图像的色调曲线或Gamma曲线会呈现S形。

    显示器的Gamma曲线在端点只会沿着一个方向伸展,这取决于显示器的模拟状况。这就是为什么显示器上的图像一直比印刷图像呈现出更大的对比度的原因。

    参考链接:

    https://www.colortell.com/2424.html

    https://www.colortell.com/10050.html

  • 相关阅读:
    ASP.NET MVC 以Stream 下载文件
    ITextSharp 初次接触
    Easyui中tree组件实现搜索定位功能及展开节点定位
    lodop 打印控件的使用
    XML IList<T> TO DataSet TO DataTable 相互转换
    JSONToObejct 问题 part 1
    可以动态添加图片的轮播插件
    防止机器注册
    sqlServer 取每组的前几条数据
    log4net 动态设定日志文件名
  • 原文地址:https://www.cnblogs.com/god-of-death/p/14487729.html
Copyright © 2011-2022 走看看