Skip to content
L2进阶

线性光与伽马:图形处理为什么在线性空间做 ​

这一页解决一个具体困惑:为什么同一张图,在不同软件里缩放、模糊、混色的结果会不一样。 答案通常是同一个 —— 它们在不同的空间里做了运算。

本页按三段式走:先把两个"亮度"分清(概念)→ 再学会判断与设置(会用)→ 最后把"为什么会偏"推导出来(原理)。

📌 本页在"色彩管线"上的位置:本页负责运算空间这一环(为什么处理要在线性光下做)。 灰阶与 EOTF 见 灰阶与 EOTF; 管线全图与可补性矩阵见 偏色与补偿。


一、概念:两个"亮度"不是一回事 ​

概念含义
编码值(图像文件里的 0–255)为了存储与传输做了非线性变换的值
线性光(实际光强比例)物理上的光强,翻倍就是真的翻倍

两者之间是一次幂函数关系(指数即通常说的伽马)。加这个变换,是为了让有限位深在暗部更省、更精细 —— 因为人眼对暗部的差别更敏感(见 人眼视觉基础)。

⚠️ 关键后果:编码值上的"中灰"不是光强的"一半"。所以直接在编码值上做算术,结果会偏。

传递函数在链路两端各管一段(术语容易混,先分清):

内容编码      编码侧把光转成电信号存储 —— 光 → 电(OETF 类)
    ↓
线性光        合成与处理应在此进行
    ↓
显示端        把电信号还原成光 —— 电 → 光(EOTF / PQ / HLG)
  • 编码侧负责"用有限码位尽量装下感知上重要的信息";
  • 显示端负责"把码值还原成应有的光",也就是通常说的 EOTF 与灰阶跟踪;
  • 本页关心的是中间那层:处理链有没有在正确的空间里算。

二、会用(一):怎么判断"这段在错的空间里算" ​

运算在编码值上做正确做法(线性光下)实际表现
缩放 / 重采样边缘变暗或发亮先转线性再缩放细线条缩放后"变细"或发灰
模糊亮部扩散不足、暗部过度线性下混合光晕与过渡不自然
抗锯齿边缘偏暗("黑边感")线性下加权文字与斜边显脏
半透明混色混合结果偏暗线性下混合玻璃与烟雾类效果失真
HDR 合成高光滚降不自然线性下合成再映射高光层次丢失

四类可以自己做的验证(用内容去问链路的"空间问题"):

① 细线 / 单像素线条:缩放或缩放后再看,是否"变细、发灰、断裂"
   —— 空间错误最先在线条类内容上暴露
② 黑白渐变:看台阶分布是否与预期一致(错的空间+映射会重排台阶)
③ 半透明叠加:玻璃 / 烟雾 / 粒子效果,看是否整体偏暗
④ HDR 高光滚降:太阳、灯泡、金属反射,看高光是否"糊成一片"

✅ 一句话:只要涉及"两个光强的加权平均",就应该在线性空间做。 伽马空间的算术会系统性地压暗亮部的权重(推导见第五节)。

⚠️ 这类问题的特征:不是"偏色",而是亮度的分配不对 —— 判据上表现为渐变台阶、边缘发脏、暗部细节丢失(见 色深与量化)。

三、会用(二):设置清单(按环节) ​

环节该确认什么常见错误
内容 / 制作侧内容标称的空间(sRGB / BT.709 / P3 / HDR 格式)把广色域素材当 sRGB 处理
系统 / 软件是否启用色彩管理;缩放与合成在哪个空间做关掉色彩管理后仍按"颜色准"评价
显卡 / 播放器输出范围(有限 / 全)、缩放方式、是否二次处理双重缩放导致锐度与台阶变化
显示器色域模式、伽马 / EOTF 设定、增强项是否在动用"增强"去补内容侧的错误
链路色度抽样、色深、是否 DSC抽样被降到 4:2:0 而不知情

两条顺序原则:

① 先修"解释",再修"显示" —— 内容标称的空间与显示器色域模式要匹配,
   否则后面所有调参都在补偿一个错的起点
② 伽马 / EOTF 的选择以标准与制作环境的规定为准(口径见 [灰阶与 EOTF](grayscale-and-eotf.md),
   数值出处见 [标准值总表](standards-values.md))—— 不要用"看起来更亮"来选

四、会用(三):什么时候"改运算空间"才是正解 ​

