docs: 冷区条纹量化——映射与列FPN一致、细纹理1.27×;冷区计数噪声超预算1.65×(只在大负d出现),排除阈值符号/band选择/参考/JPEG/显示链,留 fpaTempFix 图像链与 band0 gain 两条待验假设
This commit is contained in:
@@ -484,3 +484,47 @@ raw/参考/差值/NUC 的 mean/std/HF),真机跑一遍,把噪声预算算
|
|||||||
- 官方实时画面更平滑的**可复现线索**:其显示链是"离屏 640×480 + 最近邻放大"。
|
- 官方实时画面更平滑的**可复现线索**:其显示链是"离屏 640×480 + 最近邻放大"。
|
||||||
我们若要更接近,可以(a)把保存的照片改成 4×(640×480)或提高 JPEG 质量,
|
我们若要更接近,可以(a)把保存的照片改成 4×(640×480)或提高 JPEG 质量,
|
||||||
(b)实时预览改单级放大。两者都是**表现层**改动,不影响已对齐的映射,风险低。
|
(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` 重生成路径,而非表本身)。
|
||||||
|
|||||||
@@ -489,6 +489,32 @@
|
|||||||
"未连接"分支显示,正常出图时用户看不到任何反馈)。
|
"未连接"分支显示,正常出图时用户看不到任何反馈)。
|
||||||
- [x] 单测 66 → **76 项全绿**;debug + release(R8) 双构建通过;APK 已更新。
|
- [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 傍晚,"计数噪声偏大":实测预算证伪 + 修两处真问题)
|
## 用户反馈修复 第三十三轮(2026-10-06 傍晚,"计数噪声偏大":实测预算证伪 + 修两处真问题)
|
||||||
|
|
||||||
用户:"把'计数'噪声偏大修一下,没问题就合并到csdk里面,各部分readme文档更新,然后推送"。
|
用户:"把'计数'噪声偏大修一下,没问题就合并到csdk里面,各部分readme文档更新,然后推送"。
|
||||||
|
|||||||
Reference in New Issue
Block a user