我把尼康 RAW 往底层挖了一遍,翻出了一个藏了二十年的“祖传屎山”

我把尼康 RAW 往底层挖了一遍,翻出了一个藏了二十年的“祖传屎山”

我顺着 D850 RAW 里一排“消失的数字”,挖到了尼康二十年的祖传小动作

我一直觉得很多 Nikon 相机有一种很奇怪的感觉。

正常曝光的时候特别好。

颜色扎实,层次清楚,中间调尤其漂亮。

但一旦照片走到两个极端——特别深的暗部,或者快要爆掉的高光——那种舒服的感觉有时候突然就没了。

暗部的颜色容易变得有点僵。

高光则偶尔会出现一种很难描述的“死法”。

最奇怪的是:

D810、D850 这种机器,偏偏又是出了名的动态范围怪兽。

一个低感动态范围这么强的相机,为什么越往动态范围两头用,我反而越容易觉得颜色不对?

以前我也把它归结成“尼康色彩”“Adobe 解 RAW”“个人口味”。

直到最近,我本来只是想测试一块几十年前的 CC 品红色彩补偿滤镜。

结果顺着 RAW 一路往下挖,最后碰到了 Nikon 从 D2X 时代就已经存在的一个“小动作”。

然后很多事情突然连起来了。


一、先看 D850 RAW 里那几个“消失的数字”

很多摄影师对 RAW 的理解,大概是:

光 → 传感器 → ADC → RAW

也就是说,传感器读到多少,RAW 就记录多少。

但 Nikon 很早就不是完全这么干的。

Jim Kasson 对 D850 做 Photon Transfer Curve 测试时,测出了非常明确的 RAW prescaling:

R′ = 1.1636 × R

G′ = 1.0000 × G

B′ = 1.1317 × B

也就是说:

绿色基本不动。

红色先乘 1.1636。

蓝色先乘 1.1317。

然后再写进 NEF。

换算成摄影师熟悉的 EV:

R ≈ +0.22 EV

B ≈ +0.18 EV

这个动作一般叫 prescaling,或者 color-channel preconditioning。

名字不重要。

真正重要的是:

这不是你后来在 Lightroom 里做的白平衡。

在 NEF 真正写下来以前,R/B 数据就已经被 Nikon 动过了。

而且这不是 D850 一台机器的特殊行为。

RawDigger 对 Nikon RAW 的研究认为,这类 color-channel preconditioning 至少可以追溯到 D2X 时代。

D3X、D800 等后来的机器上也能观察到类似特征。

所以标题里说它“祖传”,并不只是为了骂街。

它确实是一套延续了很多代的 Nikon RAW 处理思路。


二、乘个 1.16 而已,有什么大不了?

一开始我也是这么想的。

问题是:

RAW 最后还是要存整数。

举个最简单的例子。

假设 ADC 原来给你的数据是:

100,101,102,103,104……

现在全部乘 1.1636,然后重新取整数。

结果可能变成:

116,118,119,120,121……

发现了吗?

117 没了。

可以把它想象成一把尺子。

原来的刻度是:

100、101、102、103、104……

Nikon 把整把尺子拉长了 1.1636 倍。

但最后又规定:

所有刻度必须落在整数上。

于是有些整数刻度自然永远不会出现。

所以真的去看一些 Nikon RAW 的 R/B histogram,会看到非常规律的“梳子”。

一个数有。

下一个数没有。

然后又有。

这就是所谓的 missing codes。

所以这里第一个可以确定的事实是:

Nikon NEF 里的 R/B,并不总是未经处理的 ADC 整数序列。

而且这个过程不能完美倒推。

因为即使后来知道:

R = R′ ÷ 1.1636

那些已经在重新取整过程中消失的整数,也不可能被完整恢复。

这不代表 Nikon RAW 被“毁了”。

1.16 也不是一个多么恐怖的数字。

但它证明了一件很重要的事情:

RAW 并不一定等于传感器 ADC 的原始整数流。


三、真正让我觉得有意思的,是 Nikon 偏偏动了 R/B

为什么不动 G?

为什么偏偏是 R 和 B?

继续往下挖,就碰到了 Nikon 自己二十多年前的一份专利。

这份专利讨论的恰好就是:

RGB 三个通道原始感光能力不平衡怎么办?

