理解Gamma传递函数

对于任何认真从事色彩工作或电影和电视母带处理的人来说,掌握Gamma编码是一项重要的知识,但它也可能是最令人困惑的主题之一,因为我们人类的视力与大多数电子设备的工作方式截然不同。 Gamma编码和传递函数的全部工作都是基于向我们的人眼提供图像,该图像针对我们如何看待世界而不是计算机如何看待世界进行了优化。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 

1、Luma

了解Gamma的第一步是理解术语Luma以及它与数字图像世界的关系。 当我们谈论亮度(luminance)信息时,我们谈论的是场景在去除颜色后的亮度值。 当这个场景通过胶片或数字图像捕捉时,它被称为Luma。

左:具有亮度和颜色(色度)值的彩色图像 右:仅显示亮度数据的同一图像

2、Gamma

当我们谈论Gamma时,指的是如何映射位于黑色和白色之间的亮度值。 Gamma定义了我们如何处理这些中间色调值。 这最终也会对颜色产生影响,但颜色不是这里的主要目标。 在电视和电影领域,Gamma配置文件根据其传输位置而变化。 例如,计算机屏幕具有与电视不同的Gamma配置文件,数字电影投影仪也使用不同的Gama配置文件。 因此,了解你的内容将在哪里被看到变得至关重要,因为它将影响你应该掌握的Gamma配置文件。

为了更好地理解Gamma的效果,以下是同一图像在各种常见Gamma配置文件下解释时的外观:

sRGB(原始)、Gamma 2.2、Gamma 2.4和Gamma 2.6的对比

使用被其他明亮元素包围的小屏幕在互联网上突出显示这些差异本质上是一件棘手的事情,但如果你仔细观察,你会注意到,随着我们的Gamma配置文件的数量不断增加,我们的中间色调变得更暗。 特别要注意稀疏的烟雾,例如舞者小腿左侧的烟雾,其外观变暗。 同样重要的是要注意,Gamma的变化不会改变图像的黑点或白点,它们只会改变位于黑色和白色之间的亮度值。

虽然这些差异可能看起来极其微妙,但随着图像尺寸的增加,它们会变得更加明显。 当图像占据整面墙时(例如在电影院环境中),你可以看到相当显着的变化。

那么为什么我们有不同的Gamma分布以及它们从何而来?

3、Gamma的起源

正如本文开头所提到的,当今需要Gamma的主要原因是电子传感器观察世界的方式与我们人眼的方式非常不同。 也就是说,电子传感器在线性光中观察世界,而我们优先考虑黑暗区域的信息,相反,在明亮区域也不需要太多信息。 然而,当研究Gamma的历史时,Gamma编码还有另一个主要目的,那就是 CRT(阴极射线管)。

由于 CRT 是电视早期存在的唯一合适的显示设备,它的显示方式和对光的响应产生了Gamma编码的需要。 巧合的是,CRT 以与我们的眼睛类似的非线性方式响应光线。 CRT 需要大量电能才能产生暗图像,但随着屏幕光输出的增加,能量需求不会以线性方式增加。 相反,他们会执行图中所示的操作:

正如您所看到的,需要相当多的能量输入才能获得 CRT 最大光输出的一半。 但是,要显示剩余 50% 的光输出,需要的能量要少得多。

那么,当来自相机的图像被传递到 CRT 显示器时会发生什么呢?

如你所见,我们遇到了问题。 由于 CRT 显示器不能以线性方式再现光线,因此生成的图像比相机记录的原始场景暗得多。 那么我们该如何解决这个问题呢? 理想情况下,我们希望这条线是直的,以便再现相机观察到的线性光,并且我们可以看到场景的原始状态。 答案是逆Gamma。

4、逆Gamma

逆Gamma是抵消 CRT 响应影响的一种方法。 虽然它不一定是数学倒数,但其总体目标是预先校正Gamma配置文件的作用。 这意味着记录的图像比现实生活中出现的亮度更高,因此当Gamma曲线穿过它们时,它们会被降低到我们希望看到的样子。 通过将 1 除以Gamma曲线(本例中为 2.2),可以轻松计算出数学反函数。 即 2.2 的逆Gamma为 1 / 2.2 = 0.45,如下图所示:

