导读:常常在视频处理中听到Gamma曲线这个词,今天就随着这篇短文了解一下Gamma曲线的来历。

一、光电转换与电光转换

将自然界中真实场景转换为屏幕上显示出来的图像,往往需要经过两个主要步骤:第一个是通过摄影设备,将外界光信息转换为图像信息存储起来,本质上是存储为数字信号;第二个是通过显示设备,将图像信息转换为屏幕输出的光信息。图1展示了从拍摄到显示的信号链。在整个过程中,信息流要经过两个重要的非线性映射,才能形成我们在显示设备上看到的图像。其中,摄像机的非线性映射通常称为光电转换函数(OETF),而显示端的显示器的非线性映射通常称为电光转换函数(EOTF)。通常,OETF和EOTF并不是互逆关系。显示端的EOTF往往还包括代表创作者渲染意图的光光转换函数(OOTF),其对观看者在预设环境下通过显示器观看带来的心理视觉影响进行了修正。

图1视频制作与显示流程

二、人类视觉与Gamma校正

必须要强调的是,视觉是人类的主观感受,因此,人眼看到的、感受到的和自然界中的实际场景存在误差。一个直观的例子是人眼所感受到的均匀变化亮度,在实际自然界中却非均匀变化。这种视觉特性,就是Gamma校正产生的原因,即通过人为的非线性映射,使人类感受到自然界的“真实”景象。

在详细介绍Gamma校正之前,需要先简单了解一个概念:韦伯定律。

韦伯定律是用来描述外界刺激变化与人类感知到变化之间的关系,公式如下:

其中∆Φ表示此时的差别阈值,是指人类能够感觉到外界刺激出现改变所需的最小改变量。Φ表示原刺激量,K为常数。简而言之,韦伯定律告诉我们,差别阈值与原刺激量成正比关系。也就是说,外界刺激本身越大,差别阈值就越大。我们能够从中发现,人类对于外界刺激的感知并非线性的,原刺激越大时,由于比例关系,差别阈值就越大。即当外界刺激强度越大时,想让人类能够感知到变化所需的变化增量就必须越大。

举一个现实的例子:在黑暗的房间中,点燃一根蜡烛,将让人感知到巨大的亮度改变。而如果房间中有99根蜡烛,再点燃一根蜡烛人类可能根本感觉不到差别。所以,如果想要让人类感知到同样程度的亮度改变,所需的蜡烛数量可能是成百上千根才行。

经过科学家一系列实验的测定发现人类能够感知到的连续亮度谱如图2所示:

图2 人眼感受到的亮度

将最左边纯黑编号为“0.0”,最右端纯白编号为“1.0”,中间定义为中灰“0.5”。这就形成了人眼的亮度谱。但是,上图中的亮度在自然界中并不是同样成比例的,例如图中的中灰,对应自然界中的亮度是纯白的20%。

将人眼亮度谱与自然界中实际亮度进行建模,就可以得到下面的图像:

图3 自然界与人眼感知的亮度对应

图3中纵轴是人眼感受的均匀灰阶,横轴是自然界中线性增长的亮度。根据韦伯定律,在低亮度区域,人眼的敏感性较高,因此自然界中很小的亮度范围,都能够被人眼察觉;在高亮度范围,人眼的敏感度较低,因此自然界中大范围的亮度变化,在人眼感知上却并不大。可以使用幂函数来拟合这种非线性的映射,用公式表示如下:

其中X是使用0-1之间的实数表示的输入亮度,Y是使用0-1之间实数表示的输出亮度,γ为认为设定的参数,不同的γ选择会产生不同的效果。这种通过调整γ的取值,来调整输入输出亮度之间映射关系的方式,我们称之为gamma校正。

图4:不同γ取值下,幂函数的图像

根据γ取值的不同,通过上图,我们能够发现gamma校正的不同效果:

1.    当γ<1时,曲线上凸,输出值大于输入值。

2.    当γ=1时,曲线为一条直线,输入与输出相等,不进行校正