现象该不该动运算空间
缩放到非整数倍后细线变细、发灰✅ 多半是缩放器的空间问题
模糊 / 景深过渡生硬、发白✅ 合成空间问题
半透明叠加整体偏暗✅ 混合空间问题
整体色偏、白点不对❌ 属白点与映射问题(见 白点与色温)
暗部台阶⚠️ 可能是位深/LUT/映射,也可能是空间(见第六节)
亮度不够、对比不足❌ 属亮度与背光层(见 背光与调光)

⚠️ 误诊代价:把"空间问题"当"色准问题"去调白点,会把本来正确的颜色调偏; 把"色准问题"当"空间问题",会去改缩放与合成,问题却一点没动。

五、原理:为什么会偏(可推导) ​

① 为什么要加伽马:把码位按"感知"分配

若码值线性对应光强:暗部很多码位对应人眼几乎分不出的差别 → 浪费
伽马编码后:暗部每个码值对应的光强差更小 → 同样的位深,感知上更均匀

所以伽马不是"为了好看",而是在有限位深下提高感知效率的工程选择。

② 推导:为什么在编码值上取平均会偏

取两个极端值:0(黑)与满值(白)

在线性光下取中点 → 光强应为 50%
把它换算回编码值(按常见 2.2 关系)→ 约 0.73 满值,而不是 0.5 满值

反过来:编码值取中点(0.5 满值)→ 对应的光强明显低于 50%

结论:编码值上的算术,等于给暗部加权(暗部在编码轴上占的"长度"更多)。 所以凡是要做加权平均的操作(缩放、模糊、抗锯齿、半透明混合、HDR 合成), 都该先转到线性光再算、算完再转回去。

③ 为什么显示端要用"反向"的传递函数

环节方向作用
编码侧光 → 电用有限码位装下感知上重要的层次
显示端电 → 光还原成应有的光;决定灰阶跟踪是否准确
HDR电 → 光(PQ / HLG)需要覆盖更大动态范围,用不同的映射思路

④ 为什么"黑位增强 / 对比度增强"会破坏伽马

这类功能改的是映射链(把某段灰阶重新分配),并不增加面板能力 —— 结果是灰阶跟踪相对目标曲线偏移:暗部被抬亮、层次被压缩,与校准时的曲线不一致。

⚠️ 所以"测完再开增强"等于换了判据(见 灰阶与 EOTF、 图像处理与画质引擎)。

六、判据与验收要记录的条件 ​

必记为什么
缩放方式与倍率整数倍与非整数倍的算法不同
处理链所在的空间决定边缘与过渡的表现
内容标称的空间与传递函数与显示端是否匹配
显示端传递函数与模式EOTF 决定最终光输出
位深与链路抽样 / 压缩台阶与量化的另一条来源
是否启用 HDR 合成混合空间不一致会放大问题

✅ 判据怎么落:上表条件写成判据时,套 判据与验收 的模板; 换了处理链或设置之后的数据能不能比,见 测量标准索引。

七、常见误区 ​

误区事实
伽马只是"亮度曲线",调调就行它决定运算空间,影响缩放与合成结果
位深够高就不会有台阶台阶也可能来自运算空间与映射链
只有显示器是可调环节播放器、缩放器、合成与系统级色彩管理都在链上
线性光只与 HDR 有关SDR 的缩放、半透明混合同样受影响
"看起来更亮"就是伽马选对了显示端传递函数要与内容标称、制作环境匹配
开了增强再校准也一样增强改的是映射链,会与校准结果互相抵消

📋 判据接口:本页属色彩与视觉类 —— 依此页结论做判定时,除通用条件外还必须附带 判据字段集 · 色彩与视觉类 所列字段(共 7 项):这个"颜色对不上"是偏差、是范围,还是观察条件? 缺任一项,结论不可复核,只能作降级表述。

关键概念速查 ​

通用术语见 统一速查(由统计生成,只在一处维护)。

术语含义
编码值 / 线性光文件里的数值 / 物理光强,两者是幂函数关系
线性空间运算加权平均类操作应在光强比例下做
编码侧传递函数光 → 电,把感知层次装进有限码位
显示端传递函数电 → 光,决定灰阶跟踪与最终光输出
EOTF / PQ / HLG显示端的几类"电 → 光"映射思路

相关文档 ​


数据来源:本页内容整理自公开标准规范、厂商公开资料与行业通用实践,仅供参考;具体以官方规范原文与厂商官方资料为准。

本站为个人学习整理(含 AI 辅助),内容整理自公开标准与公开资料,未经本站独立实测,仅供学习参考,不构成专业建议;文中提及的商标归各自权利人所有 · 免责声明 · 隐私与条款