月食 HDR 缺陷审计

Forensic image audit · 2026-09-01

月食 Custom HDR 全量缺陷审计与代码失效分析

对 296 张 Custom HDR 最终帧、HDR master 和四组原始包围曝光进行交叉审计。结论是:当前图集存在系统性的月缘拼接伪影,主因是逐像素曝光权重在高反差边界上切换;旧代码修复了“零权重灰块”,却没有解决仍有非零权重的曝光缝,也没有用月缘连续性指标验收。

296 组 HDR / 1466 张 ARWCustom noise-aware mergemacOS + Windows 原始 RAW 对照证据截止 2026-09-01
200检测到色边或 RGB 月缘分离的帧
190检测或人工确认锯齿、断边的帧
173检测或确认双轮廓、鬼影的帧
2可测月缘中没有主要自动缺陷标签的帧
Executive conclusion

结论:这批结果不能交付

缺陷不是少数异常帧,也不是最后一次 Lanczos 旋转单独造成。HDR master 中已经出现台阶状轮廓、虚线黑点、彩色锯齿和内部刀切亮块;最终变换主要是保留或轻微放大。

01

融合新增了源图不存在的边

HDR00282 的五张源曝光都没有刀切状亮区;Custom merge 才生成分离亮块、尖锐内部边界和顶部彩色碎片。这是最直接的反事实证据。

02

截图问题属于同一机制

HDR00295 的单张源曝光月缘虽有光晕与色噪,但合成后才出现断续黑点和青紫锯齿。逐像素权重从饱和长曝光切换到短曝光,位置和 PSF 不一致。

03

旧验收检查了错误的问题

旧 QC 能检查帧数、平均亮度、p99.7 高光、天空噪声和灰色平台块,却完全没有检查月缘连续性、双边、通道边缘分离、外侧光晕或内部融合缝。

处置建议:

冻结当前 296 张结果,不再把它们作为延时摄影生产素材。下一版必须在真实 RAW 边缘样本上重建融合与配准,并把月缘/阴影边界验收纳入发布门槛。

本地实测算法归因质量风险
Audit scope

如何检查“所有照片”

不是只看用户截图或挑几张最差样本:每一帧都进入逐帧 CSV;最终帧、Custom master 与旧 master 分开测量;同时制作六页时间顺序总览,并对四个代表包围组重新解码原始 ARW。

296 frames逐帧读取16-bit 最终 PNG、Custom HDR master、旧版 master。
720 rays径向月缘采样每帧 720 个角度、月缘内外 ±14 px。
Multi-label多标签分类色边、锯齿、双边、光晕、饱和、噪声可重叠。
Visual sweep全序列人工扫查六页 × 50 帧,补充内部阴影边界缺陷。
Raw counterfactual原始曝光对照HDR00000、00145、00282、00295 重新解码。

自动测量口径

  • 色边:月缘外侧色差 p95 ≥ 0.08,或 RGB 边缘位置差 p95 ≥ 2 px。
  • 锯齿:径向位置抖动 p95 ≥ 3 px,或相邻角度跳变比例 ≥ 20%。
  • 双边:有效月缘中,外侧存在次级径向边缘的比例 ≥ 70%。
  • 光晕:外侧/内侧亮度比例 p95 ≥ 0.40。
  • 高光缝:月缘饱和比例 ≥ 8%。
  • 噪声:8-bit 等效亮度 σ ≥ 2.0 或色度 σ ≥ 2.5。

91 张低置信帧如何处理

有 91 张只有不足 10% 的高反差可见月缘,自动几何指标不稳定。它们被明确标成 edge_audit_low_confidence,不使用哨兵值冒充严重度,也不算“通过”。全序列人工扫查因此发现了自动径向外缘指标看不到的 HDR00282–00283 内部阴影边界融合错误。

这是审计限制,不是结果免责条款。

HDR 250 到 295 的时间顺序总览,其中 282 帧可见明显内部亮块
图 1 · 后段全序列总览。 HDR00282 在缩略图尺度已经可见异常刀切亮区;HDR00284 之后进入亮月牙阶段,边缘色散与局部高光问题增加。
查看另外五页时间顺序总览
Defect taxonomy

问题分为七类,但根因彼此耦合

计数为多标签,不应相加。一个帧可以同时有色边、锯齿、双轮廓、光晕和噪声;“严重”是更高阈值或人工确认的子集。

