图像伽马校正_自动梯形校正

图像伽马校正_自动梯形校正一、Gamma校正1、颜色空间图中可以看到,sRGB和Rec.709的色域虚线一样,三原色的位置是相同的,那么它们之间的区别就是:传递函数不同2.传递函数定义知道了颜色的颜色值之后,想要在电子设备上显示,就需要把它转换为视频信号,需要一个函数来换算,传递函数就是用来做转换的。传递函数包括两部分光转电传递函数(OETF),把场景线性光转到非线性视频信号值。电转光传递函数(EOTF),把非线性视频信号值转到显示光亮度。3.Gamma校正定义伽马是显示器电光传递函.

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

Jetbrains全系列IDE稳定放心使用

一、Gamma校正

1、颜色空间

图像伽马校正_自动梯形校正

 图中可以看到,sRGB和Rec.709的色域虚线一样,三原色的位置是相同的,那么它们之间的区别就是:传递函数不同

2.传递函数

定义

知道了颜色的颜色值之后,想要在电子设备上显示,就需要把它转换为视频信号,需要一个函数来换算,传递函数就是用来做转换的。

传递函数包括两部分

光转电传递函数(OETF),把场景线性光转到非线性视频信号值。

电转光传递函数(EOTF),把非线性视频信号值转到显示光亮度。

3.Gamma校正

定义

伽马是显示器电光传递函数的一种,是指对线性三色值和非线性视频信号之间进行编码和解码的操作。

例子:

OETF:拍到的照片,存在电脑里,就是把自然界中的光信号编码为视频信号

EOTF:查看照片时,就要把视频信号还原为线性的光信号,进行解码操作

线性空间(相机捕捉到的真实世界光信号) + gamma编码 + 显示器显示 = 结果

图像伽马校正_自动梯形校正

 

左图为存在硬盘中,将捕获到的物理数据做一次gamma值约为0.4的映射

中间为显示图像时,需要为每一个像素做一次gamma值约为2.2的校正,来使的最终结果为正确的物理数据。

经过gamma校正好,之前偏亮的图像亮度降低了。

图像伽马校正_自动梯形校正

 

二、为什么用Gamma校正

概括

1、和人眼的特性有关

人眼对暗部的变化感应更敏感

2、非线性转换为了优化存储空间和带宽

我们用于显示图像数据都是8bit,要充分利用带宽,就需要使用更多位置去存储暗部值。也就是 暗部使用高精度保存,亮部使用相对较低精度保存。

伽马2.2的存在和显示器本身没有任何因果关系,伽马2.2是为了让8位图 有限的存储空间可以表达适合人眼的色彩感知特性而不产生色彩断层(因为人眼对亮部和暗部的感知是非线性的,对暗部更敏感),伽马2.2的目的是将有限的色彩信息存储空间更多地留给暗部

1、人眼特性展开

韦伯定理

当所受刺激越大时,需要增加的刺激也要足够大才会让人感觉到明显的变化,但是只适用于中等强度的刺激

全黑时增加一点亮度就能看到变化,每一次都要比上次增加更多的光照量才能看到变化,所以暗部我们感知细腻,亮部看不出变化

美术上的均匀和物理上的均匀

图像伽马校正_自动梯形校正

上边是视觉上的均匀变化,而下边是物理量上的均匀变化。

理论上上边的中灰是物理量上(下边)的21.8%,视觉上认为的美术中灰色,大约是物理中灰色的20%

Gamma校正就是一个把物理灰阶映射成美术灰阶的函数

图像伽马校正_自动梯形校正

为什么现实中看到的光强度变化是正确的,不能忠实的记录下来显示就行了,而要来回转换呢?

2、优化带宽展开

8位通道图片只能储存256种灰阶

现实有无限灰阶,8位通道图片只能储存256种灰阶有要节约使用

上一点我们知道人眼对亮部不敏感,对暗部敏感

如果用物体上物理光照强度的50%作为采样中线

按照物理光强的变化来均匀采样

可以看到人眼感知到的亮部区域用了大量灰阶来采样,而暗部却很少,因为暗部的物理变化量小

图像伽马校正_自动梯形校正

如果均匀采样物理灰阶,暗部只有56个层次可用

图像伽马校正_自动梯形校正

 暗部采样灰阶不够用便会出现巨大色阶断层

