创意外观接进修图主链

RAW 一进来先读它用的是哪个外观,再按那个外观在解码阶段出片  |  2026-10-18
先纠正我自己的两处误判。
① 1017 那十张片子,我原先当作「A7M4 的 ST 标准」在做参照,实际读出来是 ILCE-9M3 + FL3,十张全是。所以之前「FL 天生黄绿」「FL 是冷青阴影」那些结论, 基准就搭错了——我拿 A7M4 的 ST 去对 A9 III 的 FL3 直出,差的那些明度不是外观的性格。
② 那十张里有 6 张是竖拍。我比色差时把 RAW(已按机内方向摆正)和内嵌 JPEG(原始像素排列) 直接拉伸对齐,等于拿两张错位 90° 的图比,dE 全在 28–37。这个数字是假的。

一、新流程:先认外观,再出片

管线在最前面加了一小步:读 RAW 里记的 CreativeStyle,定下这卷用的是哪套外观, 再决定后面走哪条解码路。读不到就退回原链,不卡住、不猜。

⓪-a 读外观exiftool 读 CreativeStyle→ ⓪ 人脸探针定 Soft/Normal→ ① 降噪A2 RAW 域→ ② DCP 解码外观在这一步生效→ ③ 超分 ×4→ ④ 缩回→ ⑤ 通道偏差→ ⑥ cube外观模式下跳过→ ⑦ 出片→ ⑧ 美肤
外观只在 ② 这一步注入,其余环节一个没动。整链 3 分 08 秒,交付还是那两件。

为什么 ⑥ 要跳过

第 ⑥ 步那颗 33³ cube 的标定目标是「把我们这条链路的观感校到机内直出」,本质是 用一种平均色偏去逼近机内直出的补偿件。② 既然已经按真实外观出片,再套 cube 等于把它拉回去一次, 外观会被吃掉大半。所以外观生效时 ⑥ 自动跳过;要叠回来加 --keep-cube。

② 这一步的实际动作

环节动作域
读 RAW降噪后的 DNG 按相机原生 RGB 解(output_color=raw)相机原生
白点对齐A2 写出的 LinearRaw DNG 白电平常比原片高几个百分点(本例 7%),按中位比归一线性
矩阵ForwardMatrix1 → XYZ D50XYZ
外观表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 库找配置。找不到就说找不到并退回原链,不拿别的机型顶替。

三、FL2 和 FL3 怎么解决

结论:能解决,已经拿到并把它们装到你的 A9 III 上了。

先看 Adobe 那边到底有没有

扫了两版 DNG Converter 的全部 profile:

版本索尼机型FL2/FL3说明
17.378一套都没有连 A7 V / A7R VI / RX1R III 这些机型都还没收录
18.479有在 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 固件才加的。

怎么把 RX1R III 的 FL2/FL3 装到 A9 III 上

关键在索尼这套 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 原样保留。

A9 III 现在的外观库

外观来源外观来源
ST 标准9M3 原生FL2 胶片2RX1R III 移植
PT 人像9M3 原生FL3 胶片3RX1R III 移植
NT 中性9M3 原生IN 哑光9M3 原生
VV 鲜明9M3 原生SH 柔和9M3 原生
VV2 鲜明29M3 原生BW 黑白9M3 原生
FL 胶片9M3 原生共 11 套,全在 C:\imtools\rad\looks\ILCE-9M3\

如果你的机子不是 A9 III

同一个方法可以套到任何机型: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)。

人像三栏对比
DSC08655_1 · 左:机身直出 FL3 / 中:上一版(7M4 的 FL)/ 右:现在(9M3 的 FL3)
场景三栏对比
DSC08777 · 同一顺序。右栏与左栏是一路的,中栏是上一版。

十张的色差(ΔE,两边都模糊 3px 以排除机身锐化)

张方向ΔE张方向ΔE
DSC08420竖15.97DSC08681竖9.19
DSC08555竖11.32DSC08777横8.14
DSC08577竖11.78DSC08837横10.21
DSC08655_1横10.72DSC08887横11.69
DSC08670竖10.90DSC08901竖10.42

平均 11.0,最大 16.0。这个残差还有一块不在 DCP 里,见下一节。

残差从哪来:机内参数不在 DCP 里

这十张不只是「FL3 基底」,你在机身里还调过参数,十张完全一致:

参数值影响
SaturationHigh(+3)整体提饱和
Highlights−9压高光
Fade+1抬黑位、暗部去饱和
Sharpness / RangeSoft / +3机身锐化策略
Contrast / Shadows / Clarity0 / 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.py
DCP 渲染
C:\imtools\rad\sony_look.py
DCP 库
C:\imtools\rad\looks\<机型>\<外观>.xml(9M3 已 11 套)
移植工具
C:\_fl23\port_dcp.py
exiftool
C:\imtools\bin\exiftool\exiftool.exe
创意外观 · RAW 解码阶段出片 · 2026-10-18