色调曲线(Faithful 风格)

若仅用直线将密度值取反,得到的图像往往显得苍白、平淡且生硬。OpenEnlarge 改为施加一条符合胶片特性的 S 形曲线,以保护暗部细节、增强中调层次,并将高光柔和地收束至纯净的白。

趾部、中调、肩部

Faithful 曲线的形态呼应了经典的 Hurter–Driffield(H&D)特性曲线 —— 即描述相纸对光线响应方式的曲线。它具有三个鲜明的区段:

  • 趾部 —— 靠近黑位,曲线斜率低于对角线。极暗的值被略微上抬,从而保护暗部细节,而不是将其压死。
  • 中调 —— 斜率最陡的区域,曲线上升速度快于对角线。绝大多数被摄体落在这里,更高的对比度赋予画面深度与质感。
  • 肩部 —— 靠近白位,曲线缓缓弯曲收口。镜面高光与亮部区域被平滑压入高调范围,而不是生硬地截断为死白。

S 形曲线由伽马(γ)约 1.590 参数化,肩部渐近于膝点约 0.892。输出被钳制于 [0, 1],用于 SDR 显示。

纯净的白

曲线有一个微妙但至关重要的特性:当输入 = 1.0 时,输出恰好 = 1.0。这意味着负片中密度最大的点 —— 通常对应场景中最亮的高光 —— 会被映射到完整的纸基白,而不是被压在某个灰色上限处。许多简单的色调映射方案会将高光钳制在灰色天花板下;Faithful 曲线则不然。镜面反光、窗口光、直射阳光下的皮肤,都能达到真正的白。

这一白点锚定在图中清晰可见:S 曲线精确地终结于坐标图的右上角。

toe shoulder true white (1.0) 0 0.25 0.5 0.75 1 input density (normalized t) 0 0.25 0.5 0.75 1 output linear ref
横轴为输入密度(归一化 t,0–1),纵轴为输出(0–1)。虚线对角线为线性参考。S 曲线从 (0, 0) 出发,在暗部低于对角线(趾部 —— 保护暗部),在中调高于对角线(提升对比度),然后在高光区缓缓弯曲(肩部),最终精确到达 (1, 1) —— 纯净的白。

整卷一致的色调

OpenEnlarge 在计算色调曲线时采用固定密度尺度 —— 1 / 0.700 ≈ 1.429 —— 而非对每一帧各自测量的密度进行归一化。这意味着整卷胶片中的每一帧都在同一把色调标尺上被解读。稍微欠曝的一帧和稍微过曝的另一帧,都会经过相同的曲线形态;只有每帧单独的曝光滑块会作出相应补偿。最终效果是:一卷街拍作品一同冲晒时,看起来颇为统一 —— 天空保持一致的白,暗部从帧到帧维持相同的深度。

这与暗房打印师的工作方式如出一辙:在放大机上为整卷胶片统一定好一个曝光时间,再对单张进行局部遮挡与加光处理 —— 全局色调映射固定不变,局部修正叠加其上。

深入原理

Faithful 色调曲线是带软渐近肩部的幂律函数:在趾部至中调区域满足 out = tγ,然后过渡至渐近于膝点约 0.892 的肩部,伽马(γ)约为 1.590。在曲线施加之前,原始密度会先乘以固定系数 FAITHFUL_SCALE = 1 / 0.700 ≈ 1.429;该系数与具体帧无关,从而保证整卷色调的一致性。只有每帧的曝光(对数域乘法)会随该帧的亮度单独调整。

基础曲线之上还叠加了可选的风格层:一条归一化的 tanh S 形曲线,强度为 2.0,锚定为 0 映射至 0、1 映射至 1。它在不改变黑白点的前提下额外增加一层 S 形对比度。在当前的 Faithful 路径中,风格层始终生效。

下一篇:色彩与白平衡 →

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