Gamma 矫正

记住几个要点:

1. 本质上是一个power-law 函数。gamma < 1 时也叫encoding gamma,gamma压缩;gamma > 1 时也叫解码gamma,gamma扩展

2. gamma encoding的主要目的是充分利用人眼对光线的非线性特性,对明亮的部分用较少的数据编码,对阴暗的部分用较多的比特,最终达到perceptually uniform的目的。而所有的基于图像或视频的处理算法,比如图片编辑,颜色处理和直方图计算等都是基于perceptually uniform的假设的。

3. 这个神奇的世界总是有太多巧合。其中一个就是常用的CRT显示器输入电压和输出亮度的关系正好是---其实是非常接近---gamma encoding的倒数。这真只是巧合,不是当初工程师们有意为之。所以,the purpose of gamma encoding is for recording the image — not for displaying the image

4. 简单说,gamma workflow有三部分:

 1)  Image gamma:成像时使用的gamma。由摄像机或相机存储。RAW format 就包括了这个数值

 2) Display gamma: 显示gamma。是由几个gamma的组合,包括显示器本身的gamma值,显示器厂家内嵌的gamma矫正算法,以及显卡里内嵌的gamma矫正算法等。

 3) system gamma: 系统gamma。综合考虑上面两个gamma 后系统的整体gamma 矫正。

5. 最后gamma 本身,源自早起photography的处理。其实任何非线性的关系都可以叫做gamma。对于power-law relationship V(out)=V(in)^gamma,如果把曲线画在log-log的图上则是一条直线,该直线的斜率就叫gamma。对power-law relationship,这个gamma是个常数。


详细还可参考:

Wiki Gamma correction

UNDERSTANDING GAMMA CORRECTION

### Gamma校正的工作原理 Gamma校正是指调整图像亮度和对比度的过程,使得显示设备能够正确再现原始场景的颜色。人类视觉系统对于光线强度的变化是非线性的,而大多数电子显示器采用的是线性响应机制。为了补偿这种差异,在计算机图形学与图像处理领域引入了伽马矫正的概念。 具体来说,gamma校正通过应用幂函数来改变输入信号\(V_{in}\)到输出信号\(V_{out}\),其关系可以表示为: \[ V_{out} = V_{in}^\gamma \] 其中\(\gamma\)是一个常数因子,用于描述特定显示系统的特性[^1]。当\(\gamma>1\)时,该操作会压缩高亮区域的同时拉伸暗部细节;反之,则增强明亮部分并减少阴影区间的动态范围。 在实际应用中,通常先将RGB色彩模式下的各个通道分别除以其最大值(即归一化),再执行上述变换公式,最后乘回原来的幅度以便于后续渲染或存储过程中的数值计算稳定性考虑。 ### 应用场景 #### 显示适配 由于不同的屏幕具有各异的物理属性,因此即使同一张图片也可能因为观看环境的不同而导致观感上的巨大差别。通过对图像实施恰当的gamma修正措施,可以使最终呈现在用户眼前的画面更加贴近创作者最初的意图[^2]。 #### 图像编辑软件 类似于Photoshop这样的工具提供了丰富的调色选项,其中包括基于LUT表(查找表)实现的各种滤镜效果。这些功能背后往往涉及到复杂的数学运算,比如按照预定义曲线重新分配像素点对应的灰阶值,从而达到预期的艺术风格转变目的[^3]。 ```python import numpy as np from PIL import Image def apply_gamma_correction(image, gamma=2.2): """Apply gamma correction to an input image.""" corrected_image = np.array(image).astype(float)/255. corrected_image = (corrected_image ** (1/gamma)) * 255 return Image.fromarray(corrected_image.astype(np.uint8)) # Example usage with a placeholder function call img = Image.open('example.jpg') result_img = apply_gamma_correction(img) result_img.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值