然而,实际上许多反函数并不是精确的数学反函数,它们通常会进行一些调整。 有时,这可能是因为相机制造商可能想要改变其传感器的动态范围记录方式,或者在掌握不同观看条件的情况下可能会改变所需的逆Gamma函数。

​就像正常的Gamma曲线一样,逆Gamma不会改变黑点或白点,但会改变所有的中间色调值。 在反函数的情况下,它这样做是为了预期下游将应用Gamma函数。

应用逆Gamma函数后的图像会是什么样子?

​因此,我们要做的是应用逆Gamma函数,然后应用正常Gamma函数,并使该组合形成原始场景的所需表示:

5、完整的链条

Gamma是一个很快就会变得令人困惑的话题,因为你同时需要考虑人眼、各种电子设备以及将所有这些连接在一起的信号路径。 我们的最终目标是再现原始场景的最佳表示,因此让我们快速浏览一下信号链,以便了解这些不同的Gamma操作的应用位置。

下面就是原始场景在人眼中的样子,我们的目标是为普通人再现一个近似的场景:

当摄像机记录场景时,它会应用逆Gamma函数来抵消 CRT 电视接下来将应用的Gamma 2.2:

具有逆Gamma函数的图像被广播到电视上。 然后,由于 CRT 技术中固有的Gamma曲线,CRT 电视会输出校正后的图像。 现在,该图像是人眼观看场景的合理近似值:

6、Gamma校正的当前目的

众所周知,自从 CRT 电视发明以来,电影、视频和技术已经发生了巨大的变化。 摄像机仍然具有线性读取光线的传感器,但数据现在可以保存为各种格式,例如 RAW 和对数数据函数。 因此,逆Gamma运算不一定像以前那样硬编码到摄像机的输出格式中。 此外,CRT 已成为过去的遗物。 从那时起,我们开始转向 LCD、OLED、数字投影和激光显示技术。

那么,有人可能会合理地问——现在为什么要为Gamma烦恼呢? 如果我们对显示设备有更多的控制权,为什么我们不能坚持使用 1.0 的传递函数,以便我们的输入等于输出,并且信号链中不需要混乱的转换? 好吧,我们可以,但要以一种不会在阴影中引入称为“色带”的问题的方式做到这一点,就需要在超出显示器和消费存储介质当前能力的位深度上进行操作。

事实是,基于 CRT 的技术所需的Gamma对于图像质量来说确实有一个非常好的巧合的好处 - 即它在图像的阴影中编码更多的细节,而在图像的明亮区域中编码更少的细节,这正是我们更喜欢以人类的方式看待。 虽然 CRT 在产生深色阴影时可能需要电力,但我们的人眼却需要黑暗区域的视觉信息。 让我们进一步探讨这个主题,因为它对于理解 HDR 图像中使用的Gamma和其他传递函数的当前用途至关重要。

7、Gamma提高图像质量

我们的人眼非常擅长看到阴影,但不太擅长区分非常明亮区域的细微差别。 这与相机传感器不同,相机传感器对光具有线性响应,并平等地优先考虑所有区域。 由于内容是为人类消费而设计的,因此使用优先将数据放置在我们认为最重要的区域的系统是有意义的。 虽然反Gamma操作对于处理 CRT 固有的Gamma响应是必要的,但该反函数具有双重好处 - 在传输之前将阴影提升到更高的值,这意味着所有阴影都被给予更多的空间/带宽以准确地获得其值被捕获。

尽管 CRT 的响应会将其纠正回场景最初的样子,但这些附加值可以通过传输,并且仍然提供阴影着色的额外准确性。 因此,Gamma编码继续被使用,因为它使我们能够保留更多我们喜欢的有用信息,同时避免编码超出亮值所需的精度。 这减少了所需的处理能力和存储量。 这还意味着分配给无线广播的频谱可以使用Gamma编码比线性编码传输更高质量的图像。

下面是 8 位Gamma编码图像与使用线性亮度值创建然后再次传输回Gamma以便在当前眼前的显示器上查看的图像的外观对比。 这是一个很好的例子,说明了为什么我们在可交付成果的传输和存储中不使用线性亮度值。

