为什么NegPy不简单反相胶片负片?暗房级HD曲线与ISO-R分级流水线深度解析
【免费下载链接】NegPyTool for processing film negatives.项目地址https://gitcode.com/gh_mirrors/ne/NegPy点击查看免费下载NegPy 是一款专为胶片负片扫描打造的暗房级处理工具Tool for processing film negatives。为什么它不直接一键反相而是引入 HD 曲线与 ISO-R 分级流水线因为负片记录的是对数密度而非线性明暗简单取反只会得到一张反过来的负片——发灰、发闷、层次尽失。本文带你深度解析这套负片处理的核心算法与完整流水线。为什么简单反相会毁掉负片细节很多新手以为负片 照片的镜像取反像素就好。但扫描仪读到的其实是一组光透过率NegPy 直接在线性 RGBoutput_colorraw、gamma1、统一白平衡上工作随后做对数转换密度是日志值胶片密度 $D \log_{10}(\text{参考透过率} / \text{实际透过率})$负片的高光和阴影在胶片上是被压缩过的直接反相无法还原这段压缩。橙色蒙版不是全局色偏彩色负片每个通道的橙蒙版浓度不同。NegPy 对每个通道独立做百分位定界0.01%–99.99% 窗口并拉伸到 [0,1]让橙色蒙版和片基色被各自中和掉而不是用一张白卡颜色去猜。打印需要曲线暗房里放大机下的相纸天然带 toe趾部、直线段、shoulder肩部三段特性。NegPy 把这条曲线完整搬进了算法反相只是打印的第一步。一句话NegPy 不是在反相而是在模拟一次暗房放大详见 docs/PIPELINE.md 的 The Print 一节。暗房级HD曲线在密度空间里打印照片️ 这是整个引擎的心脏。归一化后的信号进入密度空间经过一条非对称 toe-linear-shoulder 特性曲线中间是一段斜率为 $k$ 的直线由 ISO-R 分级决定toe阴影端软着陆到纸黑 $D_{max} 2.3$shoulder高光端软着陆到纸白 $D_{min} 0.06$Paper White Base 可关闭退回 0两端都是softplus 软拐点用toe_sharpness_base/shoulder_sharpness_base控制膝盖锐度而非硬截断——所以拉伸到界外的调子会被曲线卷回来而不是直接死黑死白。曲线核心计算CPU 引擎CPU/GPU/图表共用同一数据源v1 d_min_eff logaddexp(0, a_hl * (v - d_min_eff)) / a_hl # shoulder → 纸白 res d_max_eff - logaddexp(0, a_sh * (d_max_eff - v1)) / a_sh # toe → 纸黑源码negpy/features/exposure/logic.py#L465-L495常数定义见 negpy/features/exposure/models.py#L144-L165最后一步把打印密度换算回场景线性光$I_{out} 10^{-D}$。之后还有Paper Black开关关闭时做黑点补偿类似 ICC 相对比度量软校样开启则保留纸张抬升的 D-max$10^{-2.3} \approx 0.005$让最深处黑得有纸味。在这条基础曲线之上NegPy 还提供了一整套暗房工具Preflash预闪光、Zone Density分区密度、Split Grade分区分级、Dodge Burn加光减光蒙版、Contrast Mask对比度蒙版即暗房 unsharp mask、Diffusion扩散片模拟以及对每个染料层R/G/B独立的crossover 修正——因为 CMY 色彩过滤只能平移某一层的曲线只有形状修正才能修掉阴影与高光色偏不一致的问题。内置纸张档案从Ilford到Kodak的打印特性 纸张档案Paper Profile只改变 HD 曲线的形状$D_{max}/D_{min}$、toe/shoulder 锐度与高度、中间调 gamma对比度仍归 Grade 管。内置档案按处理模式分组纸张档案类型D-max特点Neutral默认通用2.3与默认曲线逐位一致Ilford Multigrade FB Classic黑白2.15纤维纸阴影更深、膝盖更锐Foma Fomatone MG Classic黑白2.0暖调氯化溴化经典石印纸Kodak Polymax II RC黑白2.13依 G-26 数据表曲线拟合Kodak Portra EnduraRA42.65依 E-4021 数据表拟合Kodak Ultra EnduraRA42.61依 E-4020 数据表拟合Fujicolor Crystal ArchiveRA42.35鲜艳蓝绿估算参数档案定义negpy/features/exposure/papers.py#L96-L239Kodak 系列用 scripts/fit_paper_profile.py 对着数据表曲线拟合到 RMS ≤ 0.05 D 才接受。RA4 彩色纸还带染料耦合矩阵如 Endura 的青染吸收部分绿光与片基色 tint模拟真实相纸的串色。档案是模式感知的彩色负片只出现 RA4 纸黑白负片只出现黑白纸幻灯片E-6只有 Neutral——存下来的不兼容值会自动回落到 Neutral永远不会泄漏进渲染。ISO-R分级教程像暗房选纸一样调对比度 NegPy 的对比度不用抽象的 0–5 数字而是采用摄影标准ISO 纸级曝光范围R 值滑杆范围R50很硬→ R180很软默认R115其中 R110 ≈ 经典 2 级灰纸斜率换算$k 2.9 \times \text{负片密度范围} / (R/100)$钳制在 [2.0, 10.0]——即对比度 负片密度范围 ÷ 纸张曝光范围和真实分级纸的物理定义完全一致旧版 0–5 纸级编辑自动迁移$R 150 - 20 \cdot G$观感不变。换算实现negpy/features/exposure/logic.py#L861-L875grade_to_slope/slope_to_grade每个蒙版还能有自己的Local Grade以 ISO-R 点偏移帧级分级相当于用一个更硬的滤镜烧天空。自动测光Auto Density 与 Auto Grade 如何工作这两个助手默认开启且只读有纹理的区域块中值 纹理投票避免片基、天空和大白墙干扰测光助手策略目标密度Auto Density以 0.46 为假设锚点按 20% 强度向实测值拉取限幅 ±0.12锚点打印至 0.75 DAuto Grade按纹理密度范围P10–P90做部分 ISO R 匹配平的画面给一点提亮、硬的画面不硬推正常负片目标 0.85Shadow Reach最暗纹理调子P99必须打出 ≥1.9 D不足则抬高斜率永不降低1.9 D直线段Highlight Hold最亮纹理调子P2若打过0.10 D自动补一个高光减光0.10 DShadow Hold对 Shadow Reach 尾巴做部分提亮强度 0.40上限 0.3只提亮、不减光实现Shadow Reach negpy/features/exposure/logic.py#L1077-L1090、Highlight Hold negpy/features/exposure/logic.py#L1093-L1109、Auto Grade 因子 negpy/features/exposure/logic.py#L1032-L1039此外还有Set Targets面板这八个瞄准值锚点打印密度、测光信任度、Shadow Reach 目标等可以按自己的扫描仪和口味整体校准属于标定而非编辑对已处理的帧同样生效。负片处理流水线从扫描到成图的9个阶段 完整渲染顺序各阶段串联前级缓冲传给后级#阶段干什么源码位置0修复烘焙IR 去尘/划痕检测写回线性源非阶段先于几何negpy/features/retouch1Geometry旋转、畸变校正、tilt/swing、自动裁切negpy/features/geometry2Scan Normalization平面场校正、传感器串色解混、对数转换、百分位定界与拉伸negpy/features/exposure/normalization.py3The PrintHD 曲线 ISO-R 分级本文主角negpy/features/exposure4CLAHECIELAB L* 上的局部对比度8×8 瓦片negpy/features/lab5Lab Scanner Mode色度降噪、饱和度、肤色保护、锐化、辉光、红晕同上6Alt Processes石印 / 晒蓝 / Sabattier仅黑白模式negpy/features/lith 等7Toning六浴化学调色银台账 分割调色negpy/features/toning8Finish边缘暗角、冲裁胶片边、装框、导出锐化negpy/features/finish色彩管理上工作空间始终是线性 RGBAdobe RGB 原色 D65Adobe RGB TRC 是引擎最后一步 OETF软校样是一张 65³ 的 3D LUT 而非渲染阶段导出时转换到目标色域并内嵌 ICC 档案——预览、缩略图与导出因此永远一致。谁适合使用NegPy️ 拥有负片/幻灯片扫描件Plustek、Coolscan、SANE 扫描仪或相机 RAW的胶片玩家想要开箱即打印的自然观感又不想放弃暗房式手工控制分级、加光减光、调色、石印在意无损编辑源文件永不改动编辑存于本地 SQLite可选.negpy旁挂文件与预览-导出一致性CPU/GPU 引擎逐位对齐。延伸阅读与源码导航完整管线数学docs/PIPELINE.md面板与控件使用手册docs/USER_GUIDE.md串色解混档案.tomldocs/CROSSTALK.md 与 crosstalk/HD 曲线与分级核心negpy/features/exposure/logic.py纸张档案数据negpy/features/exposure/papers.py数据表曲线拟合脚本scripts/fit_paper_profile.py赞分享【免费下载链接】NegPyTool for processing film negatives.项目地址https://gitcode.com/gh_mirrors/ne/NegPy点击查看免费下载相关推荐NegPy能做什么这款开源胶片负片处理工具的完整介绍NegPy能做什么这款开源胶片负片处理工具的完整介绍 NegPy 是一款免费开源的胶片负片处理工具专为负片扫描而设计。它不只是简单地把负片反转成正片而是用在 GitHub Codespaces 中云端构建 INAV 固件从创建 Codespace 到下载 .hex 的完整指南在 GitHub Codespaces 中云端构建 INAV 固件从创建 Codespace 到下载 .hex 的完整指南 本文整理自 INAV 官方开发文档ReelMimic多AI Agent审片流水线揭秘为什么每支镜头都不自审自改ReelMimic多AI Agent审片流水线揭秘为什么每支镜头都不自审自改 ReelMimic 是一款本地运行的 AI 视频制作工具丢给它一支喜欢的参考视创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

