gamma correction什么意思_伽马校正计算方法

gamma correction什么意思_伽马校正计算方法伽马是数字成像系统的一个重要特征,它定义了像素值与其实际亮度之间的关系。在标准显示器上面,如果没有伽马,数码相机拍摄到的阴影内容便会跟我们实际看到的有所差异。平时我们所说的伽马校正、伽马编码、伽马压缩,都是伽马曲线的各种应用场景,属于相似的概念。对于伽马工作原理的理解,一方面可以提高摄影者的曝光技术,另一方面可以帮助人们更好地利用后期的图像编辑功能。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

       伽马是数字成像系统的一个重要特征,它定义了像素值与其实际亮度之间的关系。在标准显示器上面,如果没有伽马,数码相机拍摄到的阴影内容便会跟我们实际看到的有所差异。平时我们所说的伽马校正、伽马编码、伽马压缩,都是伽马曲线的各种应用场景,属于相似的概念。对于伽马工作原理的理解,一方面可以提高摄影者的曝光技术,另一方面可以帮助人们更好地利用后期的图像编辑功能。

伽马的作用

       人眼视觉特性与相机的感光特性之间存在差异。相机的感光特性为线性的,如果传感器收到两倍的光子,那么响应电信号也会提升至两倍;人眼视觉特性是非线性的,感知亮度高于实际亮度,且实际亮度越小,感知亮度与实际亮度之间的差异越大。两者对应的特性曲线如下图所示。

gamma correction什么意思_伽马校正计算方法gamma correction什么意思_伽马校正计算方法

gamma correction什么意思_伽马校正计算方法

       从图中可以看到,人眼对于低亮部分的感知敏感度要高于高亮部分,从而使得视觉具有更广的亮度适应范围,一方面可以提高人类在夜晚对于危险的感知,另一方面可以避免高光造成视力损伤。

       通过伽马曲线可以完成人眼与相机的感光度之间的转换,在保存数字图像时,使用伽马编码获得我们所期望的符合人眼视觉特性的亮度值。

       使用伽马编码的图像可以更有效地存储色调信息。由于经过伽马编码后,更加符合人眼视觉特性,所以可以使用更少的比特位表示相同的亮度范围。线性编码与伽马编码之间的差异,如下图所示。

gamma correction什么意思_伽马校正计算方法

       从图中可以看到,使用伽马编码后,整个亮度范围内的灰阶基本呈现均匀分布,从而确保了后续的图像编辑,使得颜色和直方图都能够基于自然且感知均匀的色调。

       由于真实世界的图像通常至少具有256级灰阶(8bit),足以打印出平滑连续的色调内容。如果改用线性编码,则需要至少8倍的级别(11bit),才能够避免图像分色

伽马编码与伽马校正

       经由伽马编码的图像,在观看时,必须先进行伽马校正,从而保证输出原始场景内容。也就是说,伽马编码的目的是记录图像,而伽马校正的目的是真实地显示图像,其组合应用流程如下图所示。

gamma correction什么意思_伽马校正计算方法

1. 图像伽马

       每当将拍摄的图像转换为JPEG或TIFF文件时,可以通过操作相机或者RAW开发软件应用该功能。它可以将色调级别映射到感知均匀,从而更好地利用给定的位深。

2. 显示伽马

       视频卡或者显示设备的综合影响,通常可能会包含多组伽马曲线。显示伽马的主要目的是用于补偿图像伽马,从而确保显示的图像不会过亮。对于高对比度图像,如果显示伽马过大,可能导致暗部细节损失。

3. 系统伽马

       整个图像处理流程的所有伽马的叠加效果,也称为“观看伽马”。为了能够重视再现原始场景,理想情况下,它应该是一条直线,即gamma = 1.0,有时,为了提高画面对比度,可以将系统伽马设定为大于1.0的值,从而补偿由于显示设备的动态范围或者非理想观看条件和图像光斑所引起的显示限制。

图像文件的伽马

       精准的图像伽马通常会采用配置文件的形式嵌入在图像文件中。大多数的图像文件(使用sRGB和Adobe RGB 1989色彩空间的图像)均会采用1/2.2的编码伽马,RAW文件是个例外,它会使用线性伽马。但是,在使用RAW图像查看工具时,会假定标准编码伽马为1/2.2,否则显示的图像会偏暗,如下图所示。

gamma correction什么意思_伽马校正计算方法

       对于没有嵌入配置文件的图像,通常也会假定假定标准编码伽马为1/2.2。这种图像通常包括:从网页保存到本地的部分JPEG文件,以及许多PNG和GIF文件。

       实际上,文件伽马代表相机伽马和编码伽马的组合。但是,因为大多数的数码相机都采用线性的感光方式,所以会将它们的伽马假定为1.0,除非相机厂商有特别的设定,才会对文件伽马有所影响。

显示伽马

       显示伽马主要是对图像伽马进行补偿,用于校正显示设备或者调整显示图像的对比度,行业内通常采用2.2作为显示伽马的标准值。下图展示了显示伽马对于系统伽马的影响以及实际图像的现实效果。

