颜色与相机成像专题(6):相机为什么有自己的"味道"?色调映射、3D LUT 与 JPEG
前面的传感器校正和颜色转换,还不能解释为什么同一份 RAW 可以产生不同风格的照片。关键在于 photo-finishing,也就是相机为了视觉效果施加的颜色与色调渲染。
关键词:ISP、色调映射、3D LUT、JPEG、ICC
1. 标准颜色表示不等于最终照片
经过白平衡和颜色标定,相机可以得到具有明确色彩空间意义的数据。但厂商通常还会调整肤色、天空、植被、阴影和高光,使照片符合产品的审美目标。
请添加图片描述
图 1:讲义 PDF 第 159 页。同一原始输入经过不同风格处理,可以生成不同结果。
这种处理不是 JPEG 压缩导致的。即使最后以无损 PNG 保存,相机已经做过的风格渲染仍然存在。
因此,"标准模式"不必然意味着"测色准确";某种标准颜色编码也不意味着色调处理固定。
2. 1D 曲线:一个输入值对应一个输出值
最简单的色调处理可写成:
v = f ( u ) v=f(u) v=f(u)
提亮曲线提高某些输入区间的输出;压暗曲线做相反处理;S 曲线通常压低部分阴影、抬高部分亮部,以增强对比。
1D LUT 用一维采样表近似这个函数。输入落在采样点之间时,需要按约定插值。
若同一曲线分别作用于三个通道,并不保证色相和饱和度完全不变,因为非线性函数一般不保持通道比例。也可以在亮度或其他分量上设计曲线,以满足不同目标。
3. 3D LUT:通道之间可以相互影响
3D LUT 将三通道向量映射为另一个三通道向量:
( r ′ , g ′ , b ′ ) = F ( r , g , b ) (r',g',b')=F(r,g,b) (r′,g′,b′)=F(r,g,b)
例如,改变"偏青的蓝色"而尽量保持肤色,通常需要根据三个输入通道共同决定输出,而不是分别应用三条独立曲线。

图 2:讲义 PDF 第 160 页。LUT 表示一种映射,图中的工作空间依具体管线而定。
3D LUT 不必保存每个可能输入的结果。常见实现只在规则网格上存储节点,运行时使用三线性或四面体插值。
套 LUT 前必须知道它期待哪种输入:线性还是对数,什么基色,什么白点,范围是 0~1 还是其他约定。一个为某种 Log 编码设计的 LUT,直接套在 sRGB 上通常不会得到预期结果。
4. 局部色调映射:同一个输入值也能得到不同输出
全局曲线中,相同输入值的映射相同。局部色调映射可能还依赖位置和邻域:
I o u t ( p ) = F ( I ( p ) , N ( p ) , p ) I_{\mathrm{out}}(p)=F(I(p),\mathcal N(p),p) Iout(p)=F(I(p),N(p),p)
N ( p ) \mathcal N(p) N(p) 表示附近图像结构或局部统计。这样可以压缩高动态范围、提升暗部可见性或保留局部对比。

图 3:讲义 PDF 第 163 页。局部处理依赖内容,右侧差异图也说明变化并非一个统一增益。
代价是某些简单模型会失效。例如,用一条全局响应曲线尝试"还原整个图像"时,可能根本不存在这样的一条曲线。
局部映射还可能产生光晕或让相邻区域的对比关系发生变化。评价效果不能只看直方图,也需要查看边界和结构。
5. 色调映射和 sRGB 编码为什么要分开?
色调映射决定如何呈现场景和风格,sRGB 传递函数决定如何编码已选定的线性 sRGB 分量。二者都可能非线性,但目的和可知程度不同。
可以用下式表达:
j = Γ ( F ( x ) ) j=\Gamma(F(x)) j=Γ(F(x))
逆 sRGB 只会给出:
Γ − 1 ( j ) = F ( x ) \Gamma^{-1}(j)=F(x) Γ−1(j)=F(x)
它没有自动消除 F F F。这正是"我已经做了 inverse gamma,所以它是物理线性图像"这一判断容易出错的原因。
还要区分显示白点与真实观看环境。文件采用 D65 并不保证用户正在 D65 环境下观看,显示器自身也需要可靠的颜色管理和校准。
6. JPEG 到底损失了什么?
讲义介绍的常见基线 JPEG 编码流程包括颜色分量处理、分块、DCT、量化以及熵编码。常见彩色 JPEG 还会使用 YCbCr 和色度子采样,但这不是所有 JPEG 实现的唯一方式。

图 4:讲义 PDF 第 167 页。量化是该常见流程中主要的有损步骤之一,色度子采样也可能造成信息损失。
对一个 DCT 系数 C ( u , v ) C(u,v) C(u,v),量化可写成:
C ^ ( u , v ) = round ( C ( u , v ) T ( u , v ) ) \hat C(u,v)=\operatorname{round} \left(\frac{C(u,v)}{T(u,v)}\right) C^(u,v)=round(T(u,v)C(u,v))
解码时乘回 T ( u , v ) T(u,v) T(u,v),只能得到近似值。多个原始系数可能映射到同一个整数,信息已经不可逆地丢失。
质量参数越高,通常量化越轻,但不同软件的"质量 90"并不保证使用相同量化表。高质量 JPEG 也不会撤销之前的饱和、降噪和色调映射。
7. EXIF 与 ICC 能告诉我们什么?
EXIF 常包含设备、曝光、焦距、ISO、拍摄时间等信息。厂商私有字段可能提供更多设置,但并非每个文件都完整保留,也不保证包含所有 ISP 参数。
ICC 配置文件用于描述颜色如何连接到标准的 Profile Connection Space;ICC 常见 PCS 是基于 D50 的 XYZ 或 Lab。它能支持颜色管理,却通常不是相机完整处理过程的可逆记录。
所以,"有 EXIF"不代表能恢复 RAW,"有 ICC"也不代表可以撤销任意美颜、局部增强或多帧处理。
8. 四个判断问题
- 照片颜色不同,先检查白平衡、颜色标定和风格设置,不要只怀疑压缩。
- 想重现相机 JPEG,除 RAW 和标准矩阵外,还需要了解渲染与其他处理。
- 想从 JPEG 反推场景,要检查饱和、量化、局部映射等不可逆因素。
- 想更换格式,要分别考虑颜色表示、位深、压缩和元数据,不要把它们合并成一个"画质"指标。
讲义讨论 HEIC、Display P3 和学习压缩的内容属于当时的行业观察。HEIC 不固定等于 P3,二维色域面积扩大多少也不能直接当作所有颜色能力的百分比提升。
参考与出处
- Michael S. Brown,PDF 第 156~175 页。
- 本文对 LUT 输入约定、常见 JPEG 路径、ICC PCS 和格式/色彩空间的区别补充了工程说明。
上一篇:白平衡与颜色标定
下一篇:计算机视觉的颜色误区