3.    当γ>1时,曲线下凸,输出值小于输入值

三、Gamma校正与图像显示

在图像获取,存储与显示发展过程中,前面提到的光电转换函数与电光转换函数也经历了多次进化。在整个发展过程中,最具有指导意义的就是Gamma校正,这是一种在传统的SDR显示设备上被广泛使用的转换函数。

在传统的图像获取与显示过程中,将自然界中的真实场景转换为屏幕上显示出来的图像,往往需要经过两个主要的步骤:第一个是通过摄影设备,将外界的光信息转换为三维数组存储起来,也就是存储为图像信息,这一过程如前所述,需要通过光电转换函数进行非线性映射;第二个是通过显示设备,将图像信息转换为屏幕输出的光信息,同样,这一过程需要电光转换函数的参与。在这两个阶段中,光电转换函数与电光转换函数实际上都是幂函数,也就是都进行Gamma校正。

首先,因为图像每个像素的取值在0-255之间,因此先进行归一化,将0-255这256个数线性映射到0-1之间。

接着,在图像获取阶段,摄像机中会使用一种encodinggamma函数进行gamma校正,这里的gamma值小于1。自然界中的亮度,首先在摄像机中进行归一化,映射到0-1之间,接着,将这个经过归一化的值输入encoding gamma函数中。最后将encoding gamma函数的输出值与0-255的像素值归一化结果进行比较,就能得到这个像素点的像素值。

显示阶段的gamma校正通常使用一种display gamma函数来完成,这里的gamma值大于1。显示设备读取像素值后,进行归一化,然后将归一化结果输入display gamma函数中。将输出的值对应的自然光线进行输出,就是显示阶段做的工作。

理论上来说,上述两个阶段的gamma值乘积应该为1。因为两个gamma校正实际上做的是恰好相反的操作,一个是将自然光线存储为数字信息,另一个是将数字信息转换为光线。而为了使自然中的光线与显示设备产生的光线一致,显然这里的gamma值的乘积需要为1。但是,在实际操作中,这两个gamma值的乘积并不为1,原因有以下两点:1)对于传统显示设备来说,屏幕能够显示的亮度范围与颜色范围与实际情况相差好几个数量级;2)在真实的场景中,原始的场景填充了观察者的所有视野,而显示设备的亮度往往只局限在一个被周围环境包围的屏幕上。这两个差别使得感知对比度相较于原始场景明显下降了。因此,在电影院这种漆黑的环境中,这个乘积为1.5,在明亮的室内这个值为1.125。

由于人类感知的“中灰”,在实际的自然光线中对应于白光的20%的亮度。因此,如果完全按照自然光线的数值进行灰度处理,纯黑到中灰这一段在人类感知中占到一半的灰度,将只能由20%的灰阶进行表示,而剩下的一半会有80%的灰阶进行表示,这显然是不合理的。Gamma校正就可以解决这个问题。在实际操作中,中灰对应的自然光线,显然会被映射为0.5的取值,也就对应128这一灰阶。这样的结果就是高亮度与低亮度部分分别占有一半的灰阶,这就会使得显示的图像的直观感受更接近于现实。

因此,gamma校正实际上是用来解决显示设备亮度灰阶不足的问题的,在实际生活中起到了广泛而巨大的作用。

gamma校正_什么是Gamma校正?相关推荐

  1. gamma分布_轻松理解gamma分布

    gamma函数与gamma分布 上一篇讲到了gamma函数,今天讲一下gamma分布.既然二者的名字都含有gamma,必然是有联系的.我们先从gamma函数来讲gamma分布,完全是从数学的角度,然后 ...

  2. 复平面上gamma函数_神奇的Gamma函数 (中)

    Gamma 函数欣赏 Each generation has found something of interest to say about the gamma function. Perhaps ...

  3. python怎么用gamma函数_不完全gamma函数 python有gamma函数吗

    matlab中gammainc(不完全伽马函数)是代表什么运算? 如题,matlab中gammainc函数是什么运算,比如A==gammainc(B/2,C/2) 麻烦问一下,图中的红框的下一步是怎么 ...

  4. python怎么用gamma函数_如何通俗的理解伽马(gamma)函数

    如何通俗的理解伽马(gamma)函数 - 直觉,求导和示例 我为什么要在乎garmma分布? 使用伽马函数定义了许多概率分布,例如伽马分布,Beta分布,狄利克雷分布,卡方分布和学生t分布等. 对于数 ...

  5. delta和gamma中性_在期权交易中,Delta、Gamma、Theta、Vega都是什么?

    对于期权投资交易者而言,熟悉Delta.Gamma.Theta.Vega等的希腊值(Greeks值)的特征及性质是非常重要的,无论在交易策略制定上,还是在风险管理上.可以说,了解这些Greeks值在实 ...

  6. 自动控制原理_卢京潮_线性系统的时域分析与校正_学习笔记

    总目录: 第一章自动控制的一般概念+第二章控制系统的数学模型学习笔记: https://blog.csdn.net/mahoon411/article/details/112555468 第三章线性系 ...

  7. python泰勒公式_泰勒公式和Gamma函数

    今天带大家玩下数学中的编程,难度可能有点大,数学不好的人请离开. 泰勒公式 大家知道泰勒公式吗?对它的理解有多深呢?数学中,泰勒公式是一个用函数在某点的信息描述其附近取值的公式.如果函数足够平滑的话, ...

  8. python大气校正_什么情况下需要做大气校正之探讨

    经常会遇到这样的问题:什么情况需要做大气校正产生?这个问题取决于传感器和应用目标,总的来说,如果要做光谱分析,那么大气校正是必须要做的.本文对于在什么情况下选择什么样的大气校正方法,给出了一些依据. ...

  9. 复平面上gamma函数_复变量Gamma函数及解析性质

    复变量 Gamma 函数及解析性质 赵成兵 1 ,李牛顿 2 [摘 要] 本论文主要研究复变量 Gamma 函数计算方法以及复 Gamma 函数 的解析性质,得到复变量 Gamma 函数的积分在复平面 ...

最新文章

  1. 基于ssm框架的大学生社团管理系统
  2. Boost库学习(0)
  3. Java常用排序算法/程序员必须掌握的8大排序算法
  4. ProxySQL MySQL MGR8配置
  5. variable 'xxx' unsafe in 'case'的处理
  6. phpize增加php模块
  7. Git 提交报错,账户和密码错误 和 git add/git commit 文件太大太多
  8. errorattributes 过时_苹果官方确认:iPhone 5c 已被列为过时产品
  9. git创建一个自己的本地仓库
  10. 在Ubuntu中配置SSH(解决connect to host localhost port 22: Connection refused问题)
  11. BZOJ2301[HAOI2011] Problem b
  12. SQL 常见面试题解析
  13. ubuntu安装阿里源
  14. 在无外网虚拟机CentOS7下安装金山wps-office最新版(超详细小白教程)
  15. 20220609 C++版的ends_with
  16. vi命令下编辑文件时,按insert键文件底部不出现“INSERT”问题
  17. zookeeper原理:分布式协同技术
  18. 【论文汇总】 ECCV 2020 语义分割paper汇总
  19. Docker查看正在运行的容器创建时的命令
  20. 有哪些软件是可以免费看漫画的?这3款软件带你梦回童年

热门文章

  1. SVM_GUI_3.1[mcode]{by faruto}的安装及使用
  2. 测试公众号修改名称_微信公众号开通个人认证,只需三步
  3. 调用webservice或wcf时,提示:无法加载协定为的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。
  4. 在VS2010调试javascript程序时的各种问题
  5. python课堂笔记
  6. 【CyberSecurityLearning 29】Linux下命令帮助、压缩、vim、软件安装
  7. 有时候明明没有问题的程序为什么通不过?
  8. 图解CSS的padding,margin,border属性
  9. PIC中的#pragma idata 和#pragma udata
  10. 关于JTAG——韦东山嵌入式Linux视频学习笔记02