跳到主要内容

热红外相机(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_temperature293.15环境基准气温(K)
humidity_g_m310.0绝对湿度(g/m³),用于计算大气红外消光
primary_irradiance800.0晴空正午垂直太阳辐照度基准(W/m²)
diurnal_amplitude_k5.0昼夜气温正弦波动半振幅(K,0 为恒定气温)
thermal_inertiatrue开启表面温度随时间热弛豫
inertia_spin_up_seconds0采集开始前预演的历史日照时长(秒;傍晚/夜间场景建议设为 28800 即 8 小时以展现路面余温)
material_properties{}按 UE 材质资产名(小写)临时覆写发射率、热导率或温度偏移

探测器噪声与派生输出(sensor_noise / outputs)​

字段默认值说明
sensor_noise.enabledfalse是否启用热探测器噪声模型
sensor_noise.netd_mK50.0等效噪声温差 NETD(mK,在 300 K 基准下定义)
sensor_noise.fpn_amplitude0.0固定图案条纹噪声(FPN)幅值
sensor_noise.vignetting0.0光学暗角能量衰减系数
outputs.raw16false导出 16-bit 线性定标 PNG
outputs.raw16_min_c / raw16_max_c-40 / 180raw16 温度定标窗口(°C,超界饱和不回绕)
outputs.previewfalse导出 Ironbow 伪彩色预览 PNG
outputs.preview_auto_gaintrue伪彩预览自动按分位数拉伸对比度(也可设 preview_min_k / preview_max_k 固定窗口)
outputs.both_unitsfalse同时导出温度(K)与辐射亮度(W/(m²·sr))

4. 场景材质热属性配置​

热红外与 LiDAR、毫米波雷达共用同一套 UIANonVisualMaterial(PM_NV_*)物理材质资产(内置 67 种常见工程材质的发射率、热导率、比热容与密度):

  1. 推荐做法:在 UE 材质资产的 Phys Material 槽位绑定对应的 PM_NV_* 资产(如 PM_NV_Concrete、PM_NV_Asphalt、PM_NV_Metal),一次绑定对三类传感器同时生效。
  2. Actor 标签局部微调:可在发热物体(如车辆引擎盖、行人、设备)的 Actor Tags 中添加 ia.thermal.offset=15.0(升温 15 K)或 ia.thermal.emissivity=0.95。
  3. JSON 按材质名临时覆盖:在 thermal.material_properties 中按材质名称(小写)指定属性。