最近复习图形学的时候,复习到了Gamma矫正,笔记本上记得内容太少,没有看明白是啥意思,于是就到网上去搜索了一下,好了越看越不明白了……花了两天,终于算是搞懂了,写在这里分享一下。

首先,关于颜色矫正,有三个方面:

1,相机矫正

2,显示器矫正

3,人眼矫正

关于相机矫正:首先相机的感光元件感受的是辐照度(物理符号,表示单位时间通过单位面积的光能量,可以直接理解为在这个位置光的亮度【能量意义上亮度,不是人眼感受的亮度,不明白的话可以先看下面,看完了应该能够理解】)。如果场景之中之前有一个灯泡,现在我们再加上一个灯泡,相机在原位置能够接收到2倍的辐照度,那么相机会直接把2存储到图像吗?答案是不会,相机会大概存储  到图像上,至于原因请往下看。注意:你的硬盘存储的所有图像都是经过矫正过的,很意外吧!

关于显示器矫正:显示器矫正源于早期使用的CRT显示器(阴极射线管)的物理特性:I = ,即光强与输入电压的2.2次幂成正比(大致原因是:,即功率与电压U的平方成正比)。Gamma指的就是这里的2.2次幂,又称为灰度系数。注意:对于CRT显示器矫正是被动的,不受人控制的,即你永远无法改变你给一个电压U,输出的光强约为U的平方倍这一事实,它源于物理特性。然而,现代的LCD,AMOLED显示器已经没有这个特性,但是为了与过去一致,显示器的驱动程序程序会自动对输出进行校对,即用软件计算出 I = ,然后输出到屏幕上。这个过程是可控的,在Windows操作系统上,可以进入设置-系统-显示-高级显示设置(在最下面倒数第二个蓝色的)-显示器的显示适配器属性-颜色管理-颜色管理-高级-校准显示器,对Gamma参数进行调整。

关于人眼矫正:人眼对暗处的分辨能力强于明亮处,这是进化的结果(这样可以帮助人们发现夜晚的危险)。即:人眼能够分辨暗处更多的细节。转化为数学公式可以写成:,即人感知的亮度约是辐照度的0.45次幂。在这种情况下,如果某个物体的辐照度为0.22,那么人眼感受到的光强约为可以看出,当光源较弱时,人眼感受的光实际更强了

在这三种矫正的作用下,奇妙的事情发生了:

  1. 假设一个灯泡的亮度是1个单位亮度,那么两个灯泡的亮度就应该是2个单位亮度。
  2. 如果我们直接看这两个灯泡,根据人眼矫正,我们的眼睛感受到 单位亮度。
  3. 我们用摄像机对这两个灯泡进行拍照,摄像机的感光原件能够感受到2个单位亮度。但是别忘了相机矫正,即相机会对亮度进行处理再存储到图像上。相机校正后的亮度
  4. 现在这一张照片被显示到了屏幕上,根据显示器矫正:,即显示器输出的亮度为2个单位亮度。
  5. 现在我们用眼睛来观察屏幕,根据人眼矫正:,即我们感受到的1.36个单位亮度。

怎么样,发现哪里有问题了吗?

没错,经过一系列矫正之后,我们观察显示器得到的亮度和我们直接观察两个灯泡的亮度是一样的!!这就是Gamma矫正!!下面的图可能能够帮助你理解。

或者:

 知道了Gamma矫正,这对我们的渲染有什么用呢?

1,我们的纹理图像是矫正过的。即纹理图像中的数字不代表光强,我们需要将强度取2.2次幂才能得到实际光强,这样的光强相加才具有物理意义。当然对于相加得到光强,我们还需要将其矫正(取0.45次幂)才能输出到屏幕上(这一步是还原相机对图像的矫正)。

2,对于光源的衰减:物理上光强度与半径的平方成反比:,由于显示器Gamma,,我们得到显示的光强与半径的4.4次幂成反比,这样的衰减有些过度了。我们可以不使用物理公式,而令I与半径成反比,这样经过显示器Gamma后,还是可以分辨的。

一些注解:

多数显示器的Gamma值为2.2,但并不是绝对的。Gamma值甚至可以手动调节。

我也是个初学者,上面的内容很可能存在错误,欢迎指正。

