docs: 官方 PC 端同帧逐像素对比(NUC 逐位一致、调色板一致、温度曲线系统差 +0.1/-0.7C、窗口规则差异、PC 采集链路与驱动坑)
This commit is contained in:
@@ -489,6 +489,60 @@
|
||||
"未连接"分支显示,正常出图时用户看不到任何反馈)。
|
||||
- [x] 单测 66 → **76 项全绿**;debug + release(R8) 双构建通过;APK 已更新。
|
||||
|
||||
## 用户反馈修复 第二十六轮(2026-10-06,官方 PC 软件同帧对比:渲染逐像素一致,温度曲线有系统差)
|
||||
|
||||
用户把热像仪接上 PC,要求"调用项目里官方给的 win 软件拍图,看和逆向出来的 sdk 的图
|
||||
差在哪些细节上"。详细报告:`docs/android_app/pc_official_compare_20261006.md`,
|
||||
证据图 `docs/android_app/pc_vs_ours_20261006.png`。
|
||||
|
||||
### 1) 官方 Win 侧选谁(侦察结论)
|
||||
|
||||
- `app/【PC分析软件】…exe` = 内部名 **ThermoX 2.5.3.6**(巨哥电子),是**网络码流**软件
|
||||
(指定IP/DHCP Server/传输混合·纯视频·纯温度码流),扫不到 USB 机芯 → 不适用于本机芯。
|
||||
- `IR_Camera_SDK-1.0.1/.../EloThermal.exe`(官方 SDK 演示)能出图但**无存图功能**(全源码核实)。
|
||||
- 采用 `tsdk_pair3.exe`(调用官方 `ThermalSDK.dll`/`CoreSDKLib.dll`)做基准采集:
|
||||
每帧 19 个文件(官方渲染 rgb/cbrgb、灰度、NUC 输出、输入帧、ref、t32 温度、pal、
|
||||
LUT、盲元、DDT),官方 DDT 一并拿到。
|
||||
|
||||
### 2) 同帧逐像素对比结果(官方 vs 我们的 Kotlin 管线)
|
||||
|
||||
- **NUC 域逐位相等**:抽检 4 帧 19200/19200 像素完全一致(max diff = 0)→ 端点插值、
|
||||
增益/阈值表、盲元补偿、ref 处理全部正确。
|
||||
- **调色板 256/256 完全一致**;官方彩色图 = palette(官方灰度)(max diff 0)→ 官方这份
|
||||
渲染**没开** 7×7 细节增强,与我们默认增强等级 0 对齐。
|
||||
- **灰度平均差 +1.3 级、最大 10 级**;彩色 61–72 % 字节相同(平均 |Δ| 1.4–1.9/255)。
|
||||
- **窗口下界规则不同**:官方 20/20 帧 `winHi = 数据max`、12/20 帧 `winLo = 数据min`
|
||||
(其余低 1–7 计数);我们 `winLo = mean−500`,本例比数据 min 低 188 计数
|
||||
→ 就是那 1.3 级偏差的来源。
|
||||
- **温度曲线系统差**:官方 t32 是 NUC 计数的精确直线(k = 8.539 mC/count,残差 ≤0.5 mC,
|
||||
无逐像素差异,即 `ConvertResponse2Temperature` 一类);我们固定 T2E 表斜率 8.26→7.67
|
||||
递减 → **27 ℃ 处 +0.1 ℃,38 ℃ 处 −0.62 ℃**(最大 −0.70 ℃)。
|
||||
|
||||
### 3) 新解码的官方内部语义(供后续复用)
|
||||
|
||||
帧输入 = `dev+0x41f20`、ref = `dev+0x41ef0`、**FPA 温度 = `dev+0x54`**(喂进我们管线后
|
||||
NUC 与官方逐位相等,据此锁定帧尾 FPA 字段)、NUC 输出 = `dev+0x270`(`raw` 缓冲)。
|
||||
|
||||
### 4) 环境坑(重要)
|
||||
|
||||
- 本机原本没装相机驱动(`CM_PROB_FAILED_INSTALL`)。厂商 INF `ThermoCube_stream.inf`
|
||||
是 libusb-win32 1.2.6.0 + libwdi 自签 cat → 需先把证书导入"受信任的根/发布者"才能
|
||||
`pnputil /add-driver /install`;装好后设备 OK、`libusb0` 服务 RUNNING。
|
||||
- **libusb-1.0 1.0.19 在该绑定下不可用**:`claim_interface` 内部 Win32 错误 87
|
||||
(`LIBUSB_ERROR_ACCESS`),故 csdk 的 `demo3.exe`/`render_offline` 在本机跑不起来;
|
||||
官方 SDK(libusb0.dll API)正常。要用 C 工具需换 libusb-1.0 版本或把设备改绑
|
||||
WinUSB/libusbK。
|
||||
|
||||
### 5) 待办(下一轮)
|
||||
|
||||
1. 温度改用设备响应换算(线性系数;先定位 DDT/BasePara 中的标定字段)。
|
||||
2. `statsWindow()` 下界对齐官方行为(≈数据 min)。
|
||||
3. 手机侧受控对照(官方手机 App 的 MDT 里存的就是 NUC 后帧,可喂我们的显示阶段;
|
||||
需要给管线加"只跑显示阶段"的离线入口)。
|
||||
|
||||
临时文件(官方 20 帧基准数据、差异图、harness)都在 `%TEMP%\mag160c_wincmp\`,仓库内
|
||||
只保留结论文档 + 一张证据图;本轮临时单测已删除。
|
||||
|
||||
## 用户反馈修复 第二十五轮(2026-09-12,关闭 debug 日志 + 带图操作手册)
|
||||
|
||||
用户三点要求:把 App 的 debug 日志关掉;做一个带图的手册;push 上去。
|
||||
|
||||
Reference in New Issue
Block a user