仔细观察底部栏的阴影范围,你会发现渐变开始表现出明显的条带。 这是因为线性编码比人眼更优先考虑明亮区域的准确性,而这是以牺牲准确性较低的阴影为代价的。 如果我们要对电视使用线性光编码,那么除非我们使用更高的位深度,否则我们观看的大部分内容都会出现我们上面看到的阴影带问题。

8、Gamma是人类视觉的最佳传递函数吗?

因此,Gamma校正实际上是在 CRT 对能量输入的响应的基础上定义的,这就提出了一个问题:Gamma真的是人类观看图像的最佳传递函数吗? 既然我们不再受 CRT 显示器的限制,是否还有另一种曲线可以更好地服务于人类视觉? 随着高动态范围 (HDR) 图像的出现,杜比公司对此进行了一些研究。

9、Barten Ramp

Barten Ramp 是一个非常方便的图表,它绘制了大多数人在将潜在 HDR 图像一直映射到 10,000 尼特时可以开始看到渐变中的条带(即每个阴影之间的步骤)的位置。 绿色区域表示看不到条带,但红色区域表示可以看到条带,因此存在问题。

对于图像质量,我们希望图像始终保持在 Barten 阈值以下。 然而,如上图所示,为了使用标准Gamma传输函数实现这一点,我们需要允许每个通道 15 位。 如果我们只为每个通道分配 10 位,则较暗的区域仍然会出现条带伪影。 除了每通道 15 位对于商业系统的要求非常高(对于消费系统更是如此!)之外,它也是一种非常低效的数据使用; 图像的中间和明亮部分分配的数据远多于所需的数据。 13 位 Log 编码图像也保持在 Barten 阈值以下,但阴影编码效率低下,其中分配的值多于所需值。

​我们真正想要的是一条保持在 Barten 阈值以下的曲线,并尽可能接近该曲线,以保持最佳的编码效率。 这就是ST.2084,也被称为PQ传递函数。

10、PQ EOTF (ST.2084)

感知量化 (PQ:Perception Quantization) 传递函数专门设计用于最大限度地提高人类视觉的亮度编码效率,因此得名。 如下所示,它允许信号覆盖 0.001-10000 尼特,同时仅使用 12 位,没有可察觉的条带或步进伪影。

EOTF 是电光传递函数的缩写。 Gamma 也是一个 EOTF,但自从 HDR 图像被开发用于消费者观看以来,该术语的使用确实有所增加。 不要让这个名字吓到你,它真正指的是用于在电信号和我们的眼睛看到的光学信号之间进行转换的传递函数 - 因此是电光信号。 当摄像机记录场景时,可能会出现反函数,在这种情况下,它被称为 OETF(光电传递函数)。

由于 PQ 在如此宽的亮度范围内的效率,它被 HDR10、HDR10+ 和杜比视界 HDR 标准使用。 HDR10 品种以每通道 10 位的方式使用它,而杜比视界以每通道 12 位的方式对其内容进行编码,这使其始终保持在 Barten 阈值以下。 虽然乍一看,HDR10 和 HDR10+ 使用 10 位 PQ 函数(因为它位于 Barten 阈值之上)似乎是一个奇怪的选择,但在现实世界中,颗粒和噪声等图像特征会破坏条带伪影,因此 10 位信号并不像看上去那样有问题。

这里还应该提到的是,BBC 开发了另一种 EOTF,其工作原理与 PQ 的 HDR 功能不同。 称为混合对数Gamma(HLG)。 它使用将传统Gamma编码与对数编码系统相结合的传递函数来处理图像的最亮部分。 这使得一个信号能够同时包含 SDR(标准动态范围)和 HDR 图像,从而能够向后兼容现有电视机。 由于这种向后兼容性,许多人希望 HLG 作为广播混合了 SDR 和 HDR 显示器的 HDR 内容的首选 EOTF。

11、今天的传递函数

现在似乎是快速浏览一下当今使用的不同传递函数的最佳时机,因为它们根据颜色空间和可交付成果的预期目的地而变化。 应该注意的是,虽然这里列出的是常见的做法,但可以强制颜色空间使用备用传递函数 - 它们不会强行捆绑在一起。 色彩空间和传递函数是独立的操作,但通常使用特定色彩空间的图像按照惯例也会使用特定的传递函数。