Nikon 在专利里举过一个传统传感器的例子。

大约 5000K 光源下拍摄中性物体,原始 RGB 信号可能是:

R : G : B ≈ 0.45 : 1 : 0.55

翻译成人话:

假设绿色收到 100,

红色可能只有 45,

蓝色可能只有 55。

最后想把这个灰色物体真正变成灰色怎么办?

只能做白平衡。

大约需要:

R × 2.22

G × 1

B × 1.82

所以摄影师平时看到 Lightroom 里的“白平衡”,底下并不只是把照片调黄一点、调蓝一点。

它还意味着:

原本比较弱的颜色通道,需要被更大幅度地放大。

这里必须说严谨一点。

上面的 0.45 : 1 : 0.55,是 Nikon 专利用来说明传统传感器问题的例子。

不是说 D850 实测就是这个数字。

但它至少证明:

Nikon 的工程师二十多年前就已经非常认真地考虑过 RGB 原始响应不平衡这个问题。


四、而且 Nikon 还很在乎“颜色分得开”

这份专利里还有一个很有意思的思路。

Nikon 在讨论提高红色感光能力的时候,特别考虑了 R、G 光谱响应之间的重叠。

说白了就是:

不只是要收到光,还希望 R、G、B 分得足够开。

这其实很好理解。

如果 R、G、B 三个通道的光谱响应全部糊成一团,当然容易喂,白平衡也容易。

但颜色之间的区别也会变弱。

反过来,比较强的 color separation,可以得到更加明确的颜色信息。

所以很多 Nikon 为什么正常曝光时颜色会让人觉得很扎实?

这并不矛盾。

甚至可能恰恰和这种设计取向有关。

红是红。

绿是绿。

颜色之间不容易糊成一锅。

所以这里并不是说:

“Nikon 做错了。”

真正有意思的是:

这套东西在中间可能很好,但到了两头,代价开始出现。


五、先往暗部走

曝光越来越少以后,最基本的事情先发生:

R/B 收到的 photons 越来越少。

光子噪声有一个很简单的规律:

Noise ≈ √N

而信噪比大约是:

SNR ≈ √N

N 就是收到的 photons 数量。

不用记公式。

只记一句话:

真实收到的光越少,后面越难救。

如果 R/B 原始信号本来就相对较弱,那么到了深暗部,它们自然比中间调更加脆弱。

而 Nikon 的数据还要经历:

弱 R/B 信号

ADC

R/B prescaling

重新取整

RAW 软件再做 WB amplification

这里我要故意把结论说轻一点。

目前没有证据证明 Nikon 的暗部“怪感”就是 prescaling 单独造成的。

Prescaling 不会凭空制造几档噪声。

但它确实做了一件并不漂亮的事情:

在本来已经比较弱的 R/B 数据上,又增加了一次不可逆的数字变换和重新量化。

信号很强的时候,这件事几乎无所谓。

假设一个通道有几千甚至上万个有效 code,少几个整数谁都看不出来。

但如果已经接近黑场呢?

当有效信号只剩几十个 code 时,同样的离散化误差占整个信号的比例就完全不同了。

所以我现在更愿意把 R/B prescaling 看成:

暗部颜色问题的一个潜在污染源。

不是唯一元凶。

但越靠近黑场,越值得怀疑。


六、然后往另外一头走

Prescaling 在高光端也不是完全免费的。

因为把 R/B 先乘大,再塞回有限的 RAW 数字空间,本质上是在提前消耗一部分 numerical headroom。

D850 的量级大约就是:

R:0.22 EV

B:0.18 EV

换句话说,Nikon 为了提前整理 R/B 数据,主动交换掉了一小部分 R/B 数字余量。

这点损失并不巨大。

问题在于,它并不是孤立存在的。

因为与此同时,真实世界很多宽谱、中性场景下还有另一个问题:

G 的原始信号往往比 R/B 强。

于是不断增加真实曝光以后,可能发生:

G → physical saturation

而此时:

R/B → still alive

也就是说,高光端可能同时存在两种不同的限制:

一边是 R/B 被 prescaling 改变了 numerical headroom;

另一边是 G 因为收到更多有效信号,先发生真正的 physical clipping。

于是所谓“RAW 顶部”,其实没有想象中那么整齐。


