管线在最前面加了一小步:读 RAW 里记的 CreativeStyle,定下这卷用的是哪套外观,
再决定后面走哪条解码路。读不到就退回原链,不卡住、不猜。
第 ⑥ 步那颗 33³ cube 的标定目标是「把我们这条链路的观感校到机内直出」,本质是
用一种平均色偏去逼近机内直出的补偿件。② 既然已经按真实外观出片,再套 cube 等于把它拉回去一次,
外观会被吃掉大半。所以外观生效时 ⑥ 自动跳过;要叠回来加 --keep-cube。
| 环节 | 动作 | 域 |
|---|---|---|
| 读 RAW | 降噪后的 DNG 按相机原生 RGB 解(output_color=raw) | 相机原生 |
| 白点对齐 | A2 写出的 LinearRaw DNG 白电平常比原片高几个百分点(本例 7%),按中位比归一 | 线性 |
| 矩阵 | ForwardMatrix1 → XYZ D50 | XYZ |
| 外观表 | LookTable(90×16×16,色相偏移/饱和乘数/明度乘数) | PCS ProPhoto |
| 曲线 | ToneCurve(128 点) | PCS ProPhoto |
| 输出 | → XYZ → sRGB → 编码 | sRGB |
顺序就是 DNG 1.4 规范里的顺序。表和曲线必须成对、必须在对的域里。
索尼把这套设置写在加密的 MakerNotes 段,普通 EXIF 解析器读不到。用 exiftool(已固定在
C:\imtools\bin\exiftool):
# 一条命令看这卷用的什么外观 C:\imtools\bin\exiftool\exiftool.exe -s3 -Model -CreativeStyle "DSC08655_1.ARW" ILCE-9M3 FL3
模块 C:\imtools\rad\looks.py 把返回值归一成规范码(ST/PT/NT/VV/VV2/FL/FL2/FL3/IN/SH/BW/SE),
再按「机型 + 外观」去 DCP 库找配置。找不到就说找不到并退回原链,不拿别的机型顶替。
扫了两版 DNG Converter 的全部 profile:
| 版本 | 索尼机型 | FL2/FL3 | 说明 |
|---|---|---|---|
| 17.3 | 78 | 一套都没有 | 连 A7 V / A7R VI / RX1R III 这些机型都还没收录 |
| 18.4 | 79 | 有 | 在 DSC-RX1RM3(RX1R III)和 ILME-FX2 里,各 11 套 |
A9 III 自己在 18.4 里也还是 9 套(到 BW 为止)——Adobe 没给固件升级拿到 FL2/FL3 的老机身补。 时间线也对得上:FL2/FL3 是 2025-10-30 A1 II / A9 III 4.00 固件才加的。
关键在索尼这套 Camera Matching profile 的结构。我把两边的 XML 逐项比过:
| 字段 | RX1R III vs A9 III | 含义 |
|---|---|---|
ForwardMatrix1/2 | 最大差 0 | 全机型同一个直通矩阵(ProPhoto → XYZ D50),所以外观表所在的 PCS 是共通的 |
ColorMatrix1/2 | 差 0.176 | 分机型,只用于白平衡推导;本管线走 ForwardMatrix,用不到,但仍替换成目标机型的 |
LookTable + ToneCurve | — | 这是外观本身,不带机型属性,可以直接搬 |
BaselineExposureOffset | −0.35 vs −0.25 | ❗这是机型级的,必须换成目标机型的值,照搬会整体差 0.1 EV |
所以移植不是「借用别的机型的色彩」,是「换机器外壳、留外观内核」:ColorMatrix 换 9M3 的、
EV 换 9M3 的 −0.25、型号串换掉,LookTable 与 ToneCurve 原样保留。
| 外观 | 来源 | 外观 | 来源 |
|---|---|---|---|
| ST 标准 | 9M3 原生 | FL2 胶片2 | RX1R III 移植 |
| PT 人像 | 9M3 原生 | FL3 胶片3 | RX1R III 移植 |
| NT 中性 | 9M3 原生 | IN 哑光 | 9M3 原生 |
| VV 鲜明 | 9M3 原生 | SH 柔和 | 9M3 原生 |
| VV2 鲜明2 | 9M3 原生 | BW 黑白 | 9M3 原生 |
| FL 胶片 | 9M3 原生 | 共 11 套,全在 C:\imtools\rad\looks\ILCE-9M3\ | |
同一个方法可以套到任何机型:A7M4 / A7C II / A7CR / A7R V / A6700 / A1 / A7S III 这些
机身菜单里没有 FL2/FL3 的(索尼按机型切,不是固件问题),只要拿到该机型的
ColorMatrix 和 BaselineExposureOffset,把 RX1R III 的外观内核搬过去就行。
工具在 C:\_fl23\port_dcp.py,改两个常量即可。
唯一可信的参照是机身自己:每张 ARW 里都嵌着相机按该外观渲染的全尺寸 JPEG,直接取出来比。 下面左边是机身直出,中间是上一版(拿 A7M4 的 FL 冒充),右边是现在(9M3 的 FL3)。
| 张 | 方向 | ΔE | 张 | 方向 | ΔE |
|---|---|---|---|---|---|
| DSC08420 | 竖 | 15.97 | DSC08681 | 竖 | 9.19 |
| DSC08555 | 竖 | 11.32 | DSC08777 | 横 | 8.14 |
| DSC08577 | 竖 | 11.78 | DSC08837 | 横 | 10.21 |
| DSC08655_1 | 横 | 10.72 | DSC08887 | 横 | 11.69 |
| DSC08670 | 竖 | 10.90 | DSC08901 | 竖 | 10.42 |
平均 11.0,最大 16.0。这个残差还有一块不在 DCP 里,见下一节。
这十张不只是「FL3 基底」,你在机身里还调过参数,十张完全一致:
| 参数 | 值 | 影响 |
|---|---|---|
| Saturation | High(+3) | 整体提饱和 |
| Highlights | −9 | 压高光 |
| Fade | +1 | 抬黑位、暗部去饱和 |
| Sharpness / Range | Soft / +3 | 机身锐化策略 |
| Contrast / Shadows / Clarity | 0 / 0 / 0 | 不动 |
DCP 描述的是外观基底,这组后期参数不在里面——所以渲染出来会比机身直出更「素」一点。
我试着用十张直出反标了一组亮度/饱和补偿曲线,能把平均 ΔE 从 15.2 压到 10.3,
但视觉上增益很小,而且容易被这十张的题材带偏,没有默认接进管线。
要 1:1 复刻机身那套参数,说一声,曲线已经标好存在 looks\ILCE-9M3\_style_FL3.json。
# 什么都不用多说:自动读外观、按外观出片 python C:\imtools\rad\pipeline.py "DSC08655_1.ARW" -o "C:\Users\setti\WorkBuddy\修圖\outbox" # 强制用某套外观(相机设错了 / 想换风格) python ... --look FL2 # 不用外观,走原来的链 python ... --look no # 外观 + 仍套第⑥步 cube python ... --keep-cube # 看本机 DCP 库有哪些 python C:\imtools\rad\looks.py list
C:\imtools\rad\pipeline.py(已加 ⓪-a 与 --look)C:\imtools\rad\looks.pyC:\imtools\rad\sony_look.pyC:\imtools\rad\looks\<机型>\<外观>.xml(9M3 已 11 套)C:\_fl23\port_dcp.pyC:\imtools\bin\exiftool\exiftool.exe