百人计划 图形 2.6 伽马校正
颜色空间
在百人计划 图形2.1 色彩空间中有详细讲解。
sRGB:微软在1996年发布的通用颜色标准
DCI-P3:数字电影播放的颜色标准
Rec-709、PAL:电视行业的颜色标准
可以看出sRGB和Rec-709表示的颜色范围很接近,三原色的位置也是相同的(区别在于传递函数不同)
传递函数
什么是传递函数?当我们已经知道了颜色空间下三原色的值,但是我们需要将他显示到电子设备上,就需要把他转换成一个视频信号。而此时用到的转换函数也叫传递函数。
传递函数是Gamma校正使用的一个函数
Gamma校正
什么是Gamma校正?指线性三色值和非线性视频信号之间进行编码和解码的操作。
为什么不直接使用线性方式储存颜色信号呢?
图像的流程:捕获的图像->图像储存和处理->显示器输出
流程两头的颜色数量都非常丰富,但是中间的储存和处理出于储存空间容量和渲染时带宽的限制,24位色图片每个通道只有2^8个色阶,总共只能显示2^24种颜色。(若是32位通道的图片,确实可以直接储存物理光强。因为储存空间够大,但是目前主流的还是8位通道的图片)
所以:主要是为了优化储存空间和带宽,传递函数能更好的帮我们利用编码空间;人眼对暗部的变化更加敏感,为了充分利用带宽就需要使用更多位置储存暗部值,也就是说暗部使用更高精度保存,而两部使用更低精度保存。
韦伯定律
上面哪一个更加均匀?正常会觉得上面变化更均匀,但实际上下面才是均匀变化的。
将自然界线性增长的亮度和心理上感受到的亮度进行一个映射得到下面的曲线就是Gamma编码曲线。
上面所提也符合韦伯定律(即感觉得到差别阈值跟随原来刺激量的变化而变化,表现出一定的规律性。用公式来表示就是ΔΦ/Φ=C,其中Φ为原刺激量,ΔΦ为此时的差别阈值,C为常数,又称为韦伯率)
简而言之:当所受刺激越大时,需要增加的刺激也要足够大才会让人感觉到明显变化,但是只适用于中等强度的刺激。
小结
人眼对暗部的变化比亮部更加敏感;目前主流的RGBA32,每个颜色通道只有8位用于记录信息,为了合理使用带宽和储存空间,需要进行非线性变换;目前主流的sRGB颜色空间标准,传递函数Gamma值为2.2。
CRT
早期人们是如何修正人眼视觉感受和物理亮度的差异?
crt转换函数
1、CRT非线性响应的历史原因 2、人眼对暗部颜色变化更加敏感
中灰值
中灰值是什么?
中灰值不是一个固定的具体数值,而是取决于视觉感受
线性工作流
为了保证我们在着色器中拿到的颜色值是线性空间下的颜色值
如果不在线性空间下进行渲染工作,会产生什么问题?(主要是会过曝)
Unity中的颜色空间
资源导出问题
关于Color profile
半透明效果不一样
作业
手动尝试几种Gamma校正的方法
gamma校正后的效果(上图)
未使用Gamma校正(上图)
使用LinearToGammaSpace方法实现。
发布评论