Chinaunix首页 | 论坛 | 博客
  • 博客访问: 152013
  • 博文数量: 47
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 405
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-23 14:38
文章分类

全部博文(47)

文章存档

2017年(7)

2016年(4)

2015年(19)

2014年(17)

我的朋友

分类: Android平台

2017-04-28 00:07:49

   开始涉及图像处理领域,首先就接触到了Gamma校正,看了网上很多关于Gamma校正的文章,越看越觉得不清楚,各种各样的说法有些感觉还相互矛盾,结合目前所看的文章我根据个人理解梳理了一下相关内容,接下来就谈谈我理解的Gamma校正。
    首先需要确定两个事实:
    1. 人眼对自然亮度的感知是非线性的,这条感知曲线接近于γ=1/2.2的幂律曲线
    2. 老式CRT显示设备显示的亮度值与电压是非线性的接近于γ=2.5的幂律曲线,现在的LCD等显示设备也设置了一个近似γ=2.2的相应曲线


图中从上到下依次为γ=1/2.2,1,2.2,在进行伽马变换前先对数据进行归一化处理(这就是很多文章里有些说伽马>1,有些说伽马<1图像会变暗的原因所在)。
自然界的亮度等级人眼都无法分辨完,从目前的成像设备来看更无法完全描述自然界的亮度等级(如显示器中用8位表示一个像素点的灰度时,灰度等级就只有256种),从这一点来看从设备获取的数据必然需要经过压缩,压缩可以按等比例来压缩,也可以用对数函数,幂函数等来实现,而人眼的感知曲线接近于γ=1/2.2的曲线(人眼对暗区域更敏感,暗区域和亮区域相同程度的亮度变化给人的感觉并不一样,让人觉的暗区域的变化更大),那么我们从设备端模拟γ=1/2.2的曲线就能保留更多人眼更在意的细节。
既然在获取数据的设备端做了encoding,那么必须在显示设备端做一个decoding,从这一点看CRT/LCD设备端的γ>1的幂律响应又是必须的了,当然CRT设备一开始就存在的响应曲线是一个巧合(大自然的奇迹)。
你可能会疑惑先做γ=1/2.2的变换,又做γ=2.2的变换,这不是相等于总γ≈1了吗,相当于没做变换,这还有什么存在的必要呢?正如我所说的,前一个变换能保留更多人眼更在意的暗区域细节,而后一个变换是目前大多数的显示设备都存在的变换(当然这也是前一个变换必然需要的逆变换,同时这个变换的存在也反向要求了γ=1/2.2的变换的存在)
我们看一个例子:
图1图2图3
图1是你用人眼实际观察到的景象,图2是你从相机获取后未做encoding处理直接由显示器显示的景象,图3是你在相机端encodiing后再由显示器decode后的景象,所以你如果不做encoding的话直接显示的就跟人眼看到的有区别了(PS:随意选取的图片不生动,一般不做encoding的话图像灰度值格外低,不利于观看)
此外对于总γ值:一般来说γ≈1即可,又有说暗环境下γ=1.5,亮环境下γ=1.125较合适,当然最合适的还是人自己看起来舒服咯。
我理解的Gamma到此结束。


阅读(2175) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~