色边 / RGB 月缘分离
200
锯齿 / 断边
190
双轮廓 / 鬼影
173
外侧光晕 / bloom
169
表面或色彩噪声
66
高光饱和 / 曝光缝
16
内部阴影边界融合错误
2
问题全部标签数严重帧画面表现主要归因
色边200107青/紫/红色锯齿沿月缘分布AHD 去马赛克、色差、彩噪 + RGB 共用权重
锯齿/断边190122月缘半径跳动、黑点、虚线、局部缺口曝光权重切换 + 残余亚像素错位
双轮廓17314亮月缘外再出现一层平行边不同曝光的 PSF/光晕宽度被同时混合
光晕16972黑天背景中月缘外侧发灰、发亮长曝光 bloom/seeing + tone map 可见度增强
噪声6631月面颗粒与黑天 RGB 雪花有效堆栈不足、长曝光被运动权重抑制、后期增益
高光/曝光缝167亮月牙局部饱和,明暗曝光之间出现硬边0.68–0.92 高光门控和 fallback 的局部源选择
内部融合错误21阴影边界出现刀切亮块或彩色碎片一致性权重自确认 + 无空间连续性约束
Image evidence

原始曝光对照证明:融合创造了新缺陷

每个对照表按有效曝光从短到长排列,最后一行为 Custom merge;每行先给整月,再给上、右、下、左四处月缘局部。所有源图用同一 tone mapping 便于比较。

HDR00282 五张原始曝光与 Custom merge 对照
图 8 · HDR00282 是决定性证据。 0.32、2.5、20、160、1280 五档源曝光均没有 Custom merge 最后一行中的刀切亮块;融合结果在阴影边界制造了源图不存在的几何结构。
归因结论:

这排除了“月面真实地形”“用户截图缩放”“最终旋转”作为 HDR00282 主因。错误已经存在于线性 HDR master,是逐像素融合权重在阴影边界上选择不同曝光造成。

HDR00295 四张原始曝光与 Custom merge 对照
图 9 · HDR00295,即用户截图对应帧。 短曝光能给出较锐利亮月缘,长曝光恢复暗侧但高光大面积饱和;Custom merge 在右侧月缘生成断续黑点,在顶部/左侧保留青紫外缘。
用户指出的 HDR00295 边缘截图
图 10 · 用户截图。 左侧亮月缘可见密集断续青紫像素与外侧亮晕。
HDR00295 完整最终帧
图 11 · HDR00295 完整帧。 问题沿整个高反差月缘分布,并非截图软件局部显示错误。
HDR00295 源曝光有效曝光月面饱和比例mean_final_weight结果解释
DSC17102.50.58%0.000675高光最安全,但全局逆方差权重极低。
DSC17092028.94%0.002829亮区开始大面积饱和。
DSC171116040.85%0.054882暗侧 SNR 较好,亮缘必须局部退出。
DSC1713128052.29%0.408680权重尺度占绝对优势,直到高光门控在月缘附近迫使其切换。

mean_final_weight 是当前实现输出的未归一化空间平均权重,只用于比较同组曝光的权重尺度,不等同于最终图像的线性贡献百分比。

Root cause

权重公式在边缘做了错误的局部选择

代码思路本身合理:在线性辐亮度空间按噪声、曝光、高光与运动可靠性加权。但它把“每个像素独立选择最佳曝光”当成了充分条件,没有约束曝光来源在空间上的连续性,也没有保证不同曝光的边缘几何一致。

Rᵢ(x) = Iᵢ(x) / exposureᵢ

wᵢ(x) = shadowᵢ(x)
      × highlightᵢ(x)          # sensor peak 0.68 → 0.92 时降到 0
      × inverse_varianceᵢ      # 由月外环的标量噪声估计得到
      × motionᵢ
      × consistencyᵢ(x)        # 与 preliminary luma 的一致性

HDR(x) = Σ wᵢ(x)Rᵢ(x) / Σ wᵢ(x)
01

全局噪声权重压倒局部可靠性

噪声只在月外环估计成每张曝光一个标量,再除以曝光得到 radiance noise。长曝光因此常获得数量级优势,即使它在亮月缘已有 bloom、饱和或不同 PSF。

02

高光门控造成“权重悬崖”