七、绿色先爆,也不是理论脑补

Jim Kasson 用 Nikon Z9 做过一组非常有意思的 RAW bracket 测试。

同一个场景,每次增加 1/3 EV。

结果大概是:

ETTR:RAW 还没有真正 clipping。

ETTR + 1/3 EV:绿色通道开始 clipping。

ETTR + 2/3 EV:高光纹理已经开始明显损失,但 R/B RAW 通道仍然没有全部爆掉。

于是 RAW 顶部其实存在这么一个区域:

RGB 全部正常

G 开始死亡,R/B 仍然活着

RGB 全部死亡

问题来了。

中间这一小截算不算动态范围?

当然算。

因为 R/B 里面确实还有信息。

但从颜色角度看:

它已经不是完整的 RGB 信息了。


八、所谓“高光恢复”,也不是时间倒流

这时候 Lightroom 可能还能把高光“救回来”。

所以摄影师经常会觉得:

“Nikon 高光恢复真牛。”

但如果 G 已经 clipping:

真实的绿色细节就已经不存在了。

RAW converter 能做的是参考:

R、B、周围像素、颜色关系……

然后推测:

“这里的绿色原来大概应该是什么。”

好的 RAW converter 可以猜得非常漂亮。

但:

猜出来的信息,不等于传感器实际测到的信息。

所以我现在看动态范围,已经不太愿意只问:

“这个 RAW 还能不能拉回来?”

我更想问:

R、G、B 三个通道是不是都还活着?

这是两个完全不同的问题。


九、然后 Nikon 偏偏又造出了 ISO 64

到这里,整个故事终于连起来了。

D810、D850 为什么封神?

一个非常重要的原因就是:

低 ISO 动态范围。

尤其 D850。

原生 ISO 64。

暗部能拉得非常狠。

于是 Nikon 的产品特性实际上给摄影师提供了一个巨大的诱惑:

放心往右曝。

摄影圈后来又把 ETTR 讲得越来越深入人心:

只要高光没爆,就继续增加真实曝光。

从最基本的物理规律看,这当然有道理。

真实曝光增加一档:

N → 2N

光子信噪比从:

√N

提高到:

√(2N)

所以:

只要没有 clipping,真实曝光越充分,通常越好。

问题恰恰就在这句话的前半句:

“只要没有 clipping。”

谁没有 clipping?

JPEG 没爆?

亮度直方图没爆?

照片看起来没爆?

还是:

R、G、B 三个 RAW channel 全都没有爆?

如果 G 已经先死了,那么继续往右得到的最后那一点所谓“动态范围”,已经不是完整的 RGB 动态范围。


十、我觉得真正的问题,其实不是 Nikon 动态范围不够

恰恰相反。

是 Nikon 的动态范围太大了。

大到摄影师舍不得不用。

14 EV。

14.5 EV。

最后 0.3 EV 都觉得扔了可惜。

厂家给了多少,我就一定要用满多少。

于是大家会天然认为:

越接近传感器极限,越是在发挥这台机器的性能。

但这背后偷偷藏了一个未经证明的前提:

动态范围里的每一档,质量都是一样的。

实际上并不是。

最下面的一点,可能已经进入极低信号区域。

R/B 很弱。

Prescaling、重新量化、WB amplification 的相对影响越来越值得在意。

最上面的一点,又可能已经进入:

某个通道 numerical headroom 被消耗;

某个通道开始 physical clipping;

RAW converter 开始做 highlight reconstruction。

这些区域当然都可以算进“动态范围”。

但:

能用,不等于值得用。

这是我研究到这里以后最大的观念变化。


十一、我对少一档动态范围,其实一点意见都没有

假设一台相机纸面上有:

14.5 EV

如果为了把这 14.5 EV 一滴不剩地榨干,我必须同时忍受:

最下面 R/B 进入非常弱的信号区;

最上面 G 开始单通道 clipping;

RAW converter 越来越依赖 reconstruction;

那我为什么一定要这 14.5 EV?

如果我主动扔掉上下两头最不舒服的一点,最后只剩:

13.5 EV

但是这 13.5 EV 里面:

R/B 有足够真实信号;

三个通道都没有进入 clipping;

颜色主要来自 measurement,而不是 reconstruction;

那我会毫不犹豫地选:

13.5 EV。

