app+csdk+docs: 噪声预算真机实测(0.559σn 与理论一致,链路无额外噪声源)+ 修 MDT raw/NUC 配对与 LUT 32位语义;csdk 合入 android_lut/fpa_temp_fix(C 未编译,算法由 golden 测试锁定);118 单测全绿

This commit is contained in:
ZXCLI
2026-10-06 16:28:05 +08:00
parent 2290fbbafb
commit e0709f9305
13 changed files with 421 additions and 16 deletions
+10 -5
View File
@@ -294,13 +294,18 @@ build-artifacts\csdk_test_display.exe
用的(PC 版)**结构不同**——固定基值 `16*(448+447*b/200)`、步进上限
`max(1,(0x1800+4j)·k>>13)`(`k=min(0x200,16·span/range)`)、反向 CDF 从
`hist[pivot]` 起、pivot=`max(center_idx,(meanBelow+meanAbove)/2)`。
该变体已逐指令移植进 Android 管线(`RenderPipeline.androidLutOf`,含黄金向量单测);
本 C 参考**保持 PC 语义**(`cdf_pivot_75 = 1`,与 `analysis/render_offline.c`
黄金夹具一致)。Android 版 LUT 的 C 侧移植待办,规格见
`docs/android_app/rendering_diff_phone_20261006.md` §10.3。
**C 侧已实现**:`mag160c_render.h` 的配置项 `android_lut`(1 = 用 Android 版
`HistDeRedundance`,即 `mag160c_render.c: android_lut_rebuild()`,是 Kotlin 侧
`RenderPipeline.androidLutOf` 的逐行转写,两边同一套 golden 向量;0 = 保持 PC 语义,
与 `analysis/render_offline.c` 的黄金夹具一致),两个 demo 默认打开(真机验证:
同场景照片逐像素平均差 4.5/255、逐计数中位差 2 级,见 §10/§11)。
⚠️ **本机没有 C 编译器**(gcc/clang/NDK 都没有),所以这段 C **未编译**——
算法本身由 Kotlin golden 测试锁定,合入前请在带编译器的环境编译 + 跑回归。
- 顺带(同一条链):**曲线插值温度要加 `BasePara2.fpaTempFix`**。官方 App 传给 SDK 的是
`帧尾 FPA + fpaTempFix`(真机 1699),`SelectCaliCurve`/`GenerateVolatileLens`
用它选/插值每像素标定表;温度换算链路仍用帧尾原值。C 侧移植时不要漏。
用它选/插值每像素标定表;温度换算链路仍用帧尾原值。C 侧**已实现**
(配置项 `fpa_temp_fix`,在 `rebuild_tables()` 的调用处加到帧尾 FPA 上;
两个 demo 设 1699 = 本机 BasePara2 实测值)。
2. **温度换算待移植**:官方对这台设备走的是"放射学分支"(每波段线性映射 + 环境温度误差修正
+ 发射率/透过率 revise),不是本 SDK 现在用的 T2E 表分支。完整反编译结论、伪代码与
参数来源见 `docs/android_app/temperature_chain_re_20261006.md`(§4d 可直接落地,