为了做一卷不存在的胶片,我翻了 Adobe、DXO 和二十年的传感器数据

为了做一卷不存在的胶片,我翻了 Adobe、DXO 和二十年的传感器数据

事情最开始其实很简单。

我们做了一个早期版本的 Pearl 800 Noct v0.1 lut,然后拿不同相机去试。

Canon、Sony、Fujifilm。

普通 Bayer、X-Trans。

后来包括 EOS R5 Mark II、Sony A1,还有一些更老的机器。

本来以为,同一套色彩文件放到不同相机上,无非就是有一点偏差,需要针对机型修一下。

结果不是。

有些机器基础颜色很好看,但是一推就坏。

有些机器特别耐折腾,大幅改曝光、白平衡、饱和度都撑得住,但颜色总有一点说不清楚的不自然。

还有一些机器,正常曝光完全没问题,一进入比较激进的高光和暖色区域,肤色、橙色、红色之间的关系就开始变奇怪。

于是我们开始修。

修高光,修黄、橙、红,修不同曝光下颜色怎么走,修高饱和区域,也修同一个 transform 放到不同传感器上以后,为什么会以完全不同的方式坏掉。

版本越做越多,问题反而越来越明显。

最后我们开始怀疑:

可能不只是 LUT 没做好。

可能不同数字相机,从最开始看到的颜色就不一样。

这个问题后来把我们从 Lightroom,一路带到了二十年前的胶片扫描仪、Adobe DCP、DXO 数据库、学术论文、单色仪实验,最后甚至追到了传感器 CFA 本身的光谱响应。

事情就是从这里开始失控的。


1. Pearl 为什么不只是一个 LUT

这里简单交代一下 Pearl,因为这篇文章并不是 Pearl 的介绍。

我们最开始想解决的问题是:

胶片的色彩响应,和数字传感器的工作方式,本来就不一样。

数字 RAW 在相当长的一段处理中,可以近似理解成线性采集。

曝光增加一倍,在线性 RAW 里,理想情况下信号也接近增加一倍。

胶片不是这样。

胶片不仅有非线性的密度响应,颜色本身也会随着曝光发生变化。

如果把普通 LUT 极度简化,可以理解成:

RGB_{\mathrm{out}}=\mathrm{LUT}(RGB_{\mathrm{in}})

但真正的胶片没有这么简单。

同一个红色,在 -2EV、0EV、+2EV 下,并不一定只是亮度不同。

色相、饱和度、不同染料层之间的关系,以及进入高光以后怎么“坏”,都可能一起变化。

所以 Pearl 想做的并不是一个固定 Look。

更接近于做一卷虚拟胶卷

保留一些真正胶片式的非线性色彩行为,同时针对数字传感器重新优化耐受度。

不能完全照搬胶片,因为数字传感器毕竟不是胶片。

也不能完全服从数字系统,否则最后还是一个普通 LUT。

我们想找的,是两者之间的平衡点。

然后问题就来了:

这样一卷虚拟胶片,到底应该建立在什么样的数字传感器上?


2. 第一件事不是研究相机,而是去看前人怎么扫描胶片

其实我们不是第一批面对“胶片怎么进入数字世界”这个问题的人。

来得甚至相当晚。

在数码摄影普及以前,已经有很多公司花了很多年解决一件事:

\mathrm{Film}\rightarrow\mathrm{Digital}

所以我们先去翻扫描仪。

不是单纯找网上样片比较“哪个颜色好看”,而是尽量找原厂软件、ICC Profile、色彩配置和技术资料。

我们翻过 Konica Minolta 的胶片扫描体系,包括 5400、Multi PRO 这一类机器。

看过 Epson V700 这一代。

也研究过 Noritsu 这种真正处理过大量商业胶片的系统。

再往上,又去找 Heidelberg Tango、Aztek / Howtek HiResolve、Screen SG-8060P 这一类专业电分、滚筒扫描设备留下来的资料,也碰过电影胶片数字化这条路线。

目的不是找一台“颜色最准”的扫描仪。

而是想看看:

过去那些真正做 Film → Digital 的工程师,在自己的 Profile 里,到底选择留下了什么,又修掉了什么。

因为扫描出来的东西从来不只是“胶片本身”。

中间还有扫描光源、扫描器件的光谱响应、负片橙色片基、矩阵、ICC、Tone Rendering,以及厂商自己的取舍。

极度简化以后,我们最终看到的更接近:

\mathrm{Film}\times\mathrm{Scanner}\times\mathrm{Light\ Source}\times\mathrm{Profile}\times\mathrm{Rendering}

这反而很有价值。

这些老 Profile 有点像工业考古。

我们不需要相信哪一家是绝对正确的。

但可以站在前人的肩膀上,看他们几十年前是怎么理解“胶转数”的。

问题是,Pearl 面对的是反方向:

\mathrm{Digital\ Sensor}\rightarrow\mathrm{Virtual\ Film}

所以扫描仪可以告诉我们很多经验,却不能直接回答:

数字母体应该怎么选。

于是我们转头去找另一个巨大的资料库。

Adobe。


3. Adobe 给了我们第一个答案

如果研究 RAW 色彩,Adobe 基本绕不过去。

Camera Raw、Lightroom、DNG、DCP。

这么多年、这么多机型,Adobe 积累的相机色彩资料,在普通人能够接触到的体系里,覆盖范围已经非常大。

所以我们最早干的事情其实很朴素:

拆 DCP。

ColorMatrix1、ColorMatrix2、ForwardMatrix、CameraCalibration、HueSatMap……

最先研究的是 ColorMatrix。

简单理解,它描述了 Camera RGB 与标准颜色表示之间的一部分线性关系。

然后我们发现了一件很好玩的事:

A 相机真的可以在一定程度上向 B 相机靠近。

假设两台相机的矩阵分别是:

M_A

和:

M_B

概念上,可以构造一个近似转换:

T_{A\rightarrow B}\approx M_B^{-1}M_A

真正实现的时候当然没有这么机械。

还要处理矩阵方向、白点、归一化,以及 Adobe DNG Pipeline 本身的约定。

但核心思想成立:

如果两台相机的 Camera RGB basis 足够接近,可以利用矩阵关系,让 A 的基础颜色结构向 B 靠近。

我们实际做过。

确实有效。

而且很快发现:

有些相机很好转。

有些怎么转都别扭。

于是我们有了第一代筛选方法。


4. 我们最早看 Mix 和 κ,结果冒出来几台很不起眼的机器

当时我们想知道的是:

A → B 这个转换到底有多费劲。

如果一个转换很干净,当然希望 R 主要还是 R,G 主要还是 G,B 主要还是 B。

而不是 R 大量借 G,G 又大量借 B,最后三个通道互相补来补去。

所以我们做了一个自己的分析量,叫 Mix。

它不是行业标准,只是我们为了筛选机器自己做的工具。

简单说:

Mix 越高,跨通道混合越猛烈。

同时我们还看矩阵的 Condition Number,也就是 κ:

\kappa(M)=\lVert M\rVert\cdot\lVert M^{-1}\rVert

κ 越大,转换越容易把输入里原本很小的误差放大。

所以当时我们的筛选思路很简单:

\mathrm{Low\ Mix}+\mathrm{Low}\ \kappa

结果非常有意思。

一些并不昂贵,甚至很不起眼的机器开始冒出来。

比如:

Canon EOS M5。

Canon EOS M6。

甚至:

Canon EOS 1000D。

这几台都不是大家谈“顶级色彩科学”时第一时间会想到的东西。

1000D 当年甚至只是入门 DSLR。

但按照我们那一阶段的 ColorMatrix、Mix 和 κ 筛选,它们反而相当漂亮。

后来我们又去查其他色准资料,其中一些机器依然出现了不错的结果。

这件事至少让我们很早就意识到:

一台相机卖多少钱,和它的颜色基础是不是有意思,并没有那么简单的关系。

不过很快,我们也发现这套办法有一个根本问题。


5. Adobe 给我们的,其实已经是“修过的答案”

ColorMatrix 非常有用。

问题也恰恰在这里。

Adobe 的任务,是让一台相机最后能够合理地还原颜色。

但我们真正想知道的是:

在 Adobe 开始修正以前,这块传感器到底看到了什么?

假设现实里有两个接近的颜色 A 和 B。

一块传感器记录成:

RGB_A=(0.50,\ 0.30,\ 0.10)

RGB_B=(0.52,\ 0.29,\ 0.10)

它明显看出了区别。

另一块传感器却记录成:

RGB_A=(0.50,\ 0.30,\ 0.10)

RGB_B=(0.501,\ 0.300,\ 0.100)

两者已经快重合了。

后一台相机仍然可能通过一个很好的 ColorMatrix,把标准色卡上的颜色校得很准。

但有一件事做不到:

已经丢掉的 A 和 B 之间的区别,矩阵不能凭空造回来。

所以我们第一次真正意识到:

Color Accuracy 和 Color Information,不是一回事。

于是继续往下挖。


6. DXO、SMI、SSF:我们开始一层一层往下走

下一步我们去翻 DXO 的老数据库。

其中有一个现在摄影论坛已经很少聊的东西:

Sensitivity Metamerism Index,SMI。

我们当时主要看 D50。

很粗略地说,它在回答:

这台相机的光谱响应,适不适合准确还原标准观察者所看到的颜色?

于是我们又把 Adobe Matrix、Mix、κ 和 DXO SMI 交叉起来看。

一度觉得几条线开始收敛了。

但很快发现:

SMI 主要还是在回答:

能不能还原得准。

而我们的问题已经变成:

真实世界里原本不同的颜色,到底有没有被保存下来。

这就只能继续往底层走。

于是开始找 Spectral Sensitivity Function,也就是 SSF:

R(\lambda),\quad G(\lambda),\quad B(\lambda)

它描述的是不同波长的光进入相机以后,R、G、B 三个通道分别怎么响应。

这个东西才真正开始接近一块传感器的“眼睛”。

后来我们找到了 Jiang 等人的 Camera Spectral Sensitivity Database。

里面有 28 台相机,包括 Canon 40D、50D、5D II,Nikon D3、D3X、D700,以及一批同时代机器。

终于可以开始直接看:

红绿在哪里交叉。

蓝通道什么时候退出。

三个通道到底混了多少。

结果又碰到一个坑。

网上很多所谓 SSF,并不是直接测出来的。

有些是通过 monochromator、spectrometer、积分球等设备实测。

有些却是根据色卡或者有限观测数据反推。

预测数据有没有用?

当然有。

但如果我们研究的问题恰好是:

传感器原本究竟丢掉了什么光谱信息?

那再拿一个从颜色结果反推出来的 SSF 去证明传感器本身,就很容易绕成循环论证。

所以后来我们给自己定了一条规矩:

预测型 SSF 可以参考。

真正决定结论的,尽量只使用直接测量的 Ground Truth。

到了这里,能用的数据少了很多。

但也有意思得多。


7. 然后我们以为终于找到了答案:Sensor Separation

后来我们挖到了 Cobalt Image 的一套 Benchmark。

其中最吸引我们的不是 Profile Score,而是:

Sensor Separation。

它问的问题非常直接。

现实世界里有两个不同的反射光谱:

S_1(\lambda)\neq S_2(\lambda)

如果进入传感器以后却变成:

RGB_1\approx RGB_2

那么后面的 DCP、ICC、LUT 再聪明,也不知道它们原来是两个不同颜色。

一句话:

Profile 可以修颜色,但不能复活传感器没有记录的信息。

当时看到这个指标,我们一度觉得:

可能终于找到了。

然后看榜。

Nikon Z8:

\mathrm{Sensor\ Separation}=85.20

Canon R5 Mark II:

\mathrm{Sensor\ Separation}=79.90

Sony A1:

\mathrm{Sensor\ Separation}=71.80

Sony A7R V:

\mathrm{Sensor\ Separation}=66.80

再往前看,D3 / D700 这一代 Nikon 同样非常强。

如果只看 Sensor Separation,结论很简单:

Nikon 屠榜。

到这里其实完全可以写一篇:

《别再吹佳能色彩了,传感器数据告诉你谁才是真王者》。

问题是,我们前面已经拍了很多。


8. 麻烦是,眼睛没有完全同意

如果我们先看到 Cobalt 的榜单,可能真的会在这里停下来。

但 Pearl 800 Noct 从 v0.1 开始的大量人眼测试,是在这之前发生的。

所以出现了一个很尴尬的情况:

榜单和长期拍摄体验,并不完全一致。

我一直觉得某些 Nikon 的颜色很特别。

不是“不准”。

恰恰相反。

它经常非常干净、明确,颜色之间的区别也很强。

只是有些机器长期给我的感觉是:

颜色之间的边界偶尔有点过于明确。

有一点很难单纯用“色准”解释的人工感。

于是我们开始把 Nikon D3X 和另一台我长期觉得基础颜色比较自然的机器放在一起看:

Canon EOS-1Ds Mark III。

结果很有意思。

两台机器在黄红区域的蓝通道残余其实都已经很低。

真正明显的区别,是 R/G crossover。

590nm:

\mathrm{1DsIII}:\quad R/G\approx1.64

\mathrm{D3X}:\quad R/G\approx2.24

600nm:

\mathrm{1DsIII}:\quad R/G\approx2.82

\mathrm{D3X}:\quad R/G\approx3.81

D3X 的红绿交接明显更加激进。

这里必须说清楚:

1Ds III 和 D3X 的这些数据来自不同的直接测量数据集,所以不能拿绝对幅值硬比。

这里有参考意义的是归一化后的 spectral shape 和比例关系。

但这已经给了我们一个很值得继续测试的方向:

分得开,和分得自然,可能不是同一件事。

Sensor Separation 很高,意味着相邻颜色留下了更多可区分的信息。

这是好事。

但这些颜色在 Camera RGB 空间里,是沿着什么方向、以什么速度分开的,又是另一个问题。

想象一段连续颜色:

黄 → 黄橙 → 橙 → 橙红 → 红。

如果一块传感器对其中某一段 spectral variation 特别敏感,那么现实里很小的变化,也可能在 RAW RGB 中产生很明显的位移。

后面当然可以再用 Profile 校回来。

ColorChecker 也可以很准。

但真实世界里的肤色、木头、暖色织物、秋叶这些连续色族,未必因此显得更自然。

目前我们还不能证明这就是某些 Nikon 给人“人工感”的物理原因。

这里只能说:

它是一个值得继续验证的假说。

但至少有一件事情开始变得明确:

\mathrm{Maximum\ Separation}

未必就是答案。

也许真正应该寻找的是:

\mathrm{Appropriate\ Separation}


9. 后来我们发现,还有一个完全不同的维度叫“耐造”

Pearl 自己在这个过程中反而变成了一个很好用的 Stress Test。

因为 Pearl 800 Noct 本身就有一些比较强的非线性色彩响应。

同一个 transform 扔进去,不同传感器的差异很容易被放大。

Canon 5D Mark IV 就是一个很有意思的例子。

它的 spectral response 已经明显不像 1Ds III 那种老 Canon 路线。

Channel overlap 更大。

如果单纯按照“越分离越好”的逻辑,它应该吃亏。

但实际做 Pearl 的时候,我们发现:

5D IV 很耐造。

大幅改曝光。

大幅改白平衡。

猛烈推 saturation。

再叠加强非线性的 Pearl transform。

很多时候它还能撑。

而 1Ds III 给我们的则是另一种感觉:

基础颜色关系更自然。

所以后来我们不得不把原来一句模糊的“色彩好”,至少拆成四件事情。

Color Separation

相近的真实颜色能不能被传感器保存成不同信息。

Color Accuracy / Characterizability

Sensor RGB 能不能稳定、准确地映射到标准颜色空间。

Natural Color Geometry

颜色不仅要分开,它们之间的距离、方向和连续变化是不是自然。

Transform Headroom

经过强烈曝光、WB、饱和度和非线性色彩变换以后,它到底什么时候开始坏。

所以现在我们寻找母体的逻辑,不再是:

\max(\mathrm{某一个指标})

而更接近:

\mathrm{Good\ Separation}+\mathrm{Good\ Accuracy}+\mathrm{Natural\ Geometry}+\mathrm{Enough\ Headroom}

这里有一件事情目前还不能下结论。

5D IV 的 spectral overlap 更大,同时我们观察到它非常耐强变换。

但这不能直接证明“overlap 大,所以更耐造”。

目前只是相关现象。

因果关系还得继续测。


10. 最后我们反而开始重新看 5D II

1Ds III 现在是我们很感兴趣的一台机器。

2007 年。

21MP。

实测 spectral response 很干净,颜色分离足够,又没有 D3X 那么激进的 R/G crossover。

更早的 5D Classic,在一些 spectral geometry 上居然和它很接近。

但 1Ds III 有一个很现实的问题:

越来越不好找。

而且今天二手机器的状态差异已经很大。

所以继续往下看以后,另一台机器反而越来越有意思:

Canon EOS 5D Mark II。

5D II 不是“小 1Ds III”。

这一点要说清楚。

它已经开始有更多 Channel overlap。

比如 590nm:

\mathrm{1DsIII}:\quad B/G\approx1.38\%

\mathrm{5DII}:\quad B/G\approx2.95\%

R/G 关系也有区别。

所以不能简单说它们是同一个东西。

但从目前找到的直接测量 SSF 来看,5D II 依然保留了不少那一代 Canon 的 spectral geometry。

它真正最大的优势,也不是这几个数字。

而是:

它太多了。

当年职业摄影师买。

影楼买。

婚礼摄影师买。

摄像买。

普通爱好者也买。

今天二手市场上依然到处都是。

价格低。

21MP 也够做很多实验。

坏了一台以后,还能找到第二台。

这件事情其实很重要。

做研究最怕的不是机器不够传奇。

而是:

终于找到一台所谓“神机”,结果坏了一台以后再也找不到第二台。

所以如果只是想低成本看看这条老 Canon 路线到底有什么特别,我现在反而会更愿意推荐先找一台便宜的 5D Mark II

有条件再找状态好的 1Ds III。

这样实际得多。


11. 这一路最有用的,其实不是找到了哪台相机

回头看,我们一路上其实一直在重复同一件事。

最早看 Adobe ColorMatrix。

觉得找到答案了。

然后看 Mix 和 κ。

又觉得快找到了。

再后来查 DXO SMI D50。

然后开始看 SSF。

再后来发现 SSF 还得分预测数据和 Ground Truth。

最后找到 Sensor Separation。

又觉得这个数字可能就是答案。

然后 Nikon 屠榜,实际测试却逼着我们重新想了一遍。

每一次都会有一个很诱人的瞬间:

终于可以排第一第二第三了。

但再往下挖一点,就发现每个指标其实只回答了一个问题。

所以现在我反而越来越觉得:

“某某相机色彩科学好”是一句信息量很低的话。

以后再有人说:

“这台相机颜色好。”

至少可以多问四句:

是颜色还原得准?

是相近颜色分得开?

是连续颜色之间的关系自然?

还是特别耐后期、耐强变换?

这四件事情完全可能给出四个不同的答案。

一台相机可以色彩非常准确,Sensor Separation 极高,实验室数据很漂亮,然后你依然不喜欢它的照片。

另一台机器可能没有任何一项世界第一,却刚好在几个互相冲突的目标之间踩中了一个甜点。

这不说明眼睛比仪器高级。

也不说明数据没有意义。

只是说明:

我们以前说“色彩好”的时候,很多时候根本没有在讨论同一个东西。

Pearl 现在还远远没有做完。

我们仍然在尝试把三件事情放在一起:

真实胶片留下来的非线性色彩行为;

过去几十年扫描工业对 Film → Digital 的理解;

以及现代数字传感器本身的颜色结构和耐受度。

最后能不能找到那个平衡点,我现在也不能保证。

但至少和最早做 Pearl 800 Noct v0.1 的时候相比,我们已经知道应该问哪些问题了。

如果你也是摄影师,对这件事情有兴趣,欢迎找我们要目前早期的 Pearl Alpha 色彩配置文件做测试。

不用告诉我们“很好看”。

我们其实更需要听到:

“这里不对。”

“这个肤色有问题。”

“这个曝光下颜色开始坏了。”

“我说不上来为什么,但这里就是有点假。”

因为这一大圈研究,最早就是从一句:

“这张照片怎么有点不对劲?”

开始的。

而如果你已经看到这里,下次再有人告诉你:

“某某品牌的色彩科学就是好。”

你大概可以先问一句:

哪一种好?

编辑于 2026-08-29 · 著作权归作者所有