记录于 2026 年 7 月。我既不是色彩科学专家,也没有相机厂商的内部资料——仅是一名业余爱好者。文中的公式源自 Panasonic 公开的技术文档,数值则来自我手中的 LUMIX S9 及本次实拍样本。文中既有相对扎实的结论,也有尚待更多机型与严格实验验证的推论。我会尽量将二者剥离,避免将“看似合理”的猜测包装成定论。
- 在 S9 上,若使用以 V-Log 为基底(Base)的 Real Time LUT,照片模式的最低 ISO 会被限制在 640;若将创意 LUT 的输入基底重映射至 Standard/sRGB,同样的直出风格便可从 ISO 100 起步。
- 与其用黑箱拟合去“猜” Standard 的映射,不如利用 Panasonic 公开的 V-Log OETF 与 V-Gamut 矩阵,搭建一条解析转换管线——不仅可解释,且完全可复现。
- RAW 实测表明:在同曝光、同标定 ISO 640 下,Standard 的 RAW 码值约为 V-Log 的 6.08 倍(约 2.60 EV)。这意味着跨 Photo Style 的 ISO 数值无法直接横向比较。
- 这并非“白赚”动态范围:用约 5 倍的进光量换取更纯净的中间调与暗部,代价是牺牲同等的高光余量。
本次探索最终孵化为一个开源项目:t0saki/lumix-lut-converter。它基于 Python、uv、numpy.float64 及四面体插值实现,核心目标并非“破解松下色彩”,而是将已公开、可解释的技术细节封装成可复现的工具。
这个想法萌生时,恰逢 GPT-5.6 发布。于是我顺带将其作为对新模型的一场实测:代码与文章初稿由 GPT-5.6 Sol 担纲,经由我与 Fable 5 深度修订,最后交由 Gemini 3.1 Pro 润色。
一切从 ISO 640 开始
LUMIX 的 Real Time LUT 功能极具可玩性:将 .cube 或 .vlt 导入相机,按下快门即可直出带有滤镜风格的 JPEG。但痛点在于,许多现成的 LUT 均以 V-Log / V-Gamut 为输入色彩空间;而当 LUT 的基础色彩风格(Base Photo Style)设为 V-Log 时,S9 照片模式的最低 ISO 会被锁定在 640,而 Standard 模式却能从 ISO 100 起跳(见 S9 Complete Guide 的 ISO 说明)。
对于视频流而言,V-Log 的这套工作逻辑顺理成章;但我主要想用 Real Time LUT 拍摄照片。在室内、慢门或大光圈场景下,最低 ISO 640 的影响远不止是菜单数字不好看:为了维持相同的直出亮度,V-Log 工作流往往迫使我们缩短快门时间,导致传感器接收的光量减少。这确实为高光区域保留了余量,却不可避免地牺牲了中间调与暗部 RAW 数据的信噪比。
于是,最初的诉求非常朴素:
能否将一张以 V-Log 为输入的创意 LUT,转换为以 Standard 为输入的 LUT,从而让相机在 ISO 100 的设定下,获得尽可能贴近原版的直出效果?
起初,我还期盼能实现“无损转换”,但随后便将预期调整为“视觉效果趋同”。更严谨的表述应该是:对 LUT 的输入基底进行重映射(base remapping)。我们固然能高精度地合成已知的色彩变换,但那些已经发生的数值裁切、色域压缩,以及相机内部未公开的色调映射(tone mapping),是绝不可能仅凭另一张 LUT 就能凭空找回的。
第一阶段:从官方 Like709 LUT 反推
最先进入视野的参照物是 Panasonic 官方的 VLog_to_V709_forV35 LUT,它定义了一条从 V-Log/V-Gamut 到 V709 的标准技术映射。我们将其记作 ,原创意 LUT 记作 。直觉上,我们可以先通过数值计算求出逆变换 ,然后再合成一张以 Like709 为输入的新 LUT:
借此,我让 GPT-5.6 Sol 编写了基于 KD-tree 的初值搜索、有界阻尼 Gauss–Newton 优化、四面体插值以及 Rec.709/CIELAB 的误差校验算法。从数值计算的角度看,这条路径确实行得通:在首轮实拍测试中,原生 V-Log LUT 与逆向推演的 Like709 版本在观感上已经十分接近。