彻底搞懂Gamma矫正相关推荐

  1. 一文多图搞懂KITTI数据集下载及解析

    转载自一文多图搞懂KITTI数据集下载及解析-阿里云开发者社区 KITTI Dataset 1.图片下载:点击下载:https://s3.eu-central-1.amazonaws.com/avg- ...

  2. 一文搞懂什么VR,什么是6Dof,欧拉角,四元数转视图矩阵

    目录 一.什么是VR 二.什么是3Dof,6Dof, 9Dof 三.欧拉角(姿态角) 四.Android手机的欧拉角与坐标系 五.安卓坐标系转换欧拉角 六.根据姿态四元数求视图矩阵 一文搞懂什么VR, ...

  3. zhs16gbk对应mysql_[Oracle] 彻底搞懂Oracle字符集

    基本概念字符集(Character set):是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.常见的字符集有ASCII,ZHS16GB231 ...

  4. 面试必备|带你彻底搞懂Python生成器

    2019年人工智能系统学: https://edu.csdn.net/topic/ai30?utm_source=ai100_bw 作者 | Rocky0429 转载自 Python空间(ID:Dev ...

  5. 20分钟教你搞懂Git!

    Git 是最流行的版本管理工具,也是程序员必备的技能之一.本文就来教你 20 分钟搞懂 Git! 以下为译文: 尽管每天你都会用到Git,但也有可能搞不懂它的工作原理.为什么Git可以管理版本?基本命 ...

  6. 搞懂机器学习的常用评价指标!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:陈安东,湖南大学,Datawhale成员 我与评价指标的首次交锋是 ...

  7. 一文搞懂结构体的定义及实际使用

    大家好,我是无际,无实战不理论. 今天给大家讲一下结构体. 大家可能很好奇,为什么这种文章教程泛滥了,我还要拿出来讲. 相信无际的铁粉都知道,我分享的干货和经验出发点是实际产品应用. 脱离产品你所学的 ...

  8. 想要彻底搞懂“异地多活”,看完这篇就够了

    在软件开发领域,「异地多活」是分布式系统架构设计的一座高峰,很多人经常听过它,但很少人理解其中的原理. 异地多活到底是什么?为什么需要异地多活?它到底解决了什么问题?究竟是怎么解决的? 这些疑问,想必 ...

  9. 这一次,你能彻底搞懂 Flink!

    近年来,AI 场景发展得如火如荼,同时其计算规模也越来越大.这也让专注于数据处理的 Flink 有了较大的发展空间.Flink作为在大数据生态里实时处理的一个新框架,在一定程度上也有一定的难度. Fl ...

最新文章

  1. Graphite在centeros 6下安装
  2. C语言经典例61-杨辉三角
  3. encoding - 如何将 Dart 的ByteData转换为字符串?
  4. 安卓键盘加上数字_Android自定义键盘的实现(数字键盘和字母键盘)
  5. WEB服务器技术名词
  6. Ibatis SqlMapclient对象
  7. PHP 7天前的时间戳
  8. 拓端tecdat|使用R语言进行时间序列(arima,指数平滑)分析
  9. SEO过程中外链的误区
  10. 叶笑嘴角露出来一个不知是什么意味的笑容
  11. 多元微积分_向量函数偏导
  12. <第2.5个月>新店日记,shopee要投入多少钱?利润怎么样能赚钱吗好做吗?shopee孵化期考核
  13. Security+知识点
  14. OpenStack Swift学习笔记
  15. 04 面向对象之:三大特性:继承(已讲),封装,多态。
  16. 怎么让计算机响音乐,如何让电脑声音更大一点
  17. 计算机管理 没有适当的权限,XP更改不了系统时间提示“您没有适当的特权级”是怎么回事...
  18. MBA联考英语二考试最新考试大纲出来啦
  19. 思博伦Spirent TestCenter _上下行非对称吞吐量测试 _双极未来
  20. 微信中不能下载apk包的问题

热门文章

  1. 笔记本--装不上系统怪问题
  2. 李淼量子计算机,大科学家李淼给孩子讲量子力学 一同探索世界真相
  3. 战国策--秦兴师临周而求九鼎
  4. 计算机信息技术发展方向,谈谈计算机信息技术发展方向及应用
  5. ajax abort 原因,jquery ajax abort()方法
  6. android中onFinishInflate和onSizeChange()的调用时机
  7. Tabs标签页修改样式
  8. 概率(Probability)的定义和性质
  9. 从新手小白入门MFC框架-黄强-专题视频课程
  10. matlab将三维图像合并