Gamma的计算

1、计算公式如下:

        Output_Y = (Input_Y / 255) ^ (1/2.2) * 255

2、2.2和255是怎么来的?

        2.2是gama的校正值。这是早期科研人员实验得出的结果。有兴趣可以自己搜。

        255是将物理亮度量化到0~255的区间,方便计算。

ex:input y为50,那么output y = (50/255) ^ (1/2.2) * 255 ≈ 121

3、做gamma校正的原因:

        人眼的感知亮度与实际世界的物理亮度是存在差异的。

        物理亮度我们可以量化出来,它在物理空间中是线性的;

        感知亮度是人眼感觉到光的亮度。

4、那么如何转换这两种亮度?研究人员给我们提供了一组公式:

        Vperceptual = (Vphysical)^ (1/gamma)                                                                (公式1)

        Vperceptual 为感知亮度,Vphysical为物理亮度。

        将这组公式左右同时乘以gamma,则得到:

        Vphysically = (Vperceptual)^ gamma                                                                   (公式2)

        这个gamma就是我们上面提到的gamma校正值,一般是2.2,也有的手机是1.8。

有兴趣可以再看看这篇文章:详解 gamma 校正 - 知乎 (zhihu.com)

要反转 Gamma 表的颜色,你可以使用以下公式: ``` new_gamma = max_gamma - old_gamma ``` 其中,`max_gamma` 是 Gamma 值的最大值,通常是 65535(或 0xFFFF),`old_gamma` 是当前 Gamma 表中的值,而 `new_gamma` 是计算出来的新 Gamma 值。 对于给出的 Gamma 表: ``` 00d0 0000 0014 0015 0013 002c 0042 0043 004e 0009 0016 0014 0018 0021 00d0 0000 0014 0015 0013 000b 0043 0055 0053 000c 0017 0014 0023 0020 ``` 你可以使用以下 Python 代码来计算新的 Gamma 表: ```python max_gamma = 65535 gamma_table = [0x00d0, 0x0000, 0x0014, 0x0015, 0x0013, 0x002c, 0x0042, 0x0043, 0x004e, 0x0009, 0x0016, 0x0014, 0x0018, 0x0021, 0x00d0, 0x0000, 0x0014, 0x0015, 0x0013, 0x000b, 0x0043, 0x0055, 0x0053, 0x000c, 0x0017, 0x0014, 0x0023, 0x0020] new_gamma_table = [max_gamma - gamma for gamma in gamma_table] ``` 这将会计算出新的 Gamma 表,并把结果存储在 `new_gamma_table` 变量中。然后,你可以使用 `fbset -gamma` 命令来设置新的 Gamma 表: ``` fbset -gamma {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} ``` 其中,大括号 `{}` 需要替换成新的 Gamma 表中的数值。因此,你可以使用以下命令来设置新的 Gamma 表: ``` fbset -gamma 65439 65535 65421 65420 65422 65307 65293 65292 65281 65526 65519 65421 65417 65414 65465 65439 65535 65421 65420 65422 65524 65292 65280 65282 65523 65518 65421 65313 65315 ``` 这将会把 Gamma 表中的颜色反转,并反转屏幕上的颜色。如果你想要恢复原来的 Gamma 表,可以重新运行 `fbset -gamma` 命令,并把 Gamma 表设置为原来的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值