Gamma空间精简讲解

GammaCorrection起源于CRT显示器的非线性输出问题,但现在它更多地与人眼对亮度感知相关。人眼对低亮度变化更敏感,Gamma校正通过非线性操作优化图像信息,保留更多暗部细节。在处理图像时,通常需要在着色器中进行幂运算以适应线性与非线性颜色空间的转换。 Gamma校正的关键在于理解人眼感知和图像处理之间的平衡。
摘要由CSDN通过智能技术生成

在查找相关资料的过程中,看到了很多人争论,出现Gamma Correction到底是人对自然亮度的感知原因,还是由于早期的 CRT 显示器存在非线性输出的问题。在研究了一些Gamma Correction资料后,个人认为早期Gamma Correction的出现是由于原来的 CRT 显示器存在非线性输出的问题,而在显示器完全可以解决非线性输出的问题的今天,Gamma Correction的存在更多的是由于人对自然亮度的感知。

人眼对环境光的不是随着光的强度线性增加的,越暗的地方,变化感受越明显,设1为白色,当环境为白色的0.2的时候,人眼感受的已经是0.5了:

Gamm校正的定义:Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系:这个指数即为Gamma.

 

由于图像信息保存位数是有限的,为了更大限度的保存人眼能识别的颜色范围,需要多保存暗处信息,少保存亮度信息,因此照相机这保存图像是需要对原始颜色做个gamma校正,一般pow(0.45),这样图片保存的颜色空间就在gamma空间了。至于为什么是0.45这就是人眼的问题了。

 

一般图片RGB色彩都是在gamma空间内,gamma空间内的颜色直接计算,结果是错的,因为已经是非线性的颜色空间。如果在shader中想使用线性颜色空间,需要可以在着色器里来做类似实现:对传进来的贴图做幂为2.2的pow()函数处理,然后在颜色返回值前做幂为0.45的pow()函数处理。

Unity中的Gamma空间模型是一种颜色空间模型,用于描述计算机图形中的颜色显示和计算方式。在Gamma空间模型中,计算机图形使用的颜色值会根据人类视觉系统的特性进行调整,以更好地适应人类的视觉感知。 在Gamma空间模型中,颜色值会经过一个Gamma校正的过程。这是因为人类眼睛在感知亮度时对不同光强的变化有不同的感知能力。Gamma校正可以调整颜色值中的亮度信息,使得较暗的颜色更容易被人眼感知,而较亮的颜色则会被衰减,以便在显示设备上更好地还原真实场景中的亮度级别。 在Unity中,Gamma空间模型是默认的颜色空间模型。它的工作原理是将颜色从sRGB空间(标准的RGB颜色空间)转换到线性空间,并在渲染完毕后再将颜色转回到sRGB空间,以便正确显示。 Gamma空间模型在图形渲染中起到重要作用。由于人眼对亮度的感知非线性,使用Gamma空间模型可以使渲染的图像更加逼真和准确。而在一些特殊的情况下,使用线性空间模型可能会导致图像亮度不平衡或者颜色失真的问题。 总结起来,Unity中的Gamma空间模型是一种能够根据人类视觉系统特性进行颜色调整的模型,能够使渲染图像更加真实和准确。通过使用Gamma校正,它可以调整颜色的亮度信息,以适应人眼对亮度的感知能力。而相对于线性空间模型,在大部分情况下,Gamma空间模型能够提供更好的图像表现效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值