图像伽马校正_自动梯形校正

 均匀记录美术灰阶的样本分布

就可以解决这个问题 

图像伽马校正_自动梯形校正

所以为了用有限的灰阶采集到人眼感兴趣的信息,我们需要使用伽马校正在美术灰阶和物理灰阶之间转换

三、应用

图像伽马校正_自动梯形校正

 图像伽马校正_自动梯形校正

 图像伽马校正_自动梯形校正

 

unity中的伽马设置

图像伽马校正_自动梯形校正

 图像伽马校正_自动梯形校正

 Unity中GAMMA校正的一些内置函数 图像伽马校正_自动梯形校正

 Unity中GAMMA校正的一些内置函数

inline float GammaToLinearSpaceExact (float value)
{
        if (value <= 0.04045F)
            return value / 12.92F;
        else if (value < 1.0F)
            return pow((value + 0.055F)/1.055F, 2.4F);
        else
            return pow(value, 2.2F);
}
inline half3 GammaToLinearSpace (half3 sRGB)
{
        // Approximate version from http://chilliant.blogspot.com.au/2012/08/srgb-approximations-for-hlsl.html?m=1
        return sRGB * (sRGB * (sRGB * 0.305306011h + 0.682171111h) + 0.012522878h);

        // Precise version, useful for debugging.
        //return half3(GammaToLinearSpaceExact(sRGB.r), GammaToLinearSpaceExact(sRGB.g), GammaToLinearSpaceExact(sRGB.b));
}
 inline float LinearToGammaSpaceExact (float value)
 {
        if (value <= 0.0F)
             return 0.0F;
        else if (value <= 0.0031308F)
            return 12.92F * value;
        else if (value < 1.0F)
            return 1.055F * pow(value, 0.4166667F) - 0.055F;
        else
           return pow(value, 0.45454545F);
}
inline half3 LinearToGammaSpace (half3 linRGB)
{
        linRGB = max(linRGB, half3(0.h, 0.h, 0.h));
        // An almost-perfect approximation from http://chilliant.blogspot.com.au/2012/08/srgb-approximations-for-hlsl.html?m=1
        return max(1.055h * pow(linRGB, 0.416666667h) - 0.055h, 0.h);

        // Exact version, useful for debugging.
        //return half3(LinearToGammaSpaceExact(linRGB.r), LinearToGammaSpaceExact(linRGB.g), LinearToGammaSpaceExact(linRGB.b))
}

Substance Painter

图像伽马校正_自动梯形校正

 

PS

从PS中导出图片,如果把灰度系数设为一的话,在Unity中就不需要勾选sRBG选项了;

如果PS中什么都不做设置的话,在Unity中勾选sRGB选项即可。

图像伽马校正_自动梯形校正

 

Document Color Profile

  • PS对于颜色的管理是很精准的,我们在Unity中看到的颜色要经过显示器的gamma变换,而PS中的不会,PS会读取显示器的Color Profile,反向补偿回去

    • 也就是说,ps中的是真实的颜色值

  • PS自身有一个系统,会通过灰度值控制颜色的显示,(通常情况下这个值和显示器的gamma值一致,所以看起来会和Unity中看到效果的一样),可以通过改变灰度值来改变最终颜色显示的结果。

  • PS中8位通道   ctrl+t缩小、柔边笔刷涂抹、高斯模糊 显示结果都不是真实物理颜色

和渲染器是一个道理。

问题都处在:想做物理计算,工作环境却是8位通道的非线性色彩空间,计算结果会比预期更暗、更黑

缩小的操作

日常中影响不大,但在极端情况下会出错,例如下图情况(高频变化的信息一定会出错)

图像伽马校正_自动梯形校正

 图中黑白格易拉宝,如果要ctrl+t缩小画面,图中的黑(0)白(1),就要求平均色,也就是0.5,但是在8位通道环境下,0.5对应128号灰(美术中灰);但是物理世界中,离远看如果是50%的反射率,应该是物理中灰,但是PS算出来的却是美术的中灰(物理的0.218)。

  • 解决方法:图像—模式中选择32位通道即可

柔边笔刷涂抹

涉及到线性插值方程、本质上是模拟半透明物体的前后遮挡

图像伽马校正_自动梯形校正

 高斯模糊

