适用于 v1.1.0+ 14 分钟阅读
Color Science 02 / 统一管线

五级输入域解析与统一密度管线

输入格式仅决定输入域,密度数学全局唯一:从片基采样三级优先级到有界通道跨度响应。

# 统一密度管线设计哲学:格式与数学解耦

在传统胶片扫描与反相软件中,常见的架构缺陷是让输入文件格式直接决定后端的密度计算数学。例如,数码相机翻拍的 RAW 文件走一套经验加权算法,哈苏 Flextight 或易迈康扫描仪的 FFF 文件走第二套裁剪逻辑,而普通 TIFF 文件又被分流至第三套未加校正的显示伽马曲线。这种格式与算法强耦合的设计,导致同一卷胶片在不同采集设备下呈现出互不兼容的色彩风格,严重阻碍了色彩科学的严肃复现。

NexFilm 引擎在 v1.1.0 确立了统一密度管线核心原则:输入格式仅决定输入域,密度数学全局唯一。

无论源文件是数码相机无损压缩 RAW、扫描仪高位深度 LinearRaw DNG、封装专有元数据的 FFF 容器,还是附带专业色彩配置文件的 16-bit TIFF,解码器的工作仅限于识别并解析其物理色彩空间与光电转换特性,将其无损投射至统一的 32 位浮点线性 ProPhoto 工作域。一旦完成输入域线性化,后续的所有光学密度运算——包括片基扣除、印片光调节、有界通道跨度响应与显示映射——对所有文件类型完全同构。

输入文件(RAW / FFF / TIFF / DNG / JPEG)
       │
       ▼
resolve_input_domain(path, scanner_profile)
       │  ← 唯一允许分叉的输入解析阶段
       ▼
统一工作空间:ProPhoto 线性 f32(杜绝 u16 中转量化损失)
       │
       ▼
统一光学密度变换:D = -log10(max(T, epsilon))
       │
       ▼
逐通道片基扣除:D_net = D_raw - D_base(原点严格共享,零通道偏移)
       │
       ▼
有界通道跨度响应(死区 1.15× / 正常上限 1.35× / 截断上限 3.0×)
       │
       ▼
正片线性化与显示映射:ProPhoto -> 输出色域与目标 LUT

这种架构消除了早期版本中将解码数据压缩至 16 位整数线性 sRGB 造成的严重色域截断,确保了高动态范围负片无论源自何种设备,均能在完全一致的光学物理基底上展开调色。

# 五级输入域解析判定链与元数据提取

为了准确将各类异构图像文件还原为真实物理透射率,NexFilm 实现了由低到高严格分级的输入域判定链函数 resolve_input_domain。系统依次探测五层元数据依据,每一步均记录明确的数据来源、色度基色、传递函数与置信度标记:

  1. 第一优先级:内嵌 ICC 色彩特性文件
    若 TIFF 或 JPEG 图像内部包含合法的 ICC Profile(如 Adobe RGB (1998)、Display P3 或扫描仪专用校准配置文件),引擎直接提取其 rXYZ、gXYZ、bXYZ 矩阵与响应曲线标记。该来源具有最高权威性,被判定为经过硬件标定的精准色彩空间。
  2. 第二优先级:扫描仪容器元数据与专有记录(Verified / Estimated)
    对于哈苏 Flextight / Imacon 扫描仪生成的 .fff 格式,引擎解析其 TIFF 头部嵌入的 XML 属性列表(plist),提取 RGBProfile 字符串与 Gamma 数值。若容器明确声明为 AdobeRGB 或广色域扫描仪配置,则直接应用对应的伽马解扩方程。若属性缺失,则回退为文档标准默认值(Gamma 1.8,标定为 estimated 置信度)。
  3. 第三优先级:RAW / LinearRaw 元数据与传感器标定参数
    对于相机 RAW 文件(如 CR2、NEF、ARW),引擎读取 LibRaw 解析的相机原生拜尔矩阵元数据与预设矩阵。对于经专业扫描仪输出或第三方软件合成的 DNG 文件,引擎检测其 SubIFD 标签;若检测到 PhotometricInterpretation = 34892 (LinearRaw) 且未压缩,则直接判定为相机原生线性透射数据。
  4. 第四优先级:已建档扫描仪机型默认参数
    当用户在软件中显式指定了扫描仪型号(如 Nikon Super Coolscan 9000 ED、Minolta Dimage Scan Elite 5400),且输入文件不含内嵌 ICC 时,引擎调取内置的机型基色与透射特性记录进行解析。
  5. 第五优先级:sRGB 兜底与预估标记
    若上述所有特征均未命中,系统将文件假定为标准 sRGB 空间,但在处理报告中打上 estimated 警告标记,提示用户在检查面板中关注色彩置信度。

