DBV、Gamma、灰阶、亮度之间的关系

发布时间 2023-06-05 19:42:52作者: million_yh

图像拍摄时,是将外部环境的亮度数据进行采样存储,但是亮度数据量太大,硬件资源有限,有限的数据量要表示自然界那么多的亮度范围,所以要用更多的信息表示人眼敏感的暗部区域  ,更少的数据量表示不敏感的明部范围, 人眼对明部的视觉感受不是非常明显,所以可以牺牲一部分明部的数据; 将亮度数据按照一定的规则映射为灰阶值,可以对数据量进行压缩,且保留更多的暗部细节,牺牲一部分明部细节。完成亮度数据到灰阶数据的转换:

gray_x = L_gray_x ^ (1/2.2),这个过程就叫做反向Gamma。至于这个数值为什么是2.2,其实是通过实验得来的,灰阶与亮度在这样的映射关系下 人眼的视觉特性更好,图像灰阶的明暗过渡更流畅平滑。硬件里存储的就是反向Gamma后的数据。

当需要将图片显示在显示屏上时,显示屏将存储在硬件中的硬件进行正向Gamma变换,将灰阶值转化为亮度值显示在屏幕上,形成图案,还原在图像拍摄时看到的亮度,当然这个亮度是有精度损失的,但是对于人眼来说视觉特性是无损的。正向Gamma的公式为:L_gray_x = L_gray_255max * (Gray_x/255)^ 2.2 ,可以将L_gray_255max移到左边,这样左右两边都是归一化的结果,取值范围为0-1。每组Gamma band的最大灰阶255的亮度值就是该组Gamma band的最大亮度值,基于该最大亮度值和正向Gamma计算公式子算出各绑点灰阶对应的亮度,其他非绑点灰阶根据绑点灰阶的Gamma值插值得出。

调Gamma其实就是 用光学探头测量每组Gamma band下不同绑点灰阶的亮度,然后把每组 Gamma Band下各绑点灰阶 调整到目标亮度值,将此时该灰阶亮度下的vdata值 记录保存到该Gamma band下,测完总共的绑定灰阶的vdata值。需要调的次数为  频率数N*Gamma Band数(比如8组)* 每组Gamma Band中绑点灰阶的个数(比如10个)。

每块屏幕的Flash里存储的Gamma band组数与刷新率以及RD决策有关,相同电压下不同刷新率亮度表现可能存在差异,所以会针对不同刷新率调不同的Gamma band,通常DBV会有十个值,即Gamma band有十组。DBV相当于一组开关,不同的DBV值等价于不同的开关,对应着不同的Gamma band,可以通过DBV值的改变去切换Gamma band,拉手机亮度条其实就是在改变DBV的值。每组Gamma band下往往有多个绑点灰阶,其他灰阶根据绑点灰阶的Gamma值插值得出。

每个DBV都对应着一组Gamma band,每组Gamma band都对应着0-255全灰阶的vdata值,不同的vdata值对应了不同的亮度。DBV往往是从小到大递增的,每组DBV1的Gamma band,0-255灰阶 都对应了一组亮度数据, 不同DBV值 相同灰阶的亮度数据不一样,也许会存在 gray255的亮度小于gray16的情况,具体还得看所处的Gamma band (DBV值)。

灰阶对应着亮度,亮度由灰阶体现,但是两者不能等价。灰阶体现了由暗到亮的渐变。一帧图像不同位置的亮度一般是不同的,因为不同位置的灰阶可能不同,但是每帧图像的DBV值不变。