32位通道下的高斯模糊滤镜有非常自然的混合效果

图像伽马校正_自动梯形校正

下面8位通道的高斯模糊偏暗

图像伽马校正_自动梯形校正

 存储的小技巧

在32位通道下完成操作(计算),最后再切换为8位通道保存

半透明效果

Unity中:

Unity进行半透明混合时,会先将它们转换到一个线性空间下然后再混合

PS中:

PS的图层和图层之间做混合时,每个上层的图层都会读取他们的Color Profile(gamma值),然后经过一个gamma变换再做混合,这样做得结果就会偏暗一些。

(可以在它的工作空间 的设置中进行更改,选择用灰度系数混合RGB颜色,参数设置为一,这样图层才是一个最终直接混合的结果

图像伽马校正_自动梯形校正

 unity设置中修改

图像伽马校正_自动梯形校正

 Linear空间

图像伽马校正_自动梯形校正

 Gamma空间

图像伽马校正_自动梯形校正

 参考资料

Unity Gamma校正 转为线性空间 – 知乎

【技术美术百人计划】图形 2.6 伽马校正_哔哩哔哩_bilibili

Gamma校正与线性工作流入门讲解_哔哩哔哩_bilibili

色彩校正中的 gamma 值是什么? – 知乎

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2026年3月9日 下午3:43
下一篇 2026年3月9日 下午4:15


相关推荐

  • mac idea2022.01 激活【最新永久激活】

    (mac idea2022.01 激活)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~747EFQ8BIF-eyJsaWNlbnNlSWQiOi…

    2022年3月31日
    356
  • 组件图(构件图)

    组件图(构件图)一 定义 1 组件图又称为构件图 ComponentDia 组件图中通常包括组件 接口 以及各种关系 组件图显示组件以及它们之间的依赖关系 它可以用来显示程序代码如何分解成模块或组件 一般来说 组件就是一个实际文件 可以有以下几种类型 nbsp nbsp 源代码组件 一个源代码文件或者与一个包对应的若干个源代码文件 nbsp nbsp 二进制组件 一个目标码文件 一个静态的或者动态的库文件

    2026年3月20日
    2
  • Android SDK目录及版本号区别

    Android SDK目录及版本号区别今天又有人问 Tools Build Tools Platform tools 有什么区别 是干嘛的 现在对 SDK 目录做一下总结阐述 SDK 目录 add ons 这里面保存着附加库 第三方公司为 android 平台开发的附加功能系统 比如 GoogleMaps 当然你如果安装了 OphoneSDK 这里也会有一些类库在里面 docs 这里面是 AndroidSDKAP 参考文档 所有的 API 都可以在这里查到

    2026年1月20日
    2
  • MySQL字段类型对应Java字段

    MySQL字段类型对应Java字段前言 MySQLConnect J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的 一般来讲 任何 MySql 数据类型都可以被转换为一个 java lang String 任何 MySql 数字类型都可以被转换为任何一种 Java 数字类型 当然这样也可能出一些四舍五入 溢出 精度丢失之类的问题 Java 基础类型与包装类型 a 如果数据库

    2026年3月17日
    2
  • 虚拟机ping不通主机,但是主机可以ping通虚拟机

    虚拟机ping不通主机,但是主机可以ping通虚拟机我在Windows10系统安装了虚拟机,设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机。我的操作是:关闭防火墙,发现虚拟机可以ping通主机了。说明是Windows10防火墙阻止了。现在存在的问题是:如果我一直关闭防火墙也不是个事啊?这样做会影响我的电脑安全的。于是我想我要先确定防火墙阻止了什么,导致需要关闭防火墙?于是网上查看资…

    2025年8月11日
    10
  • nfs图片服务器

    nfs图片服务器最近公司需要 图片从应用里面分离出来 如果将图片服务和应用服务放在同一个服务器的话 应用服务器很容易会因为图片的高 I O 负载而崩溃 因此对于有些大型网站项目 我们有必要将图片服务器和应用服务器分离 下图是我画的一个简单的用户 应用服务器 nfs 图片服务器的一个流转草图 从图片上分析 nbsp 192 168 1 252 作为服务器 nbsp 192 168 1 251 作为客户端

    2025年9月18日
    5

发表回复

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

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