密度与对数空间

胶片对光的响应不是线性的,而是对数式的。正因如此,光学密度而非原始亮度才是胶片反转的自然域:等量的密度差对应等量的摄影档(stop),OpenEnlarge 中的每一个滑块都在这个空间内工作。

光学密度

密度衡量的是胶片层对光的阻挡程度。让光穿过胶片,若只有十分之一到达另一侧,则该层的透过率为 0.1。比尔–朗伯定律将透过率与密度联系起来:

T = 10−D

密度 D = 1 的胶片透过率恰好为 T = 0.1(入射光的十分之一);D = 2 时为 T = 0.01。每增加一个整数密度单位,阻光量就增大十倍 —— 这种十倍关系与对数自然对应。OpenEnlarge 直接从扫描值计算密度:

D = log₁₀(片基 / 扫描值)

其中 片基 为从透明胶片边缘采样的像素值,扫描值 为各点的原始值。相除消除橙色片基;取对数将结果转化为密度,并钳制为不小于零,使透明胶片读数为 D = 0。

什么是「摄影档」?

摄影档(stop)是光量的加倍或减半:多一档即光子数量翻倍。在密度尺度上,每一档对应固定的增量 log₁₀(2) ≈ 0.301。反过来说,一个密度单位涵盖 1 / 0.301 ≈ 3.32 档

这正是密度域适合图像编辑的原因。在原始线性光中,暗部与高光覆盖的数值范围天差地别 —— 亮区同样一档的变化数值极大,而暗区却极小。在密度空间中,每一档的大小处处相同。等量的滑块移动在整个影调范围内带来等量的感知变化。

+1 stop +1 stop D 0.0 D 0.3 D 0.6 D 0.9 D 1.2 density D = log₁₀(light) 1 2 4 8 16 linear light (stops ×2) +1 stop → +0.30 D
几何级数的光量值(1、2、4、8、16 —— 每次翻倍即一档)在以档为间距的横轴上呈一条直线。每增加一档,光学密度增加相同的约 0.30(D = 0.0 → 0.3 → 0.6 → 0.9 → 1.2),印证了密度等差即摄影档等差的规律。

白点(d_max)

负片中密度最大的点对应场景中最亮的部分——或胶片边缘完全未曝光的片头。OpenEnlarge 将此密度值称为 d_max。它按通道从待显影的胶片中求取,并锚定归一化步骤:

t = D / d_max

经此除法后,t = 0 对应负片最薄处(场景最深阴影),t = 1 对应负片最厚处(纸基白)。在当前的 Faithful 路径中,色调曲线直接作用于经固定系数缩放的原始密度 D(参见色调曲线页面),而非作用于逐帧的 t;平衡与风格层则作用于色调曲线的输出。参见确定白点,了解如何正确设置 d_max

深入原理

密度公式为 D = log₁₀(片基 / 扫描值),钳制为 ≥ 0;片基 从透明胶片边缘采样,扫描值 为原始像素值。一个密度单位约等于 3.32 摄影档(因为 log₁₀(2) ≈ 0.301,1 / 0.301 ≈ 3.32)。白点归一化为 t = D / d_max,其中 d_max 为各通道负片的最大密度值。OpenEnlarge 中的曝光是以黑点为支点的对数域乘法 —— 在 Faithful 模式下,曝光滑块每移动一单位约对应 1 档/EV。

下一篇:色调曲线 →

OpenEnlarge —— 开源胶片扫描编辑器 · MIT 许可