转自:http://blog.csdn.net/ghostyu/article/details/7912880

从最明亮到最黑暗,假设人眼能够看到一定的范围,那么胶片(或CCD 等电子感光器件)所能表现的远比人眼看到的范围小的多,而这个有限的范围就是感光宽容度。

人眼的感光宽容度比胶片要高很多,而胶片的感光宽容度要比数码相机的ccd高出很多!对于sensor来说,又是如何来判断曝光是否正确呢?很标准的做法就是在YUV空间计算当前图像的Y值的均值。调节各种曝光参数设定(自动或手动),使得该均值落在一个目标值附近的时候,就认为得到了正确的曝光。

在多数数码相机和拍照手机上都可以看到曝光级别设定的功能,如前所述,这种设定实际上是在自动曝光的基础上给用户提供一定的曝光控制能力,强制改变camera sensor的曝光判断标准,获得用户想要的效果。通常的做法就是改变Y值均值的预期值,使得sensor在自动曝光时以新的Y预期值为目标,自动调整Exptime 和AG。

曝光的均值正确了,不代表整体图像的亮度分布就和人眼所看到的保持一致了。事实上,人眼对亮度的响应并不是一个线性的比例关系,而各种涉及到光电转换的设备的输入输出特性曲线一般也是非线性的,对于sensor来说,其响应倒是接近为线性关系,所以为了在各种设备上正确输出符合人眼对亮度的响应的图像,就需要进行校正。幂函数的指数的倒数就是通常所说的 gamma 值。

Gamma校正的原意是针对CRT显示器的,由于CRT显示器是通过电子束撞击荧光屏产生亮光来实现图像的显示。但是由于电子束的能量与产生的亮光的大小不成正比,而需要通过Gamma校正来使两者对应起来。但在图像质量调整中Gamma校正失去的原来的意义。它能起到的作用很多,它几乎可以影响到图像质量调整的各个方面。在图像质量调整中,Gamma校正的一个重要作用是体现细节,增强对比度。由于人眼对于高亮度的差别感觉不明显,而对低亮度的细小差别感觉较为明显,因此,Gamma校正通过将低亮度部分的差距拉大,而造成低亮度部分的细节能够被人眼明显的感觉出来,而图像的细节部分基本上都是纯在于低亮度部分的。

一般来说Gamma曲线是一条向上凸的指数曲线。横坐标表示输入数据,纵坐标表示输出数据。经过Gamma校正后,图像数据就会依据曲线上点的横坐标和纵坐标,把输入的图像数据校正成输出的图像数据。举例来说,假设曲线上有一个点的坐标是(100,120),那么输入图像数据中所有值为100的数据,在输出图像数据中都会变成120。一般的理解,认为Gamma校正能够提高亮度,其实这样理解并不完全对。也就是说Gamma校正并不能提高图像的整体亮度。它的作用就是将Sensor送过来的原始数据进行非线性调整为另外一组数据。因为在低值部分的Gamma曲线的斜率超过1,那么校正后的数据,在低值部分的差距会被拉大,而在高值部分的斜率小于1,那么高值部分的数据之间的差距会变小。这样的图像数据,处于低值的细节部分会被提升的更明显,而高值部分的由于人眼感觉本来就不会很明显,因此也不会造成图像细节的损失。

通常对于Window 的输出显示系统,gamma值为2.2,而对于苹果的输出显示系统和打印系统来说,gamma值为1.8。由于指数运算需要消耗大量的CPU时间,所以实际的做法,往往是将gamma曲线用比如12段线段进行拟合。这样只需要保存13个点的数据,用线性变换或查表的方式进行gamma校正。要调整gamma校正实际上也就是调整这13个点的数值。

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

