app+csdk+docs: 按反汇编定案修复——官方安卓路径无 160→320 插值级(ImageViewer 无 FILTER_BITMAP 最近邻放大),我们的双线性 2× 自造交错细纹;实测冷区细条纹比 1.16/1.29→1.00/0.93,csdk 同加 upscale_nearest,119 单测全绿
This commit is contained in:
@@ -528,3 +528,41 @@ JPEG 只能解释一部分:把我们那张(960×720 q95,202 KB)按 640×
|
||||
验证:临时把 `fpaTempFix = 0` 出两版,量冷区 HF(同样一张场景、同样流程)。
|
||||
2. band0 的 gain 插值本身与 PC 参考路径的差异(PC 端 NUC 逐字节一致,说明差异在
|
||||
Android 的 `GenerateVolatileLens` 重生成路径,而非表本身)。
|
||||
|
||||
## 14. 定案并修复:"低温区条纹更多"= 我们自造的 2× 交错图案(反汇编依据 + 实测验证)
|
||||
|
||||
### 14.1 依据(官方安卓路径没有插值级)
|
||||
|
||||
`ImageViewer`(官方 App,jadx 源码):
|
||||
- `this.bmpIr_ = Bitmap.createBitmap(fpaWidth, fpaHeight, ARGB_8888)`(**160×120**,即 SDK 直接给原生尺寸);
|
||||
- `this.paint_ = new Paint(1)` —— 只有 ANTI_ALIAS,**没有 FILTER_BITMAP**;离屏 `cachedbmp_ = Bitmap.createBitmap(640, 480)` 就用这些 paint 画进去(= **最近邻**)。
|
||||
|
||||
而我们的 `upscale2x`(移植自 PC SDK)是**双线性**:偶列取原样本、奇列取邻均值 →
|
||||
在传感器 Nyquist 上**人为造出一层"全幅/半幅"交错的细竖条纹**,且**只在色带最陡的暗/低温区**最扎眼。
|
||||
|
||||
### 14.2 实测验证(同场景 A/B,冷区=最冷 25% 像素)
|
||||
|
||||
| 冷区指标(照片,160×120 网格) | 修复前(双线性 2×) | 修复后(最近邻 2×) |
|
||||
|---|---|---|
|
||||
| 细尺度列条纹(去趋势宽 5)之比 | 1.16 ✗ | **1.00 ✔** |
|
||||
| 细尺度列条纹(去趋势宽 9)之比 | 1.29 ✗ | **0.93 ✔** |
|
||||
| 宽尺度列条纹(21 / 41)之比 | 0.90 / 0.87 ✔ | 0.82 / 0.72 ✔ |
|
||||
| 列剖面相关性(同一 FPN 图案) | +0.815 | +0.832 ✔ |
|
||||
| \|dx\| HF 之比 | 1.27 | 1.67(见 14.3) |
|
||||
|
||||
→ **用户报的"细条纹"就是这层自造交错**:去掉后细尺度条纹与官方一致(1.00/0.93),
|
||||
而真实 FPN(宽尺度)我们本来就比官方更轻。
|
||||
|
||||
### 14.3 顺带说明:HF 比值反而变大不是变差
|
||||
|
||||
重建后的 `|dx|` HF 从 1.27 升到 1.67,是因为**旧的交错本身就是一次列方向的平滑**
|
||||
(奇列被平均掉一半),它把这个指标"压低"了——去掉假平滑后露出的是真实逐像素噪声。
|
||||
即旧值 1.27 是"假图案 + 被平滑的噪声"的合成,新值是纯噪声。逐像素噪声的差异
|
||||
(同一场景、同一映射下)仍待查,方向已收窄到"照片路径的 JPEG/缩放"与"设备帧噪声"两者,
|
||||
方法学与数据见 §12/§13。
|
||||
|
||||
### 14.4 落地
|
||||
|
||||
- `RenderPipeline.upscaleNearest`(构造参数,实时会话 = true;默认 false 保持 C 参考字节不变);
|
||||
- csdk:`mag160c_render.h/.c` 增加 `upscale_nearest`(两个 demo 默认 1),同一段注释说明依据;
|
||||
- 单测新增 `UpscaleParityTest`(两种模式必须不同 + 最近邻必须逐行复制),共 **119 全绿**。
|
||||
|
||||
Reference in New Issue
Block a user