因为动态范围只是一个长度指标。

它不是质量指标。

一条路有 100 公里,不代表 100 公里都是柏油路。

最后 5 公里是烂泥路,当然也可以算进总里程。

问题是:

你为什么非要开进去?


十二、所以我现在更在乎一个东西:Clean Color DR

这是我为了方便讨论自己使用的概念,不是什么行业标准。

普通 Dynamic Range 问的是:

从最暗到最亮,还能记录多少档?

我更关心的是:

其中有多少档,是 R、G、B 三个通道都还处在值得使用的工作区?

我暂且把它叫:

Clean Color DR。

也就是:

干净的彩色动态范围。

它不追求把传感器最后一个电子都榨出来。

它追求的是:

R/B 不要掉进最脆弱的低信号区域。

G 不要进入 clipping。

R/B 也不要因为数字处理撞到 numerical limit。

三个通道尽可能都待在舒服的位置。

如果为了做到这些,需要主动扔掉 0.5 EV,甚至 1 EV:

我一点意见都没有。


十三、这也是为什么我开始重新考虑 D850 的 ISO 400

D850 在 ISO 320 → 400 左右会发生一次 conversion gain 切换。

实测可以看到 input-referred read noise 明显下降。

所以 ISO 400 对 D850 来说是一个很有意思的工作点。

注意:

我不是说:

“ISO 400 动态范围比 ISO 64 大。”

当然不是。

我的想法恰恰相反:

我主动不要 ISO 64 给我的全部动态范围。

我要的是换一个合适的 conversion-gain 工作状态,然后把真正重要的数据放在 RAW 最舒服的位置。

所以可以尝试:

ISO 400 + 充分的真实曝光。

如果使用自动曝光模式,可以通过正曝光补偿实现。

如果使用 M 档,本质就是自己增加真实 sensor exposure。

目标只有两个:

不要让 R/B 饿死。

不要让 G 撑死。


十四、为什么会想到 ISO 400 +1,甚至 +2?

ISO 64 到 ISO 400 相差:

log₂(400 ÷ 64) ≈ 2.64 EV

所以在相同测光逻辑下:

ISO 400 / 0 EV

相对于:

ISO 64 / 0 EV

会少大约 2.64 EV 的实际 sensor exposure。

那么:

ISO 400 / +1 EV

仍然少:

2.64 - 1 = 1.64 EV

而:

ISO 400 / +2 EV

仍然少:

2.64 - 2 = 0.64 EV

于是 ISO 400 +2 EV 就变得很有意思。

它已经进入 D850 的 high-conversion-gain 工作区。

同时又给了 R/B 相当充分的真实曝光。

但相对于 ISO 64 的常规测光曝光,仍然保留大约 0.64 EV 的曝光差。

这块空间可能恰好可以用来远离 G 最危险的顶部区域。

注意:

这不是说 D850 的标准答案就是 ISO 400 +2 EV。

+1、+1.3、+1.7、+2,都只是具体场景可能出现的结果。

真正的原则只有一句:

选择合适的 conversion-gain 工作区,然后尽可能增加真实曝光,但提前离开 RAW 两头最不舒服的区域。


十五、但我后来发现,还有一个更邪门的办法

前面的办法,本质上还是:

我主动少用一点动态范围。

但是有没有可能直接改变 R、G、B 三个通道的关系?

也就是:

在 RAW 出生以前动手。

于是我找来了一块几十年前的东西:

CC40M Magenta Color Compensating Filter。

然后真的测了一遍。

测试机不是 Nikon,而是一台 Canon EOS-1Ds Mark III。

同一个场景。

同样 ISO。

同样光圈。

同样快门。

然后直接解两张 CR2 的 Bayer RAW 数据。

结果是:

R:-0.80 EV

G:-1.21 EV

B:-0.80 EV

所以真正关键的数字不是:

“它损失了一档光。”

而是:

-1.21 - (-0.80) ≈ -0.41 EV

也就是说:

CC40M 让 G 相对于 R/B 少了大约 0.4 EV。


十六、然后把损失的曝光真正补回来

假设 CC40M 总体损失大约一档。

我们不用 ISO,也不用 Lightroom Exposure 去补。

而是真的把快门放慢一档。

也就是:

Physical Exposure +1 EV

