OpenGL(十八)Gamma校正 色域 与 HDR

本文探讨了OpenGL中颜色显示差异的原因,包括Gamma校正、sRGB色域和HDR高动态光照渲染。Gamma校正用于增强图像暗部细节,sRGB是通用色彩标准以确保跨设备一致性。在Unity3d中,不同平台的颜色空间处理有所不同,HDR提供了更丰富的亮度表现,但可能带来性能挑战。开发者需要权衡视觉效果和性能,适当地进行颜色校正和HDR配置。
摘要由CSDN通过智能技术生成

通常来说,在不同设备上看到的颜色是不同的。其中最常提及的概念是高动态光照渲染(High-Dynamic Range,简称 HDR )。它可以使图像在亮度的表现上更丰富。这篇文章讨论设备颜色和校正的相关概念。

眼前的黑不是黑

人眼对亮度的敏感程度不是线性的,因此我们我们更容易看到亮的区域。


上图中左侧是线性渐变的图,右侧是我们实际看到的。在显示器上,输入线性信号就会显示出右图的效果。为了解决这个问题,在显示时会加入一个颜色校正,来保证图片看起来正确,这就是 Gamma Correction,具体说来,这个算法是 pow(color, 1/2.2)。所有的图片和视频都被编码到伽马空间中。可以这样理解,你所看到的一切都不是真的。

伽马校正

通过pow(color, 1/2.2)这个Gamma-encode操作,可以使灰度部分得到更多的色值,得到一张比较“亮”的图片并存储起来。这张图片虽然暗部细节都保留下来了,但是不能直接看这张“亮”的图片,那只是一个中间产物而已。我们需要显示器做一个pow(color, 2.2)的Gamma-decode操作把它压暗。

从上图可以看出当gamma值为2.2时,曲线会上拱,输出值大于实际值,也就使得暗部获得更多的色彩。至于2.2是怎么来的,我只能说是经验数字,没什么科学依据。因此这个值也可以根据自己的实际体验进行调整,不过工业标准就是2.2哦。

虽然这个方案比较完美,但有了伽马校正之后,事情并没有变得简单。因为只有取到线性色值,光线计算才能在正确的线性空间(linear space)中进行,最终显示效果又需要应经过伽马校正。

sRGB

为了规范显示的颜色。微软联合HP、三菱、爱普生等厂商联合开发的sRGB(standard Red GreenBlue)通用色彩标准,绝大多数的数码图像采集设备厂商都已经全线支持sRGB标准,如:数码相机、数码摄像机、扫描仪、显示器等都能看到sRGB的选项。而且几乎所有的打印、投影等成像设备也都支持了sRGB标准。有了这套标准,从理论上保证了各种影音设备上经过校正的颜色显示效果相同。它的校正方式如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值