输入域解析结果随帧永久记录于工程数据库的 PipelineProcessingReport::input_domain 结构体中,包含基色坐标、传递函数曲线、归一化电平及详细诊断日志。

# 片基采样三级优先级与质量门限法则

橙色片基的测定精度直接决定了负片反相的整体白平衡基准。传统经验软件往往简单抓取画面最亮像素作为片基,这种做法在遇到齿孔、高光溢出、灯板直射或大面积浅色背景时,会导致片基测量严重失真,进而引发整幅画面发灰或偏色。

NexFilm 建立了严格的三级片基采样优先级与质量门限过滤机制:

采样优先级 数据获取物理区域 判别与安全验证准则 适用场景与质量保证
第一级:窄带片基 位于 Film Area 几何边缘外部与片门边界之间的色罩窄带 采样点红绿蓝密度差需符合典型 C-41 色罩特征,且窄带密度不得比尾部更暗超过 0.05 D 翻拍包含未曝光透明胶片边沿的标准底片,精度极高
第二级:膜面低密度尾部 位于 Film Area 有效画幅内部的物理低密度极值采样(2%–5% 分位) 采样像素必须具备充分的空间聚类分布,且排除单点噪声与坏点 扫描仪裁切后未保留片边的散张底片
第三级:画面最亮分位降权 全幅画面的明度统计极值(降权估算) 仅在第一与第二级均失效时启用,并设置 0.20 D 内容平移上限抑制 严重剪裁或全景拼接的无片边特殊文件

在片基有效性校验中,film_base_band_agrees 函数执行单向严格不等式校验:片基是整张底片物理密度最低的透光区域,画幅内部成像区域不可能比真实片基更为透光。如果测得的片边窄带比膜面尾部更暗超过 0.05 D,系统判定片边受到了灯板漏光或暗房杂散光的污染,自动将片基候选退回至膜面低密度尾部。

重要

跨帧复制设置时,NexFilm 绝不生搬硬套源帧的片基密度绝对数值。通过 choose_pasted_film_base 机制,系统强制在目标帧自己的有效几何范围内重新执行测量。只有当目标帧完全无法检出有效片基时,才有限度引用源帧数值,并在界面中明确标注 inherited_film_base,彻底杜绝不同帧之间由于光照漂移引发的交叉偏色。

# 有界通道跨度响应:共享原点与宽色域拼接容错

在完成片基扣除后,整幅画面的净光学密度 Dnet=Draw−DbaseD_{\text{net}} = D_{\text{raw}} - D_{\text{base}} 处于理论原点对齐状态,此时片基在红、绿、蓝三个通道中的显示净密度均为零。

然而,在处理实际扫描素材时,尤其是多张 RAW 拼接合成的宽色域 TIFF 文件(如 Lightroom 合并全景图 _DSC7569-Pano.tif、_DSC7583-Pano.tif),上游合成算法常导致红通道的有效密度跨度急剧收缩,仅剩绿通道跨度的三分之一甚至四分之一。若强制三个通道共用完全相同的显示窗口跨度,红通道的高光将被严重压制在半程以下,导致整张照片呈现严重的蓝绿伪色或高光死黑。

