图像色彩中的gamma的理解

原贴地址:

https://www.zhihu.com/question/27467127

“广义Gamma"

前提:人眼对自然亮度的感知是非线性的;展示的媒介的灰阶预算是有限的

有趣的实验:物体反射率检测
面对这样一个完美的从黑到白过渡的油漆颜料体系,我们如果去检测一下中灰油漆的反射率,再把它和纯白油漆的反射率相比较。若我们定义白油漆的反射率是100%,黑油漆的反射率是0%,你会发现,中灰油漆的反射率不是直觉中的50%,而是一个在20%上下徘徊的数值。
这个实验说明了第一点:人眼对亮度的感知非线性
同样另外一个实验,用铅笔素描,在白纸上实现中灰的效果,那么铅笔的覆盖率是多少?80%
物理反射率 = 心理上的主观感受 ^ Gamma
假设光照适宜的场景中有一个中灰色的物体,反射率是白纸的0.2,我们采样到它的时候,应当把0.2的物理能量用0.454的Gamma放大到0.5的灰阶地位记录下来,这样一来,暗部区域就分配到128个灰阶了。我们充分地利用了存储空间,如果在拍照的时候不进行Gamma校正,那么中灰物体会被映射为0.2记录下来,那么此时,暗部仅分配到50个灰阶,暗部采样严重不足,高光采样冗余
 
Gamma=2.2怎么来的?是实践中目测调整出来并最终确定的,其实说良心话,只要是0.5中灰对应白色的20%左右,画面看起来都是靠谱的,所以当年的Gamma特别多种多样,在2.2上下浮动(1.8-2.5),1996年微软和惠普在特定的光照条件下测试人观看显示器的感受,他们认为,把8位图像中128号灰(0.5灰)这个抽象的、代表心目中中灰色的数值,对应以白像素21.8%的亮度显示出来,由黑到白的渐变过渡看起来会比较均匀。最终对应的Gamma就是2.2。那么他们定了这个标准,后世的硬件也就都往上面靠了,包括拍照的时候,编码Gamma也就取了1/2.2=0.454。这样能保证整个编码解码系统总Gamma是1,高保真,自然界中的色值能在屏幕上相对完好的再现
为什么一直强调低动态图像?这个其实涉及到“自然景象再现成画面”这样一个复杂的事情,自然界是高动态的,亮度可以非常亮,也可以有一些明亮的光源,所以我在描述中灰的物理量的时候,我不可能描述成场景中最亮的物体亮度的20%,这个最亮的概念会非常不好确定。同一个明亮的场景中,中灰纸张应该是白纸反射率的20%而不是灯泡能量的20%。我如果把高亮物体牵涉仅来,事情就乱了。但是我可以用绘画举例子,画布的动态范围是有限的,最亮不过是画布上的留白,屏幕的动态范围也是有限的,最亮不过是白像素。所以在低动态范围的语境下,我可以安全的定义,中灰蜡笔的反射率是白色蜡笔的20%左右,中灰像素的亮度是白像素亮度的20%左右,而不是现实场景中最亮物体的20%。这一点是很关键的
一切的前提必须是:灰阶预算很紧张,只有灰阶有限,我们才需要考虑中灰映射给谁的问题,如果灰阶足足的够用,硬盘不要钱了,网线足够粗,我们主流不再使用8位每通道图片记录亮度信息的话,Gamma是没必要的,我们直接把自然界的0.2记录在文件上,显示器读取到0.2,也直接显示就好了——32位每通道的hdr格式就是这样的。32位格式中,中灰就被记作0.218,所以在32位环境中拉一个0-1的渐变是这样的,很明显暗部被压缩了,高光区很多
总之一句话:灰阶有限的前提下,因为人眼对自然的非线性感知特性,我们才需要Gamma校正(灰阶有限4个字特别重要!!!)
本质:亮度的非线性存储/还原算法
 
苹果的Macintosh系统,它家的扫描仪Gamma=1/1.72,它家的QuickDraw软件存放生成的RGB值,用到帧缓存Gamma=1/1.45,然后送到它家2.5的显示器,出来总Gamma结果是1.0。这才是完全封闭的系统,每个环节都可控
posted @ 2017-03-04 19:08  层序圆儿  阅读(1730)  评论(0编辑  收藏  举报