图 1:参数均为 ISO 640、1/30 s、f/2.8。左图为 V-Log + 原创意 LUT,中图为 Like709 + 数值逆向 LUT,右图为 Standard 参考。三张样片均使用了自动白平衡,因此仅供视觉参考,不可作为严格比对色差的凭据。
这一步验证了“将技术变换预先合成进创意 LUT”在工程上的可行性,但也暴露出诸多隐患:
- Like709 Photo Style 并不等同于 Standard,而我真正想要的是 Standard 那覆盖至 ISO 100 的工作范围;
- 官方 V709 LUT 在 legal/full range(视频/全色阶)的解释上存在歧义;
- 在 3D LUT 中,一旦发生数值裁切或多对一映射,其逆函数便不再具备全局唯一性;
- 退一步说,即便数值反演再精准,也无法断言相机内部的 Like709 映射与这张 VariCam 技术 LUT 存在严格的一致性。
基于上述考量,Like709 方案最终仅被保留作为交叉验证工具,而并未成为推荐解法。
第二阶段:Standard 没公开,那就把它”拍出来”
接下来是一个更为繁琐却直观的方案:在屏幕上显示海量已知色块,分别使用 V-Log、Like709 和 Standard 拍摄,然后通过机器学习算法,从 JPEG 中提取出 Standard → V-Log 的经验映射。
这条路起初走得并不顺畅。第一组照片使用了自动白平衡,而白平衡策略会随屏幕内容发生偏移——如果直接拿着这些数据去拟合,模型学到的将不仅是 Photo Style 之间的差异,还混入了相机对每张照片动态评估的白平衡决策。同理,若为了“避免 JPEG 高光溢出”而对每张图单独微调曝光,曝光差也会被一并写入模型。
为了让实验更加严谨,我通过 GPT-5.6 Sol 用 Python 生成了一套 4K SDR 校准图卡,涵盖:
- 多档灰阶与单通道阶梯;
- RGB/CMY 渐变坡度(ramp);
- 规则排列的 9×9×9 RGB 立方体阵列;
- 若干张纯粹用于视觉验证(不参与训练)的自然风景图;
- 分布于四角的机器可读定位标识,用以实现自动透视校正与色块精准采样。
过程中也穿插了一些技术折腾的小插曲:比如浏览器直接打开本地 viewer.html 会触发 file: 协议的安全源限制,页面左上角的说明文字又遮挡了定位框。逐一解决掉本地服务和版面冲突后,第二组拍摄全程固定在 5500 K 色温并采用手动对焦;针对同一张色卡,三种 Photo Style 均保持一致曝光,仅在切换不同色卡页时视需微调。

图 2:程序识别到四个角标后计算透视变换矩阵,再根据 manifest 文件中的坐标精准采样色块。第二组 39 张图卡全部定位成功,共提取出 3,552 个有效配对样本。
经验拟合的结果出乎意料地好:在未裁切的样本上,训练集的平均最大通道误差约为 ,P95 为 ;独立灰阶验证集的平均误差约为 ,P95 为 。
但这也为我上了一堂极为深刻的课:低拟合误差绝不等于模型学到了正确的色彩科学。 它很可能只是精准地“背下”了这台特定相机、这块 QD-OLED 屏幕、5500 K 白平衡、当时的绝对曝光量、JPEG 的色调曲线(tone curve)以及两个 Photo Style 之间固定的增益差。
换言之,这个经验模型非常适合用来探究“这台相机在当下究竟做了什么”,但若将其奉为跨场景、跨机型通用的 Standard 逆向转换核心,显然是不够格的。
转折点:别急着拟合,Panasonic 早就公开了关键公式
正当研究陷入瓶颈时,@Jackchou00 提醒了我:Panasonic 其实早就公开了 V-Log 的编码函数(encoding function)以及 V-Gamut 的详细定义。与其继续将所有变量塞进黑箱中拟合,不如先利用公开资料建立标准解析的色彩空间变换(CST)。实拍数据应当被用来验证未公开的残差,而非代替现成的数学公式。
这番话彻底扭转了项目的演进方向,也是整个探索过程中最具决定性的一次纠偏。
查阅 Panasonic 的 V-Log / V-Gamut Reference Manual 可知,V-Log OETF 明确定义了从线性光 到 V-Log 编码值 的映射关系:
该文档同时公示了 V-Gamut 的原色坐标、D65 白点,以及 V-Gamut 与线性 BT.709 之间的转换矩阵。这意味着,我们无需再凭直觉去“捏一条类似 V-Log 的灰阶曲线”,而是可以有理有据地按步推演:
- 将 Standard/sRGB 的数字码值,通过 sRGB EOTF 解码为线性 BT.709 RGB;
- 利用官方矩阵,将线性 BT.709 转换至 V-Gamut 色彩空间;
- 套用 Panasonic 的 V-Log OETF,计算得出最终的 V-Log 编码值;
- 将该数值作为输入,送入原有的 V-Log 创意 LUT。