早期解决方案尝试在显示端增加逐通道非线性响应曲线,但这种做法无条件篡改了正常底片的影调平衡。NexFilm 独创了有界通道跨度响应模型,在数学上实现了三大安全保证:

  1. 共享窗口原点:有片基时,channel_offsets 在三个通道上恒定为零。这意味着无论跨度如何调整,片基(密度 0)在三个通道中永远映射为完全相等的正片最大白点,绝对不引入底色偏色。
  2. 1.15× 死区保护:对于正常冲洗与正常翻拍的健康底片(三通道跨度比值在 1.00 至 1.15 之间),跨度增益调整处于死区内,完全不介入运算,三通道维持百分之百同构的窗口分配。
  3. 分级安全增益上限:通过 measure_content_channel_spans 测定各通道 2% 至 98% 密度的有效跨度。当失衡比超出 1.15 时,按线性斜坡平滑分配窗口宽度: gi=clamp(spaniluma(span),1gmax,gmax)g_i = \text{clamp}\left(\frac{\text{span}_i}{\text{luma}(\text{span})}, \frac{1}{g_{\text{max}}}, g_{\text{max}}\right) 常规素材的增益上限收紧为 gmax=1.35g_{\text{max}} = 1.35。仅当通道失衡比极端超过 2.0 时,系统才判定其为上游拼接截断通道,并将增益上限有限放宽至 3.0。

这种设计坚决摒弃了传统经验软件中破坏真实影调的“灰世界假设”(强行拉平画面 RGB 均值)。它保留了底片自身的冷暖氛围,同时让上游损坏的通道重新恢复完整的动态显示区间。

# 量化回归数据与真实素材对照验证

统一密度管线的可靠性建立在严格的工程回归测试集之上。以下数据摘自 NexFilm 自动化测试套件 density_pipeline_sample_report 在真实底片样本库上的逐像素量化测量结果。表中对比了旧版管线与统一密度管线在渲染后整幅画面的红/绿与蓝/绿通道均值比:

样本文件与物理介质 输入域解析结果 片基采样来源 旧版 R/G · B/G 统一管线 R/G · B/G 算法介入与量化改善说明
哈苏fff/任务 _1233.fff CameraNative / CameraRaw 膜面低密度尾部 0.583 · 1.001 0.963 · 1.086 相机 RAW 模式,彻底剔除逐通道额外响应,恢复通透自然的真实影调
哈苏fff/任务 _1343.fff CameraNative / CameraRaw 片边橙色窄带 0.980 · 0.970 0.991 · 0.969 画面约 45% 贴顶,死区生效,新旧管线零偏差一致
哈苏fff/无法反相.fff AdobeRgb1998 / Gamma2.0 画面最亮分位 0.894 · 1.037 0.806 · 1.046 容器记录驱动精准伽马线性化,成功抑制残留黄绿偏色
lr合并/_DSC7569-Pano.tif AdobeRgb1998 / Gamma2.2 片边橙色窄带 0.848 · 1.907 0.696 · 1.288 失衡比 3.35,有界跨度响应生效,红通道零值从 78.8% 大幅恢复至 9.3%
lr合并/_DSC7583-Pano.tif AdobeRgb1998 / Gamma2.2 片边橙色窄带 0.571 · 2.324 0.557 · 1.249 失衡比 4.26,红通道增益放宽补偿,天空白云与建筑回归中性基准
尼康扫描仪tiff/5.3-1.tif AdobeRgb1998 / ICC 片边橙色窄带 1.030 · 0.715 0.999 · 0.951 消除系统性红移,通道动态分布与参考印片完全吻合
精益黑白/raw0002.dng Srgb / Linear 膜面低密度尾部 1.001 · 1.018 0.944 · 1.139 扫描仪原生 LinearRaw DNG 识别,黑白影调过渡极其细腻平滑
尼康nef_raw/_DSC7333.NEF CameraNative / CameraRaw 片边橙色窄带 0.975 · 0.972 0.826 · 0.944 相机 RAW 直读,中性灰轴偏差严格控制在 4/65535 容差以内

测试数据表明,对于健康素材,统一管线输出与理论物理基线完全重合,逐像素差异为零;对于上游缺陷严重的拼接大图,有界跨度响应在不破坏片基中性轴的前提下,实现了显示动态的挽救。