Gamma校正

Gamma校正是图形学中至关重要的非线性变换,用于补偿硬件局限导致的显示问题。本文介绍了Gamma校正的原理,包括归一化、预补偿和反归一化的步骤,并给出了在shader中实现Gamma校正的简化代码示例。
摘要由CSDN通过智能技术生成

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值