
如何用Spirula Studio做HDR与线性光训练色彩空间与色调映射完整配置攻略【免费下载链接】spirula-studioCross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA.项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studioSpirula Studio是一款跨厂商的 3D 高斯泼溅3D Gaussian Splatting训练工具支持从视频到 splat 再到 mesh 的完整流程并可选用 Vulkan 或 CUDA 后端。对于高动态范围HDR素材它的核心能力在于用色彩空间gamut、线性光存储linear light与色调映射曲线tone mapping三个独立开关让你既能在线性光下训练又能把结果精准落回照片观感。本文带你从零理解这些概念并给出可直接照抄的配置清单。一、3分钟看懂色彩空间拆成哪三个开关Spirula Studio 把颜色拆成两个独立的部分原色域primaries/gamut决定红绿蓝指什么传递函数transfer决定存储的数字和实际光的关系。后者又细分成两个旗标旗标回答的问题--image-color-gamut/--splat-color-gamut图像或 splat使用什么原色域--image-color-is-linear/--splat-color-is-linear缓冲区是否以线性光存储--image-color-transfer/--splat-color-transfer用什么色调映射曲线把它变成显示值gamut可选Rec.709、ACES2065-1、ACEScg、Rec.2020、AdobeRGB、DCI-P3色域转换矩阵定义在 src/core/ColorSpace.htransfer可选 5 条曲线srgb默认、srgb-clamped、aces、filmic、uncharted2填none表示未设置splat 侧未设置时会自动跟随图像侧保证渲染和照片对得上 核心思想is-linear描述缓冲区怎么存transfer描述曲线怎么出来——两者分开才能既用线性光训练、又精确复现照片。完整推导见官方笔记 docs/notes/color-transfer.md。二、HDR训练入门线性光 EXR 输入的最快配置如果你手头是相机 RAW 解码后的OpenEXR序列这是最理想的 HDR 输入EXR 天然是场景线性光。Spirula Studio 内置了一个零依赖的 EXR 解码器src/core/ExrImage.h、src/core/ExrImage.cpp解码时自动标记is_linear true并从文件头的chromaticities属性匹配色域细节见 docs/notes/exr.md。图像侧声明为非线性、splat 侧声明为线性训练就能在高动态范围下进行同时 loss 仍对标你的照片。直接用官方hdr预设一条命令搞定spirula train hdr dataset该预设在 src/config/TrainConfig.h 中定义关键项为splat 色域ACEScgis_linear true图像侧Rec.709is_linear false并从 EXIF 读取曝光做 PPISP 校正。为什么线性存储值得开线性光存储会激活优化器的sqrt DC 重参数化与颜色信任域OptimConfig::color_is_linear这是 HDR 训练下颜色更稳、更少过曝的底层原因。曲线与反解逻辑在 GPU 端的镜像实现见 src/shaders/pixel_wise.slangworking_to_display主机端镜像为tone_encode/tone_decode。⚠️注意hdr预设刻意保持srgb传递曲线——它的目标是线性光训练 复现输入图像换带肩的曲线反而会破坏复现。三、色调映射曲线怎么选5种曲线对比清单带肩曲线shouldered curve能让同一张接近全白的照片对应到更亮的场景线性值从而保住高光细节传递曲线显示 0.99 对应场景线性值说明srgb0.977单调无界精确匹配照片默认aces4.29Narkowicz ACES 拟合电影级中间调filmic11.2封顶Hejl/Burgess-Dawsongamma 已内置uncharted210.1Hable 曲线白点在 11.2约3.5 档高光余量选曲线三条经验法则素材就是普通照片→ 保持srgb别动它。️想保留超亮的 HDR 高光→ splat 侧上uncharted2或aces让 splat 能存住超出 [0,1] 的光。模型必须用训练时的曲线查看这些曲线同时重标定了所有中间调查看器选错曲线会出现肉眼可见的曝光错误而不是细微色差。GUI 视口和 Web 查看器viewer/都提供了同一份曲线列表 线性光开关。别和--overexposure-reg对抗。该正则惩罚 [0,1] 之外的值恰好和带肩曲线的目的相反它默认为 0保持默认即可meshing预设会设为 10 并停留在srgb请勿混改。如上图GUI 的参数面板中PPISP color correction等开关旁就是色彩空间三件套的落位处——图像侧与 splat 侧可以分别声明互不干扰。四、常见坑与排查你的EXR文件可能在撒谎️ 显示编码的 EXR有文件虽以.exr结尾但像素其实是 γ≈2.2 的显示编码值且全图最大值恰好是 1.0——这就是撒谎的指纹。此时用三态旗标--image-color-is-linear falseauto/true/false强制按显示编码读取即可。 种子点云颜色点云有自己的一套--point-color-*未设置时跟随图像侧与 splat 侧不同时src/app/TrainerCore.cpp 的PointToSplat会把每个种子颜色转到显示值再转回来。️ 夜拍背景发雾开启--background-mode noise--background-match-luminance让噪声背景按每张照片的平均亮度对齐避免夜间素材被中灰背景糊住。 裁剪与曝光EXR 的 data window 小于 display window 时周围补零以对齐内参大帧训练建议保持默认--cache-images disk。五、配置速查清单与相关文件场景推荐组合普通照片复现全部默认sRGB / 非线性 / srgbEXR 线性光 HDR 训练spirula train hdrACEScg linear splat高光余量最大化splat 侧--splat-color-transfer uncharted2电影级中间调splat 侧--splat-color-transfer aces网格化输出meshing预设保持 srgb 过曝正则 10 关键文件索引色彩数学与 5 条色调映射曲线src/core/ColorSpace.hGPU 端曲线实现src/shaders/pixel_wise.slanghdr/meshing等预设定义src/config/TrainConfig.h色彩空间引擎接入src/engine/EngineColorSpace.cpp色彩传递与 tone 映射设计笔记docs/notes/color-transfer.mdEXR 读取与色域判定docs/notes/exr.md内置 EXR 解码器src/core/ExrImage.cppWeb 查看器含曲线切换viewer/按这份攻略你只需要回答三个问题——图像是什么色域缓冲区是不是线性光输出走哪条曲线——剩下的事Spirula Studio 会替你自动对齐。【免费下载链接】spirula-studioCross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA.项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考