色彩空间传递函数解释
sRGBsRGBsRGB 实际上有一个专门为其创建的传递函数。 实际上,它非常接近 2.2 的伽玛函数。
Rec.709Gamma 2.2-2.4、BT.1886Rec.709 没有指定要使用的传递函数,但实际上它通常在 gamma 2.2-2.4 之间。 BT.1886 规范形式化了一个略有不同的函数,看起来与 Gamma 2.4 非常相似,但保留了一些更极端的阴影细节。
P3-D65PQ供消费者使用的 P3 通常用于 HDR 内容,在这种情况下,通常最常采用 PQ 曲线。 对于标准动态范围,您应该与您的预期交付检查他们期望收到的传递函数。
P3-Theatrical2.6对于数字影院用途,指定伽玛为 2.6
Rec.2020Gamma 2.4、BT.1886、PQ 和 HLG对于 SDR 内容,最有可能使用 2.4 或 BT.1886 的 Gamma。 对于 HDR 内容,可能会使用 PQ 或 HLG 传输函数。

12、结束语

在本文中,我们了解了Gamma是什么、它为何存在以及它如何影响图像。

从 CRT 显示器的必要开始,Gamma编码几十年来一直充当次要目的—即它更有效地使用给定的位深度来优先考虑和编码对人类重要的视觉细节。

随着供消费者观看的高动态范围图像的出现,新的传递函数已经创建。 当以每通道 12 位运行时,PQ EOTF 能够对 0.001-10000 尼特的范围进行编码,且没有明显的条带。

HLG 是一种结合了Gamma和对数编码的替代 HDR EOTF,在 HDR 广播领域具有广阔的前景。


原文链接:理解Gamma传递函数 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/207228.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】gan网络原理生成对抗网络

【深度学习】gan网络原理生成对抗网络 GAN的基本思想源自博弈论你的二人零和博弈,由一个生成器和一个判别器构成,通过对抗学习的方式训练,目的是估测数据样本的潜在分布并生成新的数据样本。 1.下载数据并对数据进行规范 transform tran…

用Python进行gRPC接口测试(一)

前言 gRPC 是一个高性能、通用的开源RPC框架,其由 Google 主要面向移动应用开发并基于HTTP/2 协议标准而设计,基于 ProtoBuf(Protocol Buffers) 序列化协议开发,且支持众多开发语言。 自gRPC推出以来,已经广泛应用于各种服务之中…

UI自动化测试工具有哪些优势?

UI自动化测试工具通过提高测试效率、覆盖率,减少测试时间和成本,以及支持持续集成等方式,为软件开发团队提供了一系列重要的优势,有助于提升软件质量和开发效率。 自动化执行:UI自动化测试工具可以模拟用户与应用程序的…

ubuntu22下使用nvidia 2080T显卡部署pytorch

1.直接到NVIDA官网下载相应的驱动,然后安装官方驱动 | NVIDIA 2.下载相应版本cuda,并安装,安装时不安装驱动 3.conda install pytorch2.1.0 torchvision0.16.0 torchaudio2.1.0 pytorch-cuda12.1 -c pytorch -c nvidia 安装pytorch。 安装…

Qt应用开发--国产工业开发板全志T113-i的部署教程

Qt在工业上的使用场景包括工业自动化、嵌入式系统、汽车行业、航空航天、医疗设备、制造业和物联网应用。Qt被用来开发工业设备的用户界面、控制系统、嵌入式应用和其他工业应用,因其跨平台性和丰富的功能而备受青睐。 Qt能够为工业领域带来什么好处: -…

scratch《贪吃蛇》改编版——设计方案

一、设计思路 设计想法来自《贪吃蛇》游戏改编。《贪吃蛇》游戏的背景源自古老的瑞典神话,讲述一条巨蛇在世间蔓延,吞噬一切的传说。游戏的玩法很简单,玩家通过上下左右键控制蛇的方向,使其在地图上移动并吞噬食物,随…

Android 12 及以上授权精确位置和模糊位置

请求位置信息权限 为了保护用户隐私,使用位置信息服务的应用必须请求位置权限。 请求位置权限时,请遵循与请求任何其他运行时权限相同的最佳做法。请求位置权限时的一个重要区别在于,系统中包含与位置相关的多项权限。具体请求哪项权限以及…

创新药集采中选后是否还需进行学术营销推广模式?

药品集采中选给药企带来了大幅降价和以价换量的趋势,同时也成为药企争夺的关键领域。对于是否继续进行推广活动,存在不同的观点和认知。 ▼需要还是不需要? 一些人认为集采后不再需要推广,因为药企无法承担高昂的销售费用&#x…

11.29 知识回顾(视图层、模板层)

一、视图层 1.1 响应对象 响应---》本质都是 HttpResponse -HttpResponse---》字符串 -render----》放个模板---》模板渲染是在后端完成 -js代码是在客户端浏览器里执行的 -模板语法是在后端执行的 -redirect----》重定向 -字符串参数不是…

Java实现socket编程案例

以下是一个基本的Java socket编程案例: 服务端代码: import java.net.*; import java.io.*;public class Server {public static void main(String[] args) throws IOException {ServerSocket serverSocket null;try {serverSocket new ServerSocket…

深度学习今年来经典模型优缺点总结,包括卷积、循环卷积、Transformer、LSTM、GANs等

文章目录 1、卷积神经网络(Convolutional Neural Networks,CNN)1.1 优点1.2 缺点1.3 应用场景1.4 网络图 2、循环神经网络(Recurrent Neural Networks,RNNs)2.1 优点2.2 缺点2.3 应用场景2.4 网络图 3、长短…

生产制造中4种导致产品成本、库存核算差错的问题!(化工/化妆品/生物制剂/混凝土等行业ODOO)

在化工/化妆品/生物制剂/混凝土等行业,因为其生产物料及产成品大都以液体(或散颗粒)形态为主,多以重量为计数方式;且液体(或散颗粒)相较于固体的较大区别就是产品计数上变数较大,固体…

什么是企业资金

我从两个方面来诠释企业资金管理: 1、企业资金管理是什么? 2、企业资金管理包括什么? 一、企业资金管理是什么? 众所周知,每个企业都有对应的财务部门,专门负责管理企业的“钱”,和企业的“帐…

企业软件手机app定制开发趋势|小程序网站搭建

企业软件手机app定制开发趋势|小程序网站搭建 随着移动互联网的快速发展和企业数字化转型的加速,企业软件手机App定制开发正成为一个新的趋势。这种趋势主要是由于企业对于手机App的需求增长以及现有的通用应用不能满足企业特定需求的情况下而产生的。 1.企业软件手…

【数据结构】—AVL树(C++实现)

🎬慕斯主页:修仙—别有洞天 💜本文前置知识: 搜索二叉树 ♈️今日夜电波:Letter Song—ヲタみん 1:36━━━━━━️💟──────── 5:35 …

Ubuntu 20.04 for NVIDIA V100 GPU安装手册

安装Ubuntu 20.04.3 LTS版本 image.png 安装Ubuntu 20.04按照安装提示,仔细选择每一项,基本默认即可。 系统中查看GPU信息 系统安装完成之后,进入系统,使用lspci 命令查询一下GPU是否存在、型号信息是什么。 bpangbobpang:\~$…

C语言中一些有关字符串的常见函数的使用及模拟实现(2)

在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了\n⼀系列库函数,接下来我们就学习⼀下这些函数。 在上一篇博客中已经讲解了strlen,strcpy,strcmp,st…

XXL-Job详解(二):安装部署

目录 前言环境下载项目调度中心部署执行器部署 前言 看该文章之前,最好看一下之前的文章,比较方便我们理解 XXL-Job详解(一):组件架构 环境 Maven3 Jdk1.8 Mysql5.7 下载项目 源码仓库地址链接: https://github.…

el-drawer抽屉组件弹窗遮挡问题解决

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 1、根据需要,需要在下面窗口里弹出抽屉组件,但出现遮挡问题,如下&…

阿里云刚崩完又崩了?部分地域云数据库控制台访问异常

11月27日,阿里云发布公告:您好!北京时间2023年11月27日 09:16起,阿里云监控发现北京、上海、杭州、深圳、青岛 、香港以及美东、美西地域的数据库产品(RDS、PolarDB、Redis等)的控制台和OpenAPI访问出现异常…