关于Gamma Correct的讲述
2016-09-28 22:45
211 查看
http://blog.csdn.net/candycat1992/article/details/46228771
下面是个人通过查找一些资料和上文的阅读体会:
1. 关于人眼
人眼对暗部的变化更加敏感,而对亮部变化其实不是很敏感。也就是说,人眼认为的中灰其实不在亮度为0.5的地方,而是在大约亮度为0.18的地方(18度灰)。如此可得,如果我们在图片中直接存储
亮度值(相等间隔的离散值, 占用8比特),那么关于人眼感触到的暗色部分将占很少比重;为了能够更多第存储暗色部分,那么就需要一个encoding gamma,对原始的亮度值进行一个转换, Inew = Iorg^(1/encoding gamma); 这样对In进行离散存储的话就意味着Iorg<0.5的部分离散值比较多些(更好地表达了暗色部分)。
2. 关于display gamma
display gamma是CRT的物理特性,即 屏幕上的荧光粉亮度 = 输入电压(等于输入的亮度) ^ display gamma。 经过encoding gamma编码的亮度值经过CRT的转换到屏幕就成了: 人眼看到的亮度 = (Iorg ^ (1/encoding gamma)) ^ display gamma。如果encoding
gamma等于display gamma,那么人眼看到的就是原始的亮度值。 做个试验: 打开bmp编辑器,做一个颜色块,将RGB的值调整为127,127,127(即0.5, 0.5, 0.5)。
那么屏幕上的亮度值是多少呢? I = 0.5 ^(display gamma),如果display gamma为2.2,则 I=0.2176, 如此验证了1中人眼的感触问题。也从这里可以得到,我们图片存的并不是实际显示出的亮度值 而是 I ^(1/ display gamma)。
3. 相机拍摄的照片
相机的电子光学元件感受到的就是实际的亮度值,如果经过encoding gamma编码,存储到图片, 然后经过显示屏预览(有display gamma),如果encoding gamma == display gamma,那么最终传到眼睛里的就是实际的亮度值。
总结:
上述参考的文章中说gamma跟眼睛有关系,我认为是对的也不对:
1. 对的是因为眼睛对亮度的感受不呈线性,所以需要保存更多的低亮度部分,出现了encoding gamma,这个encoding gamma值也是根据人眼的感受来算出的一个值,最大化地存储低亮度部分。
2. 不对的是因为 display gamma是CRT造成的,这个跟眼睛是没有关系的。显示器的就是要如实地激发出实际的亮度值,至于你眼睛的体会那是另外一回事。
我们一直被(0.5,0.5,0.5)应该表示中灰色这个直觉误导了!!
下面是个人通过查找一些资料和上文的阅读体会:
1. 关于人眼
人眼对暗部的变化更加敏感,而对亮部变化其实不是很敏感。也就是说,人眼认为的中灰其实不在亮度为0.5的地方,而是在大约亮度为0.18的地方(18度灰)。如此可得,如果我们在图片中直接存储
亮度值(相等间隔的离散值, 占用8比特),那么关于人眼感触到的暗色部分将占很少比重;为了能够更多第存储暗色部分,那么就需要一个encoding gamma,对原始的亮度值进行一个转换, Inew = Iorg^(1/encoding gamma); 这样对In进行离散存储的话就意味着Iorg<0.5的部分离散值比较多些(更好地表达了暗色部分)。
2. 关于display gamma
display gamma是CRT的物理特性,即 屏幕上的荧光粉亮度 = 输入电压(等于输入的亮度) ^ display gamma。 经过encoding gamma编码的亮度值经过CRT的转换到屏幕就成了: 人眼看到的亮度 = (Iorg ^ (1/encoding gamma)) ^ display gamma。如果encoding
gamma等于display gamma,那么人眼看到的就是原始的亮度值。 做个试验: 打开bmp编辑器,做一个颜色块,将RGB的值调整为127,127,127(即0.5, 0.5, 0.5)。
那么屏幕上的亮度值是多少呢? I = 0.5 ^(display gamma),如果display gamma为2.2,则 I=0.2176, 如此验证了1中人眼的感触问题。也从这里可以得到,我们图片存的并不是实际显示出的亮度值 而是 I ^(1/ display gamma)。
3. 相机拍摄的照片
相机的电子光学元件感受到的就是实际的亮度值,如果经过encoding gamma编码,存储到图片, 然后经过显示屏预览(有display gamma),如果encoding gamma == display gamma,那么最终传到眼睛里的就是实际的亮度值。
总结:
上述参考的文章中说gamma跟眼睛有关系,我认为是对的也不对:
1. 对的是因为眼睛对亮度的感受不呈线性,所以需要保存更多的低亮度部分,出现了encoding gamma,这个encoding gamma值也是根据人眼的感受来算出的一个值,最大化地存储低亮度部分。
2. 不对的是因为 display gamma是CRT造成的,这个跟眼睛是没有关系的。显示器的就是要如实地激发出实际的亮度值,至于你眼睛的体会那是另外一回事。
我们一直被(0.5,0.5,0.5)应该表示中灰色这个直觉误导了!!
相关文章推荐
- 巴菲特经常向年轻人讲述的一个关于精灵的寓言--《The Snow Ball》
- [读书笔记][深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白
- [读书笔记][深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白
- 讲述一个关于高考的“黑客”故事:用2B铅笔“注入”阅卷系统.
- 关于gamma调整和添加噪声测试
- 关于unity颜色空间选择gamma还是linear
- Android中关于线性布局基线对齐的讲述
- [深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白(转)
- (推荐)关于ASP.NET运行原理讲述的补白
- 讲述一个关于高考的“黑客”故事:用2B铅笔“注入”阅卷系统
- pdk14关于节能的一些讲述
- 关于"Auto-Correct"——自动修正功能原理谈究
- 关于FCN讲述比较全面的一篇文章
- 关于讲述java的一篇文章
- <转>讲述一个关于高考的“黑客”故事:用2B铅笔“注入”阅卷系统
- gamma correct blurring
- 关于精简BDE的一点疑问----我的几封信
- 手册中关于怎样使用TQuery 的误导
- 实例讲述易语言拦截窗口消息
- 关于fvwm2的简单配置