Gamma Correction

Gamma 公式:

    Vout = Vin ^ gamma

Gamma 的产生原因:

1. 人眼对初始亮度的敏感性和相机对亮度线性检测的冲突

               

    如上图,对于相机来说,当实际的亮度增加两倍时,相机检测到的亮度增加了两倍,两者是一种线性的关系;对于人眼,这种变化是非线性的(即对于上述的Gamma公式,gamma值往往小于1)。也就是说,当整体亮度较暗时,实际亮度增加相应的人眼的检测亮度变化比较剧烈,即人眼对于初始亮度变化比较敏感;当整体亮度较亮时,实际亮度增加相应的人眼的检测亮度变化比较缓慢,即人眼对于高亮度的变化感知不是很强烈。

    由于这一因素的影响,往往在相机内部等进行图像保存时,会隐式的进行图片的Gamma Encode,来模拟人眼的亮度检测规律。当我们需要在屏幕上对真实的亮度进行显示时,需要再次进行Gamma Correction来消除前面Gamma Encode所造成的影响。

2. 基于Gamma编码的颜色空间可以降低存储所需的bit       

    基于人眼对过高亮度的不敏感的特点,在颜色空间中可以不必过多的细分较高的亮度,所以我们采用256(即8bits)即可以满足对图像各个层次描述的需求;而如果我们以相机那种线性的检测为基准,那么对于高亮度的细分将导致我们可能会用更多的bits来实现,而且很多是不必要的。

Gamma 的应用

1. Gamma可以一定程度上提高图片的对比度,动态的扩大颜色范围
2. Gamma Correction

    Gamma Correction 是相对与之前的Gamma Encode来说的,为了消除Gamma Encode的影响

3. Gamma Compression & Gamma Expansion

    当gamma > 1的时候为Gamma Expansion

    当gamma < 1的时候为Gamma Compression

4. For Noise

    对于未经Gamma处理的相机拍摄的图片来说,往往存在随着亮度逐渐变暗,将会有更多的噪点的问题。进行Gamma Correction时,gamma > 1 时, 暗处的噪点将会被压缩;亮处的噪点虽然会被放大,但是由于人眼对于高亮度的不敏感特点,所以不会被感知到。从而实现对整体的噪点的一个优化效果。而gamma  <  1 时正好相反。


      

    在实际应用中,我们往往不会直接使用Gamma函数,而是在亮度较暗时,使用线性函数,在亮度较高时使用非线性函数来最终达到接近Gamma函数的效果。

参考资料

【1】UNDERSTANDING GAMMA CORRECTION


猜你喜欢

转载自blog.csdn.net/qq_38131594/article/details/80719378
今日推荐