GetQzonehistory:免费开源的QQ空间说说备份工具,快速完整备份历史说说

GetQzonehistory:免费开源的QQ空间说说备份工具,快速完整备份历史说说

GetQzonehistory:免费开源的QQ空间说说备份工具,快速完整备份历史说说 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory GetQzonehistory 是一个免费的开源备份工具…

2026/10/16 1:54:43 阅读更多 →
Xhorse update tool v1.5.1固件更新指南:从校验解压到避坑实践

Xhorse update tool v1.5.1固件更新指南:从校验解压到避坑实践

简介:Xhorse Update Tool v1.5.1 是专供 Xhorse VVDI 智能诊断设备使用的电脑端升级工具,服务于汽车钥匙匹配、防盗解除、ECU 编程等维修场景。它通过 USB 连接设备后自动检测版本并获取最新更新包,让技术人员及时获得功能优化与 Bug 修复&am…

2026/10/16 1:54:43 阅读更多 →
Linux嵌入式SDIO驱动开发与调试实战指南

Linux嵌入式SDIO驱动开发与调试实战指南

简介:本资源是一套面向嵌入式Linux驱动开发者的SDIO驱动程序学习与实践资料包,聚焦Wi-Fi、蓝牙等典型SDIO外设的内核级驱动原理与实现方法,适用于具备C语言基础和Linux内核模块开发经验的中高级工程师。压缩包共23个文件,约1.3MB&…