那么粗略来看:

R:-0.8 + 1 = +0.2 EV

B:-0.8 + 1 = +0.2 EV

G:-1.2 + 1 = -0.2 EV

于是相对于裸机:

R/B ≈ +0.2 EV

G ≈ -0.2 EV

看到这里,这块滤镜真正干的事情就很清楚了。

它不是简单把照片染成品红。

它是在:

重新分配进入传感器的 photon budget。

原来相对吃亏的 R/B:

多吃一点。

原来最容易先碰到上限的 G:

少吃一点。

而且这一切发生在:

ADC 以前。

不是 Lightroom。

不是 LUT。

不是 Profile。

甚至 RAW 文件都还没有出生。


十七、这和“增加动态范围”其实没有什么关系

这一点我现在反而想说得特别清楚。

CC40M 并不会神奇地把:

14 EV

变成:

14.4 EV。

Sensor 的 full well 没有凭空变大。

Read noise 也没有凭空消失。

我甚至完全接受:

用了它以后,某些意义上的总效率或者可用动态范围少一点。

我不在乎。

我真正想换的是:

剩下来的范围更干净。

所以 CC40M 的价值不是:

“增加 0.4 EV 动态范围。”

而是:

牺牲一部分总透射率,换取更合理的 RGB photon distribution。

这和前面的 ISO 400 思路,本质上其实是一回事:

我不再追求把 Nikon 的纸面动态范围一滴不剩地榨出来。

我开始主动取舍。


十八、最有意思的是:Nikon 自己二十年前就想过这条路

继续翻前面那份 Nikon 专利,会看到一个非常有意思的方案。

Nikon 明确讨论过:

降低绿色通道的 optical transmission。

目的就是让:

R : G : B

更加接近。

换句话说:

如果 G 太强,那就把 G 压一点。

然后 Nikon 紧接着指出了这个办法最大的缺点:

Sensitivity 会下降。

所以 Nikon 更倾向于增强 R/B,而不是主动砍 G。

从商品相机的角度看,这个决定完全合理。

一台相机要卖给:

体育摄影师。

新闻摄影师。

婚礼摄影师。

普通消费者。

谁愿意平白损失 sensitivity?

但二十多年以后,如果换成我的使用场景:

风光。

静物。

建筑。

产品。

棚拍。

相机就在三脚架上。

1/125 秒变成 1/60 秒,又有什么关系?

如果损失这一档总透射率,可以换来更合理的 RGB photon allocation:

这一档光我愿意付。


十九、所以现在还差最后一个实验

到目前为止,真正可以确认的证据其实已经不少。

第一:

Nikon 长期存在 R/B RAW prescaling。

D850 实测大约:

R′ = 1.1636 × R

B′ = 1.1317 × B

第二:

这种非整数 digital multiplication 会在 RAW 中留下规律性的 missing codes。

第三:

D850 的 prescaling 大约相当于:

R:+0.22 EV

B:+0.18 EV

也就是说,它确实改变了 R/B 的数字尺度和 numerical headroom。

第四:

Nikon Z9 的 RAW bracket 实测证明,在特定自然场景里,G 可以比 R/B 更早发生 clipping。

第五:

Nikon 自己二十多年前的专利明确讨论过 RGB sensitivity imbalance、光谱分离,以及降低 G optical transmission 的解决路线。

第六:

我们自己的 CC40M + 1Ds Mark III RAW 对照实测得到:

R:-0.80 EV

G:-1.21 EV

B:-0.80 EV

也就是:

G relative ≈ -0.4 EV

现在真正缺的只有最后一块拼图:

D850 + CC40M。

裸机拍一组。

CC40M 拍一组。

把滤镜损失用真实快门补回来。

然后直接看:

R 什么时候 clipping。

G 什么时候 clipping。

B 什么时候 clipping。

再看深暗部 R/B 的实际表现。

如果最终真的能够让三个通道更接近自己的最佳工作区,同时减少对 RAW 两端的依赖,那么这块几十年前的老滤镜就干了一件非常有意思的事情:

它没有给 Nikon 增加动态范围。

它只是帮我把那些我真正想要的动态范围,变得更干净。

现在还不能宣布它成功。

但这个实验已经非常值得做。


二十、研究到这里,我反而开始没那么在乎“14.5 档动态范围”了