图 3:项目最终采纳的解析基底重映射管线。前三个步骤构成技术适配器 ,随后与原创意 LUT 融合,烘焙为一张全新的 33 点机内 LUT:。
此处之所以选用 sRGB 而非 Adobe RGB 作为基底,并非因为 Adobe RGB 存在缺陷,而是因为在当前语境下 sRGB 具备更高的验证确定性:sRGB 与 BT.709 共享原色与 D65 白点,这使得 Panasonic 的官方矩阵能够无缝接入;同时,LUMIX Lab 移动端、相机直出 JPEG、各操作系统预览以及网络分发平台,对 sRGB 的支持度也最为统一。
sRGB 与 BT.709 虽原色坐标一致,却并不等同于传递函数相同。 在进行矩阵运算前,必须先调用 sRGB EOTF 将码值解码为线性光,切不可将 sRGB 码值直接当作线性光来粗暴相乘。
需要澄清的是,我并未武断地假设“Panasonic 的 Standard 模式等价于标准 sRGB 曲线”。实际上,Standard 内部的色调曲线、色域映射策略及 LUT 植入的具体节点,官方从未完整披露;这里的 sRGB,仅仅是对 LUT 输入层级及最终 JPEG 渲染链路而言,逻辑最为明确、兼容性最佳的工程基底模型。
ISO 640 到底发生了什么:RAW 给出了有意思的答案
Jackchou00 还提出了另一个极具验证价值的观点:V-Log 的 ISO 640,可能与普通 Photo Style 的 ISO 100 处于相近的实际模拟增益水平。
为了验证这一点,我拍摄了一组光圈、快门及标称 ISO 绝对一致的 RAW 数据:在 f/2.8、1/30 s、ISO 640 的恒定参数下,仅来回切换 V-Log 与 Standard 模式。扣除 RAW 的黑电平(128)并避开高光裁切区后,Standard 与 V-Log 在线性码值上的比对结果如下:

图 4:四个 Bayer 通道的斜率均稳定在约 6.08 倍左右,整体拟合斜率为 6.0848,折算约 2.60 EV。需注意,这仅仅是针对 RAW 码值响应幅度的比对,不应被孤立地解读为对底层模拟增益电路的完整剖析。
这个结果至少印证了一点:ISO 数值不能脱离 Photo Style 进行跨频道比较。 菜单里同样标着 ISO 640,并不意味着 V-Log 与 Standard 拥有一致的 RAW 码值标度。反过来看,V-Log 在 ISO 640 下的 RAW 响应,大致落在 Standard ISO 100~105 的量级区间——这也侧面解释了,为何不能将“V-Log 最低 640”简单理解为:在普通 Photo Style 的基础上生硬地拉高了 档的模拟增益。
但对于我的实际拍摄诉求而言,另一个视角同样关键:当按相近的最终直出亮度进行曝光考量时,V-Log 版本的参数是 ISO 640、1/25 s;而基于 Standard 解析 LUT 的版本则是 ISO 100、1/5 s(光圈同为 f/2.8)。这意味着,Standard 版本允许传感器接收了约 5 倍的进光量。
这正是我最初耿耿于怀的症结所在:并非“V-Log 曲线拥有改变光子数量的魔法”,而是在这套围绕实际曝光展开的工作流中,V-Log 固有的 ISO/Photo Style 映射机制,迫使相机使用更少的入射光去兑现相近的最终亮度;一旦切换回 Standard ISO 100,我便夺回了属于快门的曝光时长。
在以光子散粒噪声主导的场景下,5 倍的光通量所带来的信噪比增益大致为:
如果在某种极限工况下达到了 6.4 倍光量差距,理论信噪比提升则为 (约 8.1 dB、1.34 档)。当然,极暗部的噪点表现还会受到读出噪声、黑电平校准及机内降噪算法的复合影响,实际收益并不会在所有像素层面上完美契合平方根法则。
这是不是”白赚动态范围”?当然不是
Standard ISO 100 赋予了我在此种直出亮度下延长曝光时间的自由。这对提升 RAW 的中间调与暗部画质大有裨益,但它并未施展魔法凭空拓展传感器的物理动态范围。其代价是明确守恒的:
- 更高的进光量:带来了更优异的中间调与暗部 RAW 信噪比,后期暗部提亮更加纯净;
- 压缩的高光余量:5 倍的曝光时长,等价于舍弃了约 EV 的传感器高光容忍度;
- 总动态范围并未突破物理极限:我仅仅是做了一次取舍,将有限的 RAW 容积从高光侧腾挪给了中间调与暗部;
- 是否值得取决于具体场景:受控的室内打光、夜景暗光及低反差场景往往能从中获益丰厚;而在面对烈日当空、窗边强背光及舞台高光直射时,则必须谨慎评估,优先保护高光层次。
因此,更严谨的描述不应是“Standard 转换让 RAW 动态范围暴增”,而是:
这套方案让我摆脱了 V-Log Base 最低 ISO 640 的束缚及其连带的曝光惯性。我得以根据具体场景自由拿捏曝光宽容度,用出让高光余量的代价,换取更扎实的中间调、更纯净的暗部信噪比以及更充裕的 RAW 后期空间。
Real Time LUT 是在 8-bit JPEG 上再套一层吗?
在前期的探讨中,GPT-5.6 Sol 曾一度将 Standard 管线描述为“已经损失了大半数据”——这个论断显然言过其实,后来它自身也修正了这一说法。
Panasonic 在关于 Real Time LUT 的官方白皮书中明确指出,该功能属于拍摄/录制期间直接生效的机内底层处理,绝非“先存出一张 8-bit 成品 JPEG,再重新调取文件强行套 LUT”。S9 官方手册也载明,RAW 文件保存的是未经处理的 12-bit 源数据,LUT 风格并不会被烧录进 RAW 本体,仅作用于 JPEG、屏幕预览/缩略图以及后续用户主动触发的机内 RAW 处理环节。参考依据:
- Panasonic:Using Real Time LUTs
- S9 Complete Guide:RAW 为 12-bit 未处理数据
- S9 Complete Guide:拍摄 RAW 时 LUT 不写入 RAW
因此,更合理的推断是:Real Time LUT 嵌入在相机内部的图像处理管线之中,作用于最终输出 JPEG/HEIF 之前的某个环节——这足以推翻“先存出 8-bit 废片再套 LUT”的劣质工作流假说。但由于 Panasonic 至今未公布 S9 内部 LUT 运算的具体位深、确切顺位及各项数学微调,我无法将“内部算力绝对达到某个特定 bit 精度”作为不可置疑的官方定论写进文章。
不可否认,高精度的内部计算并不意味所有色彩变换均可完美逆向:一旦 Standard 的色调曲线或色域映射将多个不同的输入值挤压至同一个输出值,即便中间环节全程采用高精度浮点运算,丢失的数据层级也无力回天。但好消息是,后续的实拍验证表明:在常规的中间调与常规色彩空间内,其造成的衰损远没有“损失大半数据”那般危言耸听。
最终实拍:解析 CST 版本有多接近?
将官方公式串联为技术适配器后,我将其与一张偏向 Fuji Classic Negative 风格的 V-Log LUT 进行合成,烘焙出一张 33 点的 Standard/sRGB .cube 文件,最终将其导入 S9 展开实拍检验。