highlight = 1 - smoothstep(peak, 0.68, 0.92) 对单张曝光连续,但多曝光竞争时,主导源会在几像素内突然换人。边缘位置只差 0.5–2 px,就会变成台阶和双边。

03

一致性判断会自我确认

preliminary 本身由同一套偏向长曝光的权重生成;随后每张曝光与 preliminary 比较。主导曝光更容易被判为一致,正确但较短的高光曝光反而可能被压低。

04

RGB 共用同一个标量权重

红、绿、蓝通道的去马赛克边缘和镜头色差位置不同。共用权重不能对齐通道边缘,只会把不同通道的锯齿一起保留下来。

05

配准只解决全局平移

每张源曝光只做一次 warp_translation。它不能校正曝光期间的局部 seeing、月球运动、长曝光 PSF 扩散和不同通道的亚像素位置。

06

没有区域级或边缘级保护

融合前没有构建稳定月盘、亮月牙、阴影区和天空的连续 mask,也没有形态学清理、引导滤波或 Laplacian pyramid。孤立像素可以自由切换曝光来源。

为什么旋转不是主因:

最终帧相对 Custom master 的月缘抖动比中位数为 1.00,p90 为 1.247;只有 11 张达到 ≥1.35。若旋转是主因,中位数应显著大于 1。源曝光对照也直接显示坏边已在 merge 行出现。

阶段当前实现解决了什么未解决什么
RAW 解码AHD + 固定白平衡获得线性 RGB 和统一色彩基线月缘去马赛克伪色、通道色差、长曝光 bloom
配准全局亚像素平移月心大体重合局部形变、PSF 差异、通道边缘错位
HDR 融合逆方差 × 高光 × 运动 × 一致性大多数普通月面像素的动态范围高反差边缘的空间连续性和 source ownership
零权重回退选择最不饱和可靠源消除灰色/黑色平台块权重很小但非零的缝、双边、斑点;HDR00282 即属此类
Tone mapping月盘/天空双增益 + NLM + 色度模糊亮度中心化、限制整体高光、部分降噪不能恢复错误几何;色度模糊可能把色边扩成光晕
最终稳定Lanczos 旋转和平移月心和表面角度稳定只能重采样已有伪影,不能消除融合缝
Why previous fixes failed

之前的代码为何没能消除这些问题

失败并不是“修复完全没生效”,而是修复目标过窄、测试场景过理想、验收指标与人眼关注点错位。代码通过 25 个测试,只能证明这些断言成立,不能证明月缘质量合格。

1. 修的是 zero-weight 灰块,不是非零权重曝光缝

上一轮修改只在 weight_sum ≤ 1e-12 时触发 fallback,确实消除了 HDR00292/HDR00295 的大块灰岛。但当前大量坏像素的 weight_sum 并不为零,只是不同曝光权重比例在边界急剧变化,因此完全绕过 fallback。

2. 单元测试没有真实边缘条件

合成测试使用完全共轴、同 PSF、RGB 成比例的圆盘;没有 AHD 色边、曝光间 subpixel 位移、长曝光 bloom、局部饱和边缘或 seeing。均匀 64×64 fallback 测试也没有“边界”,自然无法暴露接缝。

3. 旧 QC 只看全局统计

完成验证检查帧数、平均亮度、p99.7、高光帧数、天空噪声与中性灰区域。即使月缘有两条线,只要平均亮度和峰值正常,仍会通过。

4. plateau 审计只认识一种失败形状

audit_hdr_plateaus.py 只寻找接近 1 / effective_exposure 的大连通平台,专门捕捉饱和源 fallback 灰岛。锯齿、双边、色边和细缝不会形成这种平台。

5. “噪声下降”掩盖了边缘变差

此前最差 10 组评估重点比较亮度/色度噪声中位数和过曝。一个算法可以降低平坦区域噪声,同时把月缘拼成双边;指标仍可能显示“改进”。

6. 质检顺序过早收敛

先看到灰块消失、高光 p99.7 受控、亮度变化稳定,就把结果视为可用;没有在 100% 最近邻局部检查月缘,也没有做源曝光→master→final 的逐阶段反事实对照。

