news 2026/5/7 11:55:07

图像 Gamma 校正

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
图像 Gamma 校正

1. gamma校正的起因:人眼感知光线的特殊性

对于现实世界的光的强度来说,描述光的强弱,是根据光子在单位面积上的光子数量来描述的,这是物理规则,这是没错的,光的亮度(强度)是和光子数量成正比的。但是对于人眼来说,由于人眼的特殊构造,0.1倍光子数量的感知亮度,并不是等于0.2倍光子数量感知亮度的一半,也就是说眼睛感知亮度不是和光子数量成固定比例的,即眼睛感知亮度和光子数量之间的关系为非线性关系。为了把这两者的亮度关系说清楚,我们先定义几个名词:

物理亮度:表示光的强度,用光子数量乘以1个常量系数产生出来的值,也就是说光子数量与光的亮度(这里说的是物理亮度,不是眼睛感觉到的亮度)成正比。

感知亮度:眼睛感觉到光的亮度(光子进入眼睛视网膜,让大脑产生亮的程度)。

物理线性:以物理光子数量描述的线性数值空间,此空间值范围为[0.0, 1.0],0.0表示全黑(最暗),1.0表示全白(最亮)。

感知线性:以光子进入人眼产生的感知亮度描述的线性数值空间,此空间值范围也是[0.0, 1.0],0.0表示全黑,1.0表示全白。

我们把物理光子的亮度划为11个等级,0-10,分别对对应着由完全黑到完全白,每个等级递增0.1;然后我们也把人眼感知亮度也按同样的规则划分11个等级,如下图所示:

上图中上排是物理线性数值亮度,下排是感知线性数值亮度。这两者在各自的数值空间是线性的。对上排来说,0.2表示的光子数量是0.1表示的光子数量的2倍。对下排来说,0.2的感知亮度是0.1的感知亮度的2倍。注意:因为我们要对比两种亮度的关系,所以把上排中的光子数量转换成了感知亮度,即以颜色方块显示出来,如果不转换到同一个空间中就没法对比,不是吗?如何转换,下面会有讲述的。上排的1.0的颜色值是精确对应着下排1.0的颜色值,即全亮的物理光子表现出来的感知亮度就是感知线性空间的最高感知亮度。

我们先看下排,下排的数值是在感知线性空间上的,没错,0.2处的亮度是0.1处的两倍,0.5处就是中间亮度,也是1.0亮度的一半,可以看到0.5的数字都没有显示出来,是因为字体颜色就是用0.5的颜色画的。每一个亮度比上一级的亮度的增量都是0.1,这就是和我们眼睛感觉的一样的。

再来看上排,我们可以看到上排起步(0.1处)就有比下排起步(0.1处)明显亮很多,其亮度在下排的[0.3, 0.4]之间的一个值,但是接下来,虽然光子数量都是以0.1倍的增加,表现出来的亮度也一直是在增加,但是亮度的增值却一直在递减!0.2处的亮度居然和感知线性空间的0.5的亮度差不多,因为0.2处也没有显示出来“0.2”这个数值;0.3处的亮度在感知线性空间的[0.5, 0.6]之间的一个亮度值。通过上排的光子数量和光子表现出来的亮度分析,得出物理亮度和感知亮度是非线性的,具体来说是,是幂律关系。

2.gamma校正的方法

当我们拿照相片对着场景中拍摄时,光线从镜头进入照相机,我们人眼看到的场景亮度是感知亮度,场景的光子进入照相机(照相机镜头是物理光学器材,只能接收光子,无法接收什么感知亮度值),这些光子是构成了物理亮度,如果就按照这么个流程的话,那么照相机中保存场景图片的值是光子数量相关的一个值,即是物理亮度值,然后这个物理亮度值不做任何修改直接通过照相机的屏幕发射出来,我们人眼接触到这些由屏幕发射出来的光子,正好是可以产生和直接看场景一样的感知亮度,完美!看起来似乎很完美,真的可以这样吗?

下面把这个流程用流程图过一遍:

假设相机中图片直接存物理亮度信息的流程

上面这个流程看起来相当完美,实际上是通不行的,是因为我们保存图片的精度有问题,而精度问题又是由物理亮度造成的。

ISP在将图像编码为我们常用的8位图像之前,会进行一次所谓的色调重建的过程。而且,这个过程不仅仅是对图像的压缩保存需要,对图像的显示也是需要的:

当我们对图像进行编码时,需要符合人类的感知曲线,优化编码效率。简单说,我们分配较少的bit数给人类较难区分的图像亮区,分配更多的bit数来突出人类更加敏感的图像暗区

对于显示设备也是一样。无论显示设备的伽马特性如何,它们都需要伽马编码来最大限度地提高信号的视觉质量。它会执行所谓的Gamma校正过程,最终使得我们看到的依然是线性的显示图像。

以上,也就介绍了为什么我们看到的RAW图像很暗。因为经过我们前面处理后的RAW图像依然是线性的,显示设备的Gamma校正过程会进一步压低暗区,使得我们看到很暗的图像——这就是为什么我们现在需要进行Gamma编码。

参考文献

为什么要对图像做Gamma校正?如何做?

详解 gamma 校正 - 知乎

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 11:54:18

【优化】阿里云跨账号内网互通

使用内网ip提高速度 阿里云VPC对等连接提供连通两个VPC的网络连接,您可以使用私有IP地址直接通信,两个VPC就像在同一个网络中一样。您可以与自己同地域或者跨地域其他VPC之间创建对等连接,也可以与其他账号的同地域或者跨地域VPC之间建立对等…

作者头像 李华
网站建设 2026/5/7 11:53:28

Windows原生运行安卓应用:告别模拟器的轻量级革命

Windows原生运行安卓应用:告别模拟器的轻量级革命 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 核心关键词:APK Installer、Windows安卓应用、…

作者头像 李华
网站建设 2026/5/7 11:50:21

基于 Taotoken 构建支持多模型切换的智能内容创作平台

基于 Taotoken 构建支持多模型切换的智能内容创作平台 1. 多模型内容创作场景需求分析 在智能内容创作领域,不同创作类型对生成模型的需求存在显著差异。小说创作可能需要更强的叙事连贯性和角色塑造能力,商业文案需要精准的品牌调性把控,而…

作者头像 李华
网站建设 2026/5/7 11:49:44

Vue3数据模拟实战:前端独立开发的终极解决方案

Vue3数据模拟实战:前端独立开发的终极解决方案 【免费下载链接】vue-manage-system Vue3、Element Plus、typescript后台管理系统 项目地址: https://gitcode.com/gh_mirrors/vu/vue-manage-system 在现代前端开发中,前后端分离已成为主流模式&am…

作者头像 李华
网站建设 2026/5/7 11:47:40

BthPS3蓝牙驱动:Windows上完美连接PS3控制器的终极解决方案

BthPS3蓝牙驱动:Windows上完美连接PS3控制器的终极解决方案 【免费下载链接】BthPS3 Windows kernel-mode Bluetooth Profile & Filter Drivers for PS3 peripherals 项目地址: https://gitcode.com/gh_mirrors/bt/BthPS3 还在为PS3控制器在Windows电脑上…

作者头像 李华