热红外相机(Thermal)
ThermalLWIR(长波红外 8–14 µm)与 ThermalMWIR(中波红外 3–5 µm)基于场景日照、大气环境、材质发射率/热惯性以及探测器噪声,输出物理一致的 float32 热辐射/温度图像(支持针孔相机与常规鱼眼相机)。
1. 快速启用配置
在 sensors.camera.modalities 中开启 ThermalLWIR 或 ThermalMWIR,并在顶层添加 thermal 配置段:
{
"sensors": {
"camera": {
"fps": 10,
"instances": [
{ "name": "camera", "type": "pinhole", "resolution": [1280, 720], "fov": 90.0 }
],
"modalities": {
"RGB": { "enabled": true, "format": "jpeg" },
"ThermalLWIR": { "enabled": true, "format": "npy" }
}
}
},
"thermal": {
"environment": "outdoor",
"output_unit": "temperature",
"ambient_temperature": 293.15,
"primary_irradiance": 800.0,
"diurnal_amplitude_k": 5.0,
"thermal_inertia": true,
"inertia_spin_up_seconds": 28800,
"sensor_noise": {
"enabled": true,
"netd_mK": 50.0,
"fpn_amplitude": 0.005,
"vignetting": 0.08
},
"outputs": {
"raw16": true,
"preview": true,
"both_units": false
}
}
}
Nanite 注意事项:热红外渲染依赖全场景逐像素材质 ID,采集热红外时请通过启动参数
-dpcvars="r.Nanite=0"关闭 Nanite,否则未解除 Nanite 的网格表面会被当作天空背景温度处理。
2. 四种同步输出表示
单次 GPU 渲染可同时导出最多四种表示,分别写入相机目录下的独立子目录:
| 输出项 | 开关字段 | 输出目录 | 格式与用途 |
|---|---|---|---|
| 主数据 | 模态 enabled: true | {camera}/ThermalLWIR/ | float32 NPY / EXR,单位由 output_unit 决定(默认开尔文温度 K) |
| 16-bit 线性定标图 | outputs.raw16: true | {camera}/ThermalLWIR_raw16/ | 16-bit 灰度 PNG,码值可逆推精确温度(对接 FLIR 等工业标注工具) |
| 伪彩预览图 | outputs.preview: true | {camera}/ThermalLWIR_preview/ | Ironbow 伪彩色 PNG,供人眼目视检查 |
| 辐射度伴随数据 | outputs.both_units: true | {camera}/ThermalLWIR_radiance/ | 输出 output_unit 之外的另一单位(W/(m²·sr) 或 K) |
raw16 温度换算代码
import numpy as np
from PIL import Image
code = np.asarray(Image.open("ThermalLWIR_raw16/ThermalLWIR_raw16_000000.png"), dtype=np.uint32)
raw16_min_k, raw16_max_k = 233.15, 453.15 # 默认 -40°C ~ +180°C
temp_kelvin = raw16_min_k + code * (raw16_max_k - raw16_min_k) / 65535.0
3. 参数说明
环境与热演化参数(thermal)
| 字段 | 默认值 | 说明 |
|---|---|---|
environment | "outdoor" | 环境预设:outdoor(室外) / indoor(室内) / custom |
output_unit | "temperature" | 主输出单位:temperature(开尔文 K)或 radiance(W/(m²·sr)) |
ambient_temperature | 293.15 | 环境基准气温(K) |
humidity_g_m3 | 10.0 | 绝对湿度(g/m³),用于计算大气红外消光 |
primary_irradiance | 800.0 | 晴空正午垂直太阳辐照度基准(W/m²) |
diurnal_amplitude_k | 5.0 | 昼夜气温正弦波动半振幅(K,0 为恒定气温) |
thermal_inertia | true | 开启表面温度随时间热弛豫 |
inertia_spin_up_seconds | 0 | 采集开始前预演的历史日照时长(秒;傍晚/夜间场景建议设为 28800 即 8 小时以展现路面余温) |
material_properties | {} | 按 UE 材质资产名(小写)临时覆写发射率、热导率或温度偏移 |
探测器噪声与派生输出(sensor_noise / outputs)
| 字段 | 默认值 | 说明 |
|---|---|---|
sensor_noise.enabled | false | 是否启用热探测器噪声模型 |
sensor_noise.netd_mK | 50.0 | 等效噪声温差 NETD(mK,在 300 K 基准下定义) |
sensor_noise.fpn_amplitude | 0.0 | 固定图案条纹噪声(FPN)幅值 |
sensor_noise.vignetting | 0.0 | 光学暗角能量衰减系数 |
outputs.raw16 | false | 导出 16-bit 线性定标 PNG |
outputs.raw16_min_c / raw16_max_c | -40 / 180 | raw16 温度定标窗口(°C,超界饱和不回绕) |
outputs.preview | false | 导出 Ironbow 伪彩色预览 PNG |
outputs.preview_auto_gain | true | 伪彩预览自动按分位数拉伸对比度(也可设 preview_min_k / preview_max_k 固定窗口) |
outputs.both_units | false | 同时导出温度(K)与辐射亮度(W/(m²·sr)) |
4. 场景材质热属性配置
热红外与 LiDAR、毫米波雷达共用同一套 UIANonVisualMaterial(PM_NV_*)物理材质资产(内置 67 种常见工程材质的发射率、热导率、比热容与密度):
- 推荐做法:在 UE 材质资产的
Phys Material槽位绑定对应的PM_NV_*资产(如PM_NV_Concrete、PM_NV_Asphalt、PM_NV_Metal),一次绑定对三类传感器同时生效。 - Actor 标签局部微调:可在发热物体(如车辆引擎盖、行人、设备)的 Actor Tags 中添加
ia.thermal.offset=15.0(升温 15 K)或ia.thermal.emissivity=0.95。 - JSON 按材质名临时覆盖:在
thermal.material_properties中按材质名称(小写)指定属性。