gamma correction什么意思_伽马校正计算方法

       从图中可以看到,图像伽马为1/2.2,对比实际拍摄场景,当显示伽马为1.0时,由于没有补偿效果,系统伽马与图像伽马一致,导致画面过亮;当显示伽马为1.8时,由于补偿不足,画面依然过亮;当显示伽马为2.2时,刚好相互抵消,系统伽马为直线,真实反映拍摄场景;当显示伽马为4.0时,由于补偿过度,导致画面过暗。

       实际上,显示伽马由两部分组成:(i)原始CRT显示器或者LCD显示器本身的伽马曲线,(ii)显示器内部或视频卡所使用的伽马校正曲线。最终的显示伽马高度取决于显示设备的类型。

gamma correction什么意思_伽马校正计算方法

1. CRT显示设备

       CRT的固有伽马为2.5,使用~1/1.1的校正系数,便可以达到2.2的显示伽马标准,通常制造商已经对该系数进行了默认设定。

2. LCD显示设备

       LCD通常需要使用查找表(LUT)的方式进行校正,以便达到2.2的显示伽马标准。

相关知识内容

  • 动态范围:伽马编码,一方面可以确保图像数据的有效使用;另一方面,对于给定位深,它可以增加记录的动态范围。伽马还可以通过改变图像对比度,帮助显示设备或打印机管理其有限的动态范围。
  • 伽马校正:将伽马应用于抵消某些前期操作的效果。
  • 伽马压缩/扩展:分别指应用的伽马小于或者大于1.0的情况。因此,文件伽马可被视为伽马压缩,显示伽马可被视为伽马扩展。
  • 适用性:严格来讲,伽马是指遵循简单幂律的色调曲线,但是它也经常用于描述其他色调曲线。比如sRGB色彩空间,在低亮区域遵循线性规律,高亮区域遵循曲线规律,虽然都不是标准的幂律曲线,但是其总体伽马接近2.2。
  • 是否必须使用伽马?不是,比如RAW文件,因为它使用线性伽马,所以可以使用具有线性伽马的显示设备直接显示图像。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189987.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux被kdevtmpfsi 挖矿病毒入侵[通俗易懂]

    Linux被kdevtmpfsi 挖矿病毒入侵[通俗易懂]Linux被kdevtmpfsi挖矿病毒入侵一.错误信息二.解决问题1.首先停掉kdevtmpfsi的程序2.删除Linux下的异常定时任务3.结束kdevtmpfsi进程及端口占用4.删除掉kdevtmpfsi的相关文件一.错误信息先上阿里云上的报警信息。有个最大的问题是:top命令查看自己服务器CPU运行情况,会发现kdevtmpfsi的进程,CPU使用率为100%,第一次删除干净了k…

    2022年5月30日
    33
  • 行为识别数据集汇总[通俗易懂]

    行为识别数据集汇总[通俗易懂]工欲善其事,必先利其器http://www.cs.utexas.edu/~chaoyeh/web_action_data/dataset_list.html,此链接内容更全,可惜整理完后发现的。1.TheKTHDataset(2004)KTH数据集于2004年的发布,是计算机视觉领域的一个里程碑。此后,许多新的数据库陆续发布。数据库包括在4个不同场景下25个人完成的6…

    2022年6月21日
    72
  • js 闭包传参_JavaScript闭包演示

    js 闭包传参_JavaScript闭包演示有个网友问了个问题,如下的html,为什么每次输出都是5,而不是点击每个p,就alert出对应的1,2,3,4,5。闭包演示functioninit(){varpAry=document.getElementsByTagName(“p”);for(vari=0;ipAry[i].onclick=function(){alert(i);}}}产品一产品二产品三产品四产品五解决方…

    2022年6月15日
    62
  • 0xc000007b报错(win10 0xc000007b蓝屏)

    最后更新:2019-3-23请大家首先确定已经按照原文的方法及步骤尝试过,但是还是没有解决问题再来看这篇文章。如果你还没有看过原文,请先看原文:http://blog.csdn.net/VBcom/article/details/6070705看到这里的朋友,应该是看了原文但是没有解决问题。其实这个问题基本上就是由DirectX引起,但是…

    2022年4月10日
    95
  • C++11新特性之线程操作

    C++11之前没有对并发编程提供语言级别的支持,这使得我们在编写可移植的并发程序时,存在诸多的不便。现在C++11增加了线程以及线程相关的类,很方便地支持了并发编程,使得编写的多线程程序的可移植性得到

    2021年12月28日
    39
  • 三维空间坐标系变换-旋转矩阵「建议收藏」

    三维空间坐标系变换-旋转矩阵「建议收藏」    空间中三维坐标变换一般由三种方式实现,第一种是旋转矩阵和旋转向量;第二种是欧拉角;第三种是四元数。这里先介绍旋转矩阵(旋转向量)与欧拉角实现三维空间坐标变换的方法以及两者之间的关系。    这里以常见的世界坐标系与相机坐标系间的变换为例。一、首先介绍从相机坐标系转换到世界坐标系,也就是比较通用的body到世界坐标系间的转换。    那么旋转的欧拉角按从世界坐标…

    2022年10月25日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号