跟着卷卷龙一起学Camera--Gamma

750 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情

What is gamma?

gamma是为了让输入图像的亮暗程度更符合人眼的观感,而做的非线性映射。gamma有在RGB域做的,R/G/B共用一条gamma曲线。如果实在YUV域,则Y/U/V用的是不同的gamma曲线。gamma的存在有两种说法,一种是为了抵消CRT的显示问题,而做的反CRT gamma处理。

另一种说法是人眼对亮暗的感受不是线性的,为了匹配人眼特性,需要做gamma处理。

How to do gamma?

gamma矫正如果直接套用公式的话,效率会非常低。直接查表的话会更快,就是将每个像素点矫正过的值直接存储到一个数组中,这也是许多大厂的做法。需要降低过曝区域的图像亮度时,应该适当降低gamma曲线位于图像灰度值较大的一部分。对于灰度值较小的部分,调整较小。这也正符合人眼观感。如果像素点的值不在gamma表里,则需要进行线性插值。

对比度的调整在一定程度上说,其实也就是对gamma曲线的调整,增大对比度就是提Gamma 值。对于图像处理来说,也有在硬件 gamma 校正后,单独由软件再进行一次类的幂函数变换来调整对比度。

\

左图是人眼看到的画面,右图是ccd,cmos感受到的光电信号。绿线就是gamma曲线.

高端相机都会对gamma曲线的形状有些修改,来影响亮/暗部图像的亮度,在暗区的修改叫black gamma,增强或者减弱图像在暗处的contrast或者阴影。在亮区的修改叫gamma knee,可以看到,在大于knee point 之后信号的映射关系是线性的,这段的斜率叫knee slope。通过调整knee point 和knee slope这种操作,可以调节亮处的contrast,也能一定程度上减小亮处信号的饱和,影响图像的动态范围.