旧检查/测试通过意味着什么不能证明什么本次新增证据
synthetic radiance error完美配准合成场景能恢复平均辐亮度真实月缘无接缝720 角径向连续性 + RAW 对照
highlight fallback test全零权重时选择较不饱和源非零权重区域平滑切换HDR00282/HDR00295 边缘反例
p99.7 ≤ 0.945绝大部分高光输出不超过目标局部没有剪切或曝光缝月缘饱和比例 + 局部接触表
sky noise / NLM背景环高频残差受控月缘没有 RGB 雪花、月面没有纹理损伤亮度/色度噪声分离测量
neutral plateau guard没有特定灰岛没有细锯齿、双边和内部刀切块七类多标签缺陷审计
25/25 单元测试已编码断言没有回归真实 296 帧视觉质量合格全序列视觉页 + 逐帧 CSV
核心教训:

图像算法的测试必须覆盖“人眼最在意的局部结构”。平均亮度、噪声中位数和全局高光可以同时变好,而一条 2 px 宽的月缘伪影足以让整张天文图失效。

Remediation plan

下一版必须从“像素竞争”改为“区域连续融合”

下面是修复方向,不代表本报告已实施。目标是先建立可被真实边缘样本证伪的最小基线,再逐步增加复杂度。

1

建立真实 RAW 边缘回归集

固定至少 HDR00000、00145、00282、00295,并加入前/中/后各阶段代表帧。保存源曝光、线性 master、tone map 与 final 的同位置 crop;任何新增双边、断边或内部切块都直接失败。

2

为高光边界指定稳定 anchor

在亮月缘优先选最短未饱和曝光作为几何 anchor。长曝光只补充低频暗部辐亮度,不能自由决定边缘位置。

3

局部配准与 PSF 匹配

在外月缘和阴影边界单独估计亚像素位移;必要时把较锐曝光匹配到目标 PSF,或在融合 mask 中扩大不可信边界带。

4

构建连续区域 mask

从饱和度、SNR 和月盘几何生成每曝光置信 mask,再做连通域清理、形态学闭运算、引导滤波和距离羽化;禁止棋盘状或单像素 source ownership。

5

使用多尺度融合而非直接像素平均

可先以 Mertens/Laplacian pyramid 作为视觉基线;月缘高频来自 anchor,暗侧低频来自长曝光。与 radiance HDR 并行比较,不再假定一种公式能同时最优处理天空、月面和月缘。

6

把边缘指标升级为发布门槛

至少包括:有效月缘覆盖、RGB 边缘分离、径向跳变、次级轮廓、外侧光晕、内部阴影边界连通性;并保留 100% crop 接触表进行人工签收。

必须失败

几何新结构

merge 不得生成任何源曝光都不存在的轮廓、缺口、孤岛或刀切边。

需要权衡

噪声与锐度

可以接受轻微噪声,但不能用局部曝光拼接换取表面“更干净”的假象。

次要优化

旋转与亮度

只有 master 边缘通过后,才继续调表面锁定、角度平滑和亮度中心化。

Evidence & provenance

来源与审计边界

本报告是项目内部实测与代码审计,不依赖外部网络事实。图像均来自用户授权范围内的月食原始数据及其派生结果;公开版本不包含凭据或本机绝对路径。

实测数据

  • 296 张 1024×1024 16-bit 最终 PNG。
  • 296 张 Custom HDR master preview 与旧版 master 对照。
  • 1466 条曝光/配准/融合源统计。
  • 四组 ARW 重新解码对照:HDR00000、00145、00282、00295。
  • 六页时间顺序人工总览、七类缺陷接触表。

代码审计范围

  • hdr_remake.py:噪声估计、权重、fallback、tone mapping。
  • hdr_custom.py:RAW 解码、全局平移、master 构建、最终 Lanczos 变换。
  • test_hdr_remake.py / test_hdr.py:合成场景单元测试。
  • verify_custom_hdr_route_one.py:旧完成验收。
  • audit_hdr_plateaus.py:灰岛专项审计。
不确定性说明:

91 张高反差可见月缘不足 10%,自动外缘几何标签置信度有限,已保留低置信标记并通过全序列视觉页补充检查。问题计数是工程阈值下的质量审计结果,不是天文测量或传感器标定结论。

  1. 逐帧多标签审计:classified_frames.csv,生成于 2026-09-01。
  2. 分类汇总:classification_summary.json,296 帧。
  3. 源组对照:source_group_audit.json 与四张接触表。
  4. 回归状态:25/25 测试通过;该结果仅代表已有断言成立。