ICCV 2019【从颜色科学到相机】06_相机为什么有自己的“味道”?色调映射、3D LUT 与 JPEG

颜色与相机成像专题(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 和格式/色彩空间的区别补充了工程说明。

上一篇:白平衡与颜色标定

下一篇:计算机视觉的颜色误区

返回专题目录

相关推荐
吐了啊取名字太难1 小时前
Android 相机 USB 连接别写在 Activity 里:锁屏、切页和后台传输怎么设计?
android·数码相机
Jmyd012319 小时前
文物3D扫描采集系统选型与集成:固定+手持双链路技术方案
3d·文物修复·文物数字化·文物建模
博图光电20 小时前
笔记本键盘漏光缺陷检测
人工智能·数码相机·3d·自动化
程序猿追1 天前
在 HarmonyOS 6 上做了张 3D 翻转卡片,正面背面来回翻
3d·华为·harmonyos
Solange__1 天前
工业产线怎么用AI生成3D场景?从现场采集、部件重建到数字孪生交付的完整方案
人工智能·游戏·3d·ai·语言模型·自然语言处理·关卡设计
爱吃奥利奥_wen1 天前
机器视觉:九点标定
经验分享·数码相机·计算机视觉
Martina_03211 天前
一张地图怎么生成可编辑3D地形?用6步检查高度图、道路约束与Mesh导出
图像处理·人工智能·平面·3d·ai·自然语言处理·游戏策划
LittroInno1 天前
AI云台相机如何协同成像 识别 跟踪与运动
人工智能·数码相机·计算机视觉·目标跟踪·目标识别·云台相机
Shirley~~1 天前
从0搭建一个3D立体场景:光影与交互全解析
前端·3d