Gamma原理
Gamma校正是一个在图形学中非常重要的东西,但是我平常一般都不会去用到,顶多加个[Gamma]让引擎帮忙实现,但是了解下原理还是比较重要的,gamma校正是一种非常重要的非线性变换,而gamma产生的原因则是由于硬件的局限性,将屏幕的输入提高一定倍数后屏幕的输出并不一定能提高相应倍数,至少人眼感受不到,于是乎这里就需要做一定转换,如果输入和输出都是0~10,但输入5并不一定输出5,就需要对输入作校正,也就是Gamma校正。
Gamma校正实现
校正步骤(这个是嫖的,附上链接:blog.csdn.net/linqianbi/article/details/78617615)
1. 归一化 :将像素值转换为 0 ~ 1 之间的实数。 算法如下 : ( i + 0. 5)/256 这里包含 1 个除法和 1 个加法操作。对于像素 A 而言 , 其对应的归一化值为 0. 783203 。
2. 预补偿 :根据公式 , 求出像素归一化后的 数据以 1 /gamma 为指数的对应值。这一步包含一个 求指数运算。若 gamma 值为 2. 2 , 则 1 /gamma 为 0. 454545 , 对归一化后的 A 值进行预补偿的结果就 是 0. 783203 ^0. 454545 = 0. 894872 。
3. 反归一化 :将经过预补偿的实数值反变换为 0 ~ 255 之间的整数值。具体算法为 : f*256 - 0. 5 此步骤包含一个乘法和一个减法运算。续前 例 , 将 A 的预补偿结果 0. 894872 代入上式 , 得到 A 预补偿后对应的像素值为 2