图 5:左图为 V-Log + 原 LUT(ISO 640、1/25 s),右图为 Standard/sRGB + 解析 CST LUT(ISO 100、1/5 s),均为 f/2.8、自动白平衡(AWB)。右图实际获得了约 5 倍曝光。需说明的是,这并非严格的实验室对照组:快门时差、AWB、AF 焦点及 IBIS 抖动均可能引入微小变量。因此,此组对比更侧重于检验宏观色彩观感,而非论证绝对意义上的色差值。
就视觉观感而言,两者的整体色彩关系已高度趋同。若直接对 JPEG 进行逐像素比对,最大通道差的平均值约为 ,Standard 版本的中位亮度约偏暗 0.229 EV;若通过一条全局单调的色调曲线将整体亮度拉齐,平均最大通道残差可骤降至 ,P95 为 ,P99 为 ,RGB 有符号残差的中位数则收敛至 左右。
对我而言,这组结果最核心的意义并不在于“两个文件严丝合缝”——它们理应存在差异——而在于:残余的差别主要源自曝光量以及 Standard/V-Log 迥异的色调渲染(tone rendering),而非某种系统性的、不可挽回的巨大色偏。作为一套旨在服务于照片直出 LUT 的基底重映射逻辑,它已经正式蹚过了“理论设想”的阶段,跨入到了切实可用的工程领域。
33 点 LUT 的数值精度够吗?
整个项目的底层计算均采用 numpy.float64 双精度浮点数,最终则是为了兼顾 S9 机身与 LUMIX Lab 软件的兼容性,选择输出 33 点的 .cube 格式。为验证精度,我随机生成了 20 万个 RGB 样本,用于对比 33 点网格适配器与未抽样解析公式的误差。其 12-bit 最大通道码值误差分布如下:
| 指标 | 误差(12-bit code value) |
|---|---|
| 平均 | 0.228 |
| P95 | 0.586 |
| P99 | 1.264 |
| 最大 | 3.636 |
中性灰轴线上,三个通道的最大偏差离散度仅约 。这充分表明,33 点网格对于承载这条平滑的技术变换曲线而言已然绰绰有余。当然,这并不能倒推相机的最终 JPEG 输出也仅存在如此微弱的公差——毕竟,未公开的 Standard 调色干预、白平衡策略及环境曝光依然游离在模型掌控之外。
在实机格式兼容性测试中发现,S9 目前最高仅支持导入 33 点的 .cube/.vlt,一旦推高至 65 点便会被系统拒收;而 LUMIX Lab 设定的稳妥兼容边界同样是 33 点 .cube。因此,盲目追求输出 65 点网格并不能让机内运算变得更“科学”。
我现在的实际工作流
一旦确认手头的原创意 LUT 是以 V-Log/V-Gamut 作为输入基底,我目前的标准作业流程如下:
- 运用解析 CST 工具,将其转换为基于 Standard/sRGB 架构的 33 点 LUT;
- 相机内设定为 Standard 基础风格、JPEG 输出设为 sRGB,从而解锁 Standard 正常的 ISO 调节范围;
- 日常挂机采用 RAW+JPEG 格式:JPEG 负责承载风格化直出,RAW 负责兜底未经 LUT 污染的原始宽容度;
- 视场景高光动态决定整体曝光策略,切勿将“能够开启 ISO 100”扭曲为“逢景必向右极限曝光”;
- 若需进行严谨的跨界对比,务必上三脚架,锁定手动白平衡、手动对焦并恒定光源,同时详实记录所有的动态优化参数与 Photo Style 微调数值。
项目配备的转换指令非常极简:
git clone https://github.com/t0saki/lumix-lut-converter.git
cd lumix-lut-converter
uv sync
uv run lumix-lut-converter convert-cst \
--source /path/to/source-luts \
--output /path/to/output-standard-srgb
输出的成品 LUT 将会自动烙印上标准参数:
#LUMIXPHOTOSTYLE STD
系统会同步生成技术适配器文件及 manifest.json,方便日后回溯查验输入源、预设参数、输出网格参数以及核心的文件校验信息。
到目前为止,我认为可以确定什么
历经这番折腾,我目前对以下结论抱有较高把握:
- V-Log Base 锁定的最低 ISO 640 与 Standard 的 ISO 100 构成了真实的照片工作流差异,绝不能将其视作无关痛痒的菜单数字游戏。
- 跨 Photo Style 比较 ISO 时,标称数值并不等价于相同的 RAW 底层响应;在我的 S9 测试中,同曝光、同标定 ISO 640 时,Standard 的 RAW 码值约为 V-Log 的 6.08 倍。
- 将 V-Log 创意 LUT 转换为 Standard/sRGB Base 后,在获取相近直出亮度的前提下,往往能争取到更多的绝对曝光时间,从而切实改善 RAW 的中间调及暗部信噪比;代价则是等量地让渡高光余量。
- Panasonic 公示的 V-Log OETF 与 V-Gamut 矩阵体系,足以支撑起一套可解释、可回溯的解析适配器模型。完全没有必要将“主观黑箱拟合 Standard”作为首选破局点。
- Real Time LUT 是深嵌于机内处理管线的一环,绝非事后在生成的 8-bit JPEG 上进行二次套色;RAW 原片亦不会被烧录入 LUT 风格。
- 试图宣称“转换后与原 V-Log 工作流实现了严格无损等价”在现阶段仍是伪命题。由于 Standard 内部的色调曲线、色域映射策略及 LUT 植入层级等关键细节依然保密,任何不可逆的色阶裁切都注定了绝对等价的不成立。
尚待探索的盲区
当然,这项探索仍遗留了诸多未解之谜:
- S9 在应用 LUT 前后的 Standard Photo Style,其精确的色调曲线与色域映射(gamut mapping)逻辑究竟为何?
- Real Time LUT 在 S9 内部芯片中的确切运算位深及完整顺位链路是怎样的?
- 不同的 LUMIX 机型、固件大版本之间,乃至细微的 Photo Style 参数异动,是否会导致残差模型发生根本性偏移?
- 在遭遇极端高光溢出、深邃暗部死黑、复杂肤色还原及高饱和度撞色时,这套体系的最坏误差极值是多少?
- 在绝对严苛控制白平衡、曝光量、合焦点及环境光强的无尘室环境下,V-Log ISO 640 与 Standard ISO 100 之间最精确的光电转换响应比值究竟是多少?
若未来有机会补充实验,我会将重心放在针对严苛灰阶、棘手肤色、极限高饱和物体及高光滚降过渡的标定拍摄上,而非再去死磕一整套庞杂的 3D 屏幕色卡。解析公式已经扫平了“已知部分”的障碍,接下来的靶场,应当直指那些“模型无法消解的异数”。
最后的感想
这次探索最趣味盎然之处,在于核心议题在不断地“改头换面”。
起初,我以为自己要做的是“V-Log LUT 无损转 Standard”;随后演变为“反演 Like709”;接着又变成了“实拍屏幕色卡拟合 Panasonic Standard”。直至有人点醒我,让我重拾官方的 encoding function 与 gamut 定义,我方才如梦初醒:真正破局的关键,并非妄图用海量数据暴力拟合一切,而是静下心来,将庞杂的系统剥离为已知的色彩科学变换、相机隐秘的处理黑箱,以及曝光/ISO 真实的物理行径这三大模块。
我依然算不上色彩科学领域的专家,但这并不妨碍一个业余爱好者凭借公开的文献资料、开源的可复现代码及严谨的受控实拍,将悬而未决的疑团一步步压缩。过程中真正闪光的,并非每一脚都完美踩在终点线上,而是敢于坦诚哪些测试走偏了、哪些断言下得太过武断、哪些显式的偏差其实仅仅源于白平衡和曝光控制的失准——并将这一连串试错与修正的足迹,毫无保留地记录下来。
在此,要特别鸣谢 @Jackchou00 的精准引航:正是他一针见血地指出,应当优先调取 Panasonic 已公开的 V-Log encoding function 与 V-Gamut 来构筑底层 CST 架构;同时提示我深入 RAW 层面去窥探 V-Log ISO 640 与普通 Photo Style 极低 ISO 之间的真实物理关联。这两个极具前瞻性的论断,硬生生地将项目从深陷泥潭的黑箱拟合中拔出,拽入了一条更为干练、更具可解释性的光明大道。
若这篇略显繁杂的笔记能为其他 LUMIX 玩家提供些许启示,我更希望它传递的并非“瞧,这儿有个包治百病的万能 LUT 转换黑魔法”,而是一条更为质朴的底层逻辑:在上手折腾前,先厘清 LUT 究竟在向输入端索要什么,再去推敲它该被安置在哪条色彩管线中;在轻信那些花里胡哨的误差跑分之前,先确保你切实掌控了手里的曝光和白平衡。