diff --git a/docs/android_app/rendering_diff_phone_20261006.md b/docs/android_app/rendering_diff_phone_20261006.md index 3405f29..88f5510 100644 --- a/docs/android_app/rendering_diff_phone_20261006.md +++ b/docs/android_app/rendering_diff_phone_20261006.md @@ -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` 重生成路径,而非表本身)。 diff --git a/docs/android_app/session_state.md b/docs/android_app/session_state.md index d5a5a54..52c1cea 100644 --- a/docs/android_app/session_state.md +++ b/docs/android_app/session_state.md @@ -489,6 +489,32 @@ "未连接"分支显示,正常出图时用户看不到任何反馈)。 - [x] 单测 66 → **76 项全绿**;debug + release(R8) 双构建通过;APK 已更新。 +## 用户反馈修复 第三十四轮(2026-10-06 晚,"低温区条纹更多":冷区噪声超预算 1.65×,定位中) + +用户:"不对吧,还是有差别,我换了个场景,背景的低温区域在我们的app里面明显条纹更多"。 + +### 量化(同场景 A/B + 12 s 漂移标定) + +- 漂移标定:官方两张相隔 12 s,分位差 ~1 级、逐像素 |Δ|=1.20 → 跨 App 分位差不是漂移; +- 冷区(最冷 25%):**逐计数映射差 ≤1.7 级 ✔**、列条纹 2.28 vs 2.12(1.08 ✔)、 + **细纹理 HF 2.17 vs 1.71(1.27 ✗)**;实时截图冷区 HF 1.01 vs 1.06 ✔(无 JPEG 干扰); +- JPEG 只解释 1/3(重压 640×480/q98 后 1.96)。 + +### 预算对比(关键) + +整帧预算吻合(0.559σ_n=12.3 ✔,§12.1),但**冷区实测 20.4 counts = 1.65× 超预算** —— +只在**大负 d**(d=(raw-ref)>>1)出现 → 与用户观察一致。 + +### 已排除 + +阈值/增益 16 位解析与符号(厂商侧也是 signed 比较)、band 选择(映射一致)、快门参考、 +JPEG、显示链(实时冷区反而更低)。 + +### 下一步(一次带插桩实机) + +在大负 d 分层打印 d 分布/命中 band/插值后 gain-off/σ_n,核 DDT band0 原值;首查 +`fpaTempFix` 是否不该作用在图像链(出两版对比冷区 HF)。 + ## 用户反馈修复 第三十三轮(2026-10-06 傍晚,"计数噪声偏大":实测预算证伪 + 修两处真问题) 用户:"把'计数'噪声偏大修一下,没问题就合并到csdk里面,各部分readme文档更新,然后推送"。