2026/10/16 1:54:43 阅读更多 →

最新新闻

建筑改造项目的表计难题:拆不了换不动,水电气数据怎么远程拿?

建筑改造项目的表计难题:拆不了换不动,水电气数据怎么远程拿?

建筑改造项目做到水电配套这一步,表计怎么处理,常常是第一个卡住的地方。新建工程的表计配套相对简单。但改造项目和存量建筑不一样,每栋楼的情况都不同。有的管网锈了二十年不敢碰,有的管井窄到人侧身才能进去,有的本…

2026/10/16 2:49:57 阅读更多 →
steve-jobs - SKILL

steve-jobs - SKILL

name: steve-jobs description: “Agente que simula Steve Jobs — cofundador da Apple, CEO da Pixar, fundador da NeXT, o maior designer de produtos tecnologicos da historia e o mais influente apresentador de produtos do mundo.” risk: safe source: community …

2026/10/16 2:49:57 阅读更多 →
Eclipse配C++全指南:CDT插件与MinGW-w64环境搭建及排障

Eclipse配C++全指南:CDT插件与MinGW-w64环境搭建及排障

写Eclipse配C这事,网上教程一抓一大把,但大多是“下一步下一步”的截图流,看完装完一编译就傻眼。我自己从大一折腾到工作,中间踩过的坑比代码还多,什么CDT装不上、MinGW路径不对、调试器连不上,全都经历过…

2026/10/16 2:49:57 阅读更多 →
VS2019+Qt开发配置全攻略:版本选择、扩展安装与常见报错解决

VS2019+Qt开发配置全攻略:版本选择、扩展安装与常见报错解决

在VS2019里用Qt做开发,这个组合对不少Windows桌面程序员来说,属于"迟早要碰"的那类东西。但真正第一次动手的人会发现,从下载安装包到VS2019里弹出第一个窗口,中间隔着不少事先没人告诉你的决定:装Qt 5还是Q…

2026/10/16 2:49:56 阅读更多 →
CodeBuddy IDE实测:AI Agent如何重塑开发工作流

CodeBuddy IDE实测:AI Agent如何重塑开发工作流

打开下载页,看到 CodeBuddy IDE 的状态已经是"可下载",再扫一眼社区里关于 WorkBuddy 的讨论,大家都管它叫"腾讯版小龙虾",说实话我的第一反应是:腾讯这次是真的下场比赛了。2025 年的 AI 编程赛道…

2026/10/16 2:49:56 阅读更多 →
WuKongIM 动态数据节点生产就绪(Stage 9):持久化健康新鲜度、fail-closed 放置门禁与真实流量生命周期验证

WuKongIM 动态数据节点生产就绪(Stage 9):持久化健康新鲜度、fail-closed 放置门禁与真实流量生命周期验证

即时通讯后端 【免费下载链接】WuKongIM More than just IM 不只是即时通讯(IM) 项目地址: https://gitcode.com/gh_mirrors/wu/WuKongIM 点击查看 免费下载 在 WuKongIM 的动态节点生命周期体系中,Stage 9 解决的是“功能可用”与“生产可运维”之间的…

2026/10/16 2:48:56 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →