docs: 冷区条纹量化——映射与列FPN一致、细纹理1.27×;冷区计数噪声超预算1.65×(只在大负d出现),排除阈值符号/band选择/参考/JPEG/显示链,留 fpaTempFix 图像链与 band0 gain 两条待验假设

This commit is contained in:
ZXCLI
2026-10-06 16:52:23 +08:00
parent e0709f9305
commit 0be75fa8c3
2 changed files with 70 additions and 0 deletions
@@ -484,3 +484,47 @@ raw/参考/差值/NUC 的 mean/std/HF),真机跑一遍,把噪声预算算
- 官方实时画面更平滑的**可复现线索**:其显示链是"离屏 640×480 + 最近邻放大"。
我们若要更接近,可以(a)把保存的照片改成 4×(640×480)或提高 JPEG 质量,
(b)实时预览改单级放大。两者都是**表现层**改动,不影响已对齐的映射,风险低。
## 13. 用户复现:"低温区条纹更多"——定位到**大负差值**处的噪声放大(未修完,留了下一步)
用户:"我换了个场景,背景的低温区域在我们的 app 里面明显条纹更多"。手机仍在,做同刻 A/B
(同一场景:我们 16:35 拍、官方 16:37 拍;另有 12 s 间隔的漂移标定)。
### 13.1 先标定漂移(12 s 内、同一 App 两张)
官方 App 相隔 12 s 两张:分位 [9,17,44,73,229] → [10,18,45,74,229],逐像素 |Δ| 均值 1.20(中位 1.0)。
→ 12 s 的漂移约 1 级,**不足以解释跨 App 的分位差**,所以下面的对比是有效的。
### 13.2 冷区(最冷 25% 像素)量化
| 指标(照片,160×120 网格) | 官方 | 我们 | 比 |
|---|---|---|---|
| 逐计数中位索引(冷区 9830→10000 counts) | — | — | **最大 1.7 级** ✔ 映射一致 |
| 列条纹幅度(去 9 宽趋势后的列剖面 std) | 2.12 | 2.28 | 1.08 ✔ 基本一致 |
| 细纹理 HF \|dx\| | 1.71 | 2.17 | **1.27 ✗** |
| 实时截图冷区 HF(无 JPEG 干扰) | 1.06 | 1.01 | 0.95 ✔ |
**结论**:冷区的**映射**和**列条纹(FPN)**都与官方一致,差的是**细纹理/像素噪声**(1.27×)。
JPEG 只能解释一部分:把我们那张(960×720 q95,202 KB)按 640×480/q98 重压后冷区 HF 从
2.17 只降到 1.96(官方 1.71)→ 仍差 1.15×。所以**我们确实在冷区多出约 1.2–1.3× 的计数噪声**。
### 13.3 哪来的:整帧预算吻合,冷区超预算 1.65×
- 整帧(中等场景)实测:σ_n≈21–24 counts → 差值噪声 0.559σ_n=12.3 ✔ 与实测吻合(§12.1);
- **冷区**(大负 d;d=(raw-ref)>>1)实测计数 HF = **20.4 counts**,而按同一预算应为 12.3
→ **1.65×** ✗ —— 与"冷区更毛"的用户观察方向一致,且只在大负 d 处出现。
已逐条排除:阈值/增益的 16 位解析(与厂商一致,且厂商侧也是**有符号**比较)、band 选择
(映射一致说明段选择一致)、快门参考(4 帧快门平均 ✔)、JPEG(只占约 1/3)、
显示链(实时冷区 HF 反而更低)。
### 13.4 下一步(精确定位,需一次带插桩的实机)
在大负 d 的像素上分层打印:`d` 的分布、命中的 band、该 band 的 `gain/off`(插值后)与
`σ_n`,对 DDT 里 band0 的原始 gain/off 核一遍。最可疑的两条(都可控):
1. **`fpaTempFix` 是否也该作用在图像链**:我们按官方 App 的代码给插值温度加了 1699
(§10.5),如果该设备上图像链实际用的是帧尾原值,则 band0 的 gain 会被插值偏,
表现为"映射总体还对、但低端噪声被放大"——正好是现象;
验证:临时把 `fpaTempFix = 0` 出两版,量冷区 HF(同样一张场景、同样流程)。
2. band0 的 gain 插值本身与 PC 参考路径的差异(PC 端 NUC 逐字节一致,说明差异在
Android 的 `GenerateVolatileLens` 重生成路径,而非表本身)。