不是说动态范围测试是假的。

而是这个数字只告诉了我们一部分事情。

以前看到:

14.2 EV。

14.5 EV。

差 0.3 EV,我都会觉得这是技术差距。

现在我会先多问一句:

这 14.5 EV 里面,到底有多少是我真正想用的?

最下面那一点:

R/B 还有多少真实信号?

Prescaling、重新量化和 WB amplification 相对于真实信号还占多少?

最上面那一点:

R、G、B 三个通道都还活着吗?

还是已经有一个通道 clipping,剩下的东西开始交给 RAW converter 猜?

如果最后 0.5 EV 是:

G 已经死了,

R/B 还活着,

那这 0.5 EV 当然仍然可以计入动态范围。

但它和:

R、G、B 全部完整的 0.5 EV,

对我来说不是同一种东西。


最后

以前我看曝光,只看一件事:

亮不亮。

后来开始拍 RAW,学会看:

爆没爆。

再后来学 ETTR,开始想:

还能不能再往右一点。

而 Nikon 恰恰特别容易让人产生这种欲望。

ISO 64。

巨大的低感动态范围。

暗部随便拉。

于是慢慢地,我们开始舍不得浪费任何一丁点纸面性能。

厂家给 14.5 EV,

我就一定要用满 14.5 EV。

最后 0.3 EV 也舍不得扔。

但研究到这里,我越来越觉得:

这可能才是真正需要改掉的习惯。

摄影从来没有规定:

一台 14.5 EV 的相机,

你就必须使用全部 14.5 EV。

如果主动放弃上下两头最不舒服的一点,最后只剩 13.5 EV,

但换来的是:

更稳定的 R/B;

更完整的高光 RGB;

更少依赖 RAW converter 猜颜色;

那我会毫不犹豫地选 13.5 EV。

因为:

动态范围是长度指标,不是质量指标。

一条路有 100 公里,不代表 100 公里都是柏油路。

最后 5 公里是烂泥路,当然也可以算进总里程。

但你没有义务非得开进去。

所以现在再有人告诉我:

“这台相机有 15 档动态范围。”

我的第一反应已经不是:

“牛逼。”

而是会多问一句:

15 档我知道。

干净的有几档?

当别人还在比较 14.2 EV 和 14.6 EV 的时候,如果你已经开始关心:

R、G、B 分别收到了多少 photons;

哪个通道最先碰到墙;

RAW 文件出生以前,厂家又对数据做过什么;

以及为了最后那半档纸面动态范围,到底值不值得付出颜色上的代价——

那么你看“动态范围”这三个字的时候,其实已经是在看另外一个东西了。

我现在真正想要的,不是:

最大的动态范围。

而是:

最大的干净动态范围。

说到底,原则还是那句特别土的话:

别让红蓝饿死,也别让绿色撑死。

至于厂家送我的最后那半档?

不好吃,我可以不吃。


参考资料

Jim Kasson:More D850 PTCs —— D850 R/B prescaling 系数,以及 ISO 400 附近 conversion-gain / read-noise 变化。

Jim Kasson:Nikon D850 photon transfer curves / D850 EDR 系列测试 —— Nikon factory WB prescaling、各颜色通道表现。

Jim Kasson:Lightroom highlight recovery —— Nikon Z9 以 1/3 EV 为间隔的高光 bracket 测试,可观察到绿色通道先开始 clipping。

RawDigger:RawDigger Histograms, Part 3: Overexposure Shapes —— Nikon 从 D2X 时代开始的 color-channel preconditioning,以及 D800、D3X 等 RAW histogram 实例。

RawDigger / LibRaw:关于 Nikon white-balance preconditioning 的讨论 —— RAW 数据在写入以前已经被改变,事后不能无损恢复原始整数序列。

Nikon Corporation:EP1494487,Color photographing device —— Nikon 对 RGB sensitivity imbalance、R/G spectral separation、R/B sensitivity,以及降低 G optical transmission 等方案的讨论。

本文 CC40M 实测:Canon EOS-1Ds Mark III,相同 ISO、光圈、快门条件下直接比较 Bayer RAW;测得 R ≈ -0.80 EV,G ≈ -1.21 EV,B ≈ -0.80 EV,即 G 相对 R/B 约 -0.4 EV。

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