android – 伽玛曲线实验 – 将2.2转换为1.8的相反值?

摩托罗拉Photon因展示其他人所谓的“黑色粉碎”而臭名昭着 – 在观看图片时,图像黑暗部分的大部分细节都被展平为黑色.到目前为止,几乎每个人都把它归咎于Pentile显示器.然而,我第一次看到这个效果时,我发现了一个不同的想法……“哇,看起来相同(糟糕)的方式,用于 Windows图片用于在 Linux和Macintosh上查看,当他们使用1.8的伽玛而不是Windows的2.2“标准”.我的理论是,在某个地方,摩托罗拉使用一个旧的库来建立Photon的 Android,当摩托罗拉是iPhone之前的苹果合作伙伴时(或者可能,抓住旧的开源代码假设1.8伽玛而不是2.2).

为什么我这么肯定?几天前,我使用我的旧Epic 4G(三星galaxy S)和我的新Photon对同一网页进行了屏幕截图.出乎意料的是,Epic的屏幕截图.png看起来很正常,但是当我在PC上观看时,Photon的屏幕截图.png与在Photon屏幕上观看时的外观完全相同.在我看到它的那一刻,我想起了我之前对可能的伽玛映射1.8-vs-2.2错误的想法,并决定尝试编写一个演示应用程序来向摩托罗拉展示并说服他们这是一个可以修复的真正错误.

我想做的一个实验是在明亮和黑暗区域拍摄具有高动态范围和细节的JPEG图像,并将其重新编码为非标准伽玛,其基本上是1.8和2.2之差的两倍.我的想法是,如果我故意将其误编码到相反的极端(2.6?),那么在元数据中说它是2.2,它在光子上观察时看起来很正常(因为同样的错误将2.2压缩到1.8)将2.6压缩到适当的2.2).

那么,有两个问题:

>如果将2.2伽玛图像解码为1.8,那么伽玛将等于并且与您得到的误差相反? 2.6?
>有没有简单的方法(免费的Photoshop / gimp插件,JPEG编码库等)故意将源图像错误编码为非标准伽玛?

解决方法

当伽玛应用于图像时,您从[0.0-1.0]范围内的线性值开始,并将它们提升到1 / gamma的幂,这样的结果也在[0.0-1.0]范围内.对于1.8的伽玛,你将其提高0.56,对于2.5的伽玛,你将它提高0.45.

如果您已经应用了标准的2.2伽玛,而您需要1.8伽马,则可以通过两个校正因子的比率再次提高它:0.56 / 0.45 = 1.22.

由于像素值通常在[0-255]范围内,因此在转换前需要除以255,完成后需要乘以255.

我不确定Photoshop或Gimp是否可以做到这一点;我知道Paint Shop Pro有一个命令.

任何伽玛相关的权威资源是Charles Poynton’s Gamma FAQ.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...