色彩管理中的Gamma值的理解

news2024/11/16 6:31:29

目录

  • 广义的Gamma值
  • 为什么要将输出和输入做Gamma运算?
  • 显示器的Gamma值
  • 什么是Gamma值为1.0线性响应?
  • 显示器的Gamma值标准是多少?
  • 为什么sRGB在Gamma0.45空间?
  • 打印机、印刷机Gamma值?
  • 印刷机Gamma与显示器的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校正的图像对比

为什么sRGB在Gamma0.45空间?

假设你用数码相机拍一张照片,你看了看照相机屏幕上显示的结果和物理世界是一样的。可是照相机要怎么保存这张图片,使得它在所有显示器上都一样呢? 可别忘了所有显示器都带Gamma2.2。反推一下,那照片只能保存在Gamma0.45空间,经过显示器的Gamma2.2调整后,才和你现在看到的一样。换句话说,sRGB格式相当于对物理空间的颜色做了一次伽马校正

还有另外一种解释,和人眼对暗的感知更加敏感的事实有关。
在这里插入图片描述

如图,在真实世界中(下方),如果光的强度从0.0逐步增加到1.0,那么亮度应该是线性增加的。但是对于人眼来说(上方),感知到的亮度变化却不是线性的,而是在暗的地方有更多的细节。换句话说,**我们应该用更大的数据范围来存暗色,用较小的数据范围来存亮色。**这就是sRGB格式做的,定义在Gamma0.45空间。而且还有一个好处就是,由于显示器自带Gamma2.2,所以我们不需要额外操作显示器就能显示回正确的颜色。

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

参考文章

色彩管理中的Gamma值的理解

伽玛(Gamma)2.2和5个预设Gamma值

Gamma、Linear、sRGB 和Unity Color Space,你真懂了吗?

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv8改进,YOLOv8替换主干网络为VanillaNet( CVPR 2023 华为提出的全新轻量化架构),大幅度涨点

改进前训练结果: 改进后训练结果: 摘要 基础模型的核心理念是“更多即不同”,这一理念在计算机视觉和自然语言处理领域取得了惊人的成功。然而,变压器模型的优化挑战和固有复杂性呼唤一种向简化转变的范式。在本研究中,引入了VanillaNet,一种拥抱设计优雅的神经网络架构…

Ansible部署与应用基础

由于互联网的快速发展导致产品更新换代速度逐步增长,运维人员每天都要进行大量的维护操作,按照传统方式进行维护使得工作效率低下。这时部署自动化运维就 可以尽可能安全、高效的完成这些工作。 一、Ansible概述 1.什么是Ansible Ansible 是基于 Pytho…

Linux中使用cp命令的 -f 选项,但还是提醒覆盖的问题

问题: linux 在执行cp的命令的时候,就算是执行 cp -f 也还是会提醒是否要进行替换。 问题原因: 查看别名,alias命令,看到cp的别名为cp -i,那就是说cp本身就是自带覆盖提醒,就算我们加上-f 的…

《机器人SLAM导航核心技术与实战》第1季:第9章_视觉SLAM系统

视频讲解 【第1季】9.第9章_视觉SLAM系统-视频讲解 【第1季】9.1.第9章_视觉SLAM系统_ORB-SLAM2算法(上)-视频讲解 【第1季】9.1.第9章_视觉SLAM系统_ORB-SLAM2算法(下)-视频讲解 【第1季】9.2.第9章_视觉SLAM系统_LSD-SLAM算法…

TikTok提示“Network is out of reach”怎么处理?

当TikTok提示“Network is out of reach”时,意味着应用无法连接到互联网。导致这一问题的常见原因包括网络连接不稳定、地理限制或网络设置与应用不兼容等。解决方法有:拔除手机卡、关闭手机定位服务、切换至稳定的海外IP网络等。使用TikTok专用网络也可…

用户态缓存:链式缓冲区(Chain Buffer)

目录 链式缓冲区(Chain Buffer)简介 为什么选择链式缓冲区? 代码解析 1. 头文件与类型定义 2. 结构体定义 3. 宏定义与常量 4. 环形缓冲区的基本操作 5. 其他辅助函数 6. 数据读写操作的详细实现 7. 总结 8. 结合之前的内容 9. 具…

利用LRZ压缩与Base64编码实现高效文件上传

引言 在当今互联网时代,文件上传已成为众多在线服务不可或缺的一部分,尤其是在社交媒体平台上的照片分享和云存储服务中的文档管理等场景,高效且安全的文件上传机制对于保障用户体验至关重要。 为此,本文将介绍一种结合了LRZ压缩…

汇川AM400脉冲轴控制(轴控功能块ST源代码)

汇川AM400如何和编程软件通信连接 汇川AM400PLC如何和编程软件通信连接_汇川am400读取程序-CSDN博客文章浏览阅读159次。本文介绍了如何使用CODESYS编程软件与汇川AM400PLC进行通信连接,包括扫描网络、修改IP地址、刷新日志和下载监控程序的步骤。同时,文章提到了CODESYS编程…

灯塔:JavaScript

Web标准也称为网页标准,由一系列的标准组成,大部分由W3C(World Wide Web Consortium,万维网联盟)负责制定。 三个组成部分: HTML:负责网页的基本结构(页面元素和内容)。 CSS&…

go 安装依赖超时

一、配置代理 go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.io,direct go get github.com/unidoc/unioffice

ODrive电机驱动算法VScode环境配置笔记教程

1、ODrive基本介绍 ODrive 是一个开源的优秀电机控制器项目,旨在为各种应用提供高性能、高可靠性的电机控制解决方案。这个项目是专门用于驱动无刷直流电机(BLDC)和永磁同步电机(PMSM)的高性能开源伺服控制系统。ODriv…

AI绘制调整虚线教程

1、打开ai的软件,执行菜单栏中的文件—新建,新建一个大小任意的画板,画板大小根据自己的需要来设置。 2、选择工具箱中的直线段工具,将填充设置为无,描边设置为黑色,描边大小稍微设置大一点,画一…

【学习笔记】STM32F407探索者HAL库开发(五)F407时钟系统配置

【学习笔记】STM32F407探索者HAL库开发(四)F407时钟系统配置 1 F407_CubeMX时钟树配置(传送门)2 STM32F407时钟树2.1 STM32F407时钟系统图2.2 STM32F103时钟树简图2.2.1 高速部分2.2.2 低速部分 2.3 时钟源2.3.1 外部时钟源2.3.2 …

SOCKS5、HTTP 代理IP协议有何区别?

在网络通信领域,代理服务器的选择对于数据安全和传输效率至关重要。SOCKS5代理和HTTP代理作为两种常用的代理类型,各自具有独特的特点和适用场景。本文将深入探讨SOCKS5代理与HTTP代理的区别、特性及应用场景,为用户提供选择指南。 一、SOCK…

数据结构:二叉树(一)

ps:偷懒了几天,接着更新 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的…

MODIS/Landsat/Sentinel下载教程详解【常用网站及方法枚举】

⛄前言 在当今快速发展的地球观测时代,遥感技术作为获取地球表面及其环境信息的重要手段,正以前所未有的广度和深度改变着我们对自然界的认知与管理方式。MODIS(Moderate-resolution Imaging Spectroradiometer,中分辨率成像光谱…

【全网最全】2024华为杯研赛D题完整代码建模过程+py代码(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片,那是获取资料的入口! 点击链接加入【2024华为杯研赛资料汇总】:https://qm.qq.com/q/XzdIsvbiM0 https://qm.qq.com/q/XzdIsvbiM0 问题一 .在众多描述地理环境的变…

科研绘图系列:R语言箱线图和连线图(boxplot linechart)

文章目录 介绍加载R包导入数据画图1画图2画图3画图4系统信息介绍 箱线图表示组间差异,连线图表示数据波动。 加载R包 library("here") library("tidyverse") library("ggpubr") library("scales"

Git从了解到操作

Git常用命令 基本的linux命令 ls / ll 查看当前目录( ls 是查看目录有哪些文件夹,ll 是查看隐藏文件)cat 查看文件内容touch 创建文件vi vi编辑器 (使用 vi 编辑器是为了方便展示效果,也可以记事本、editPlus、notPad等其它编辑器) 备注 Git GUl: Gi…

数值计算 --- 平方根倒数快速算法(0x5f3759df,这是什么鬼!!!)

平方根倒数快速算法 --- 向Greg Walsh致敬&#xff01; 写在最前面&#xff1a; 上图中的这段代码出自一个早期的3D游戏<雷神之锤>的源代码&#xff0c;它实现的功能就是计算一个数x的平方根的倒数&#xff1a; 这段代码之所以称之为经典&#xff0c;私以为主要是因为以下…