camera摄像原理之四:曝光和GAMMA【转】的更多相关文章

  1. camera摄像原理之四:曝光和GAMMA

    GAMMA:输出/输入(光信号值) 从最明亮到最黑暗,假设人眼能够看到一定的范围,那么胶片(或CCD 等电子感光器件)所能表现的远比人眼看到的范围小的多,而这个有限的范围就是感光宽容度. 人眼的感光宽 ...

  2. camera摄像原理之三:色温和自动白平衡【转】

    转自:http://blog.csdn.net/ghostyu/article/details/7912863 色温的定义:将黑体从绝对零度开始加温,温度每升高一度称为1开氏度(用字母K表示),当温度 ...

  3. camera摄像原理之二:色彩空间【转】

    转自:http://blog.csdn.net/ghostyu/article/details/7912854 对于sensor 来说,我们经常接触到的色彩空间的概念,主要是RGB , YUV这两种( ...

  4. Camera图像处理原理及实例分析-重要图像概念

    Camera图像处理原理及实例分析 作者:刘旭晖  colorant@163.com  转载请注明出处 BLOG:http://blog.csdn.net/colorant/ 主页:http://rg ...

  5. Camera图像处理原理及实例分析

    Camera图像处理原理及实例分析 作者:刘旭晖  colorant@163.com  转载请注明出处 BLOG:http://blog.csdn.net/colorant/ 主页:http://rg ...

  6. Camera 图像处理原理分析

    1         前言 做为拍照手机的核心模块之一,camera sensor效果的调整,涉及到众多的参数,如果对基本的光学原理及sensor软/硬件对图像处理的原理能有深入的理解和把握的话,对我们 ...

  7. Android Camera 摄像 demo

          google 在Android 5.0推出 Camera2 这个类,用于替换 Camera,但是Camera2要求android sdk 最低版本为 minSdkVersion = 21 ...

  8. [Java] SpringMVC工作原理之四:MultipartResolver

    MultipartResolver 用于处理文件上传,当收到请求时 DispatcherServlet 的 checkMultipart() 方法会调用 MultipartResolver 的 isM ...

  9. spring原理之四种基本标签的解析

    四种标签 在spring的配置文件中存在四种基本的标签分别是:beans,bean,import,alias 四种标签的功能: beans:定义一个单独的应用配置(测试配置,开发配置等),在服务器部署 ...

随机推荐

  1. (原创)不过如此的 DFS 深度优先遍历

    DFS 深度优先遍历 DFS算法用于遍历图结构,旨在遍历每一个结点,顾名思义,这种方法把遍历的重点放在深度上,什么意思呢?就是在访问过的结点做标记的前提下,一条路走到天黑,我们都知道当每一个结点都有很 ...

  2. kaldi基于GMM的单音素模型 训练部分

    目录 1. gmm-init-mono 模型初始化 2. compile-train-graghs 训练图初始化 3. align-equal-compiled 特征文件均匀分割 4. gmm-acc ...

  3. thinkPHP form表单提交参数无法获取

    后台打印获取的数据为empty, 找了半天,是因为 input标签没有写name, 真是醉了!记一下,免得以后再犯错了.

  4. 常量表达式 & constexpr

    [常量表达式] 一个这样的表达式:值不会改变 && 在编译过程中就能够得到计算结果 常见的常量表达式:字面值.用常量表达式初始化的const对象 一个对象是不是常量表达式由它的数据类型 ...

  5. 第十五次ScrumMeeting会议

    第十五次Scrum Meeting 时间:2017/12/5 地点:主201 人员:全体成员 目前工作情况 名字 完成的工作 计划工作 蔡帜 -- -- 游心 完成Scrum会议记录,更新wiki游戏 ...

  6. lock关键字的使用

    最近在代码中,发现别人使用了lock关键字,为了理解别人写的代码,所以自己对lock关键字的使用研究了下. 微软官方解释,请百度:lock 语句(C# 参考) 微软给了个官网实例代码: class A ...

  7. oracle dg 备库不同步主库数据

    今天遇到一个数据库同步问题,主库被关闭,重启主库后,备库不能正常同步主库数据.只有当手动切换归档日志的时候,备库才能和主库一致. 这个问题的解决方法: 重启备库,重新应用归档日志. 操作步骤如下: / ...

  8. 小C的记事本(栈记录字符串)

    链接:https://www.nowcoder.com/acm/contest/122/D来源:牛客网 题目描述 小C最近学会了java小程序的开发,他很开心,于是想做一个简单的记事本程序练练手. 他 ...

  9. Eclipse下JRebel6.5.0热部署插件安装、破解及配置

    发现一个问题:如果安装了jRebel,但是并未对项目添加jRebel监听时,如果重写jar包中的类, 虽然重写后的类会得到编译(classes中的class已经是修改后的class),但是并不会调用重 ...

  10. 【EasyNetQ】- 发送接收

    发布/订阅和请求/响应模式是位置透明的,因为您不需要指定消息的使用者所在的位置,而发送/接收模式专门用于通过命名队列进行通信.它也不会假设可以通过队列发送的消息类型.这意味着您可以通过同一队列发送不同 ...