热成像 CPD 儿童检测:非制冷微测辐射热计技术方案详解

热成像 CPD 儿童检测:非制冷微测辐射热计技术方案详解

核心要点

非制冷微测辐射热计热成像技术成为 CPD 新方案:

  • 全天候检测:无光/强光/烟雾均有效
  • 穿透遮盖:检测被毯子覆盖的儿童
  • 隐私友好:仅热图像,无面部识别
  • NETD <30mK:热灵敏度足以检测呼吸
  • 成本下降:12μm 像素工艺降低成本 >50%

非制冷微测辐射热计原理

1. 工作原理

1
红外辐射 → 微测辐射热计吸收 → 温度变化 → 电阻变化 → 电信号 → 热图像

核心优势:

  • 无需冷却: 室温工作(对比制冷型需液氮/斯特林冷却)
  • 低功耗: <2W(对比制冷型 >10W)
  • 紧凑尺寸: 模块化设计,可嵌入座舱

2. 关键参数

参数 对 CPD 影响
NETD(噪声等效温差) <30mK 可检测呼吸温差
像元间距 12μm 分辨率提升、成本降低
分辨率 640×512 可覆盖全座舱
帧率 30-60fps 实时检测呼吸
光谱响应 8-14μm 长波红外(人体辐射峰值)

热成像 vs 雷达 vs 摄像头对比

特性 热成像 60GHz 雷达 RGB 摄像头
夜间检测 ✅ 完全有效 ✅ 有效 ❌ 需红外补光
强光检测 ✅ 完全有效 ✅ 有效 ❌ 过曝失效
穿透遮盖 ✅ 穿透毯子 ✅ 穿透毯子 ❌ 视线遮挡
隐私合规 ✅ 仅热图 ✅ 仅点云 ⚠️ 面部识别
呼吸检测 ✅ 温差变化 ✅ 微运动 ❌ 不可见
心率检测 ⚠️ 困难 ✅ 相位变化 ❌ 不可见
成本 中($100-200) 中($80-150) 低($20-50)

CPD 检测核心算法

1. 热图像预处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
"""
热成像 CPD 检测预处理算法

核心方法:
1. 温度归一化
2. 背景去除(座椅温度)
3. 热噪声滤波
"""

import numpy as np
from scipy.ndimage import median_filter

def thermal_image_preprocessing(
thermal_image: np.ndarray,
ambient_temp: float = 25.0
) -> np.ndarray:
"""
热图像预处理

Args:
thermal_image: 原始热图像, shape=(H, W), 单位:摄氏度
ambient_temp: 环境温度(座椅背景温度)

Returns:
normalized: 归一化热图像,背景已去除

CPD 应用:
去除座椅背景温度,突出人体热辐射
"""
# 1. 背景去除(减去环境温度)
background_removed = thermal_image - ambient_temp

# 2. 温度归一化(0-1)
# 人体温度范围:36-37°C(核心)→ 32-35°C(皮肤)
# 背景温度:20-30°C
min_temp = 0 # 背景温度归零
max_temp = 10 # 最大温差(人体-背景)

normalized = np.clip(background_removed, min_temp, max_temp)
normalized = (normalized - min_temp) / (max_temp - min_temp)

# 3. 热噪声滤波(中值滤波)
denoised = median_filter(normalized, size=3)

return denoised

def detect_breathing_thermal(
thermal_sequence: np.ndarray,
fps: int = 30,
threshold_temp: float = 0.5
) -> Tuple[bool, float]:
"""
从热图像序列检测呼吸

Args:
thermal_sequence: 热图像序列, shape=(N, H, W)
fps: 帧率
threshold_temp: 呼吸温差阈值(°C)

Returns:
is_breathing: 是否检测到呼吸
breathing_rate: 呼吸频率(次/分钟)

CPD 应用:
儿童呼吸特征:
- 呼吸温差:0.3-1.0°C(鼻腔/胸口)
- 呼吸频率:20-40 次/分钟
"""
# 提取温度变化区域(假设 ROI 已确定)
roi_sequence = thermal_sequence[:, 100:200, 150:250] # 示例 ROI

# 计算温度时间序列
temp_time_series = np.mean(roi_sequence, axis=(1, 2))

# 温度变化幅度
temp_variation = np.max(temp_time_series) - np.min(temp_time_series)

# 呼吸检测
is_breathing = temp_variation > threshold_temp

# 呼吸频率计算(FFT)
if is_breathing:
# 去除直流分量
temp_ac = temp_time_series - np.mean(temp_time_series)

# FFT
fft_result = np.fft.fft(temp_ac)
freqs = np.fft.fftfreq(len(temp_ac), 1.0/fps)

# 找呼吸频率峰值(0.1-0.5 Hz = 6-30 次/分钟)
breathing_band = (freqs >= 0.1) & (freqs <= 0.5)
breathing_spectrum = np.abs(fft_result[breathing_band])
peak_idx = np.argmax(breathing_spectrum)
breathing_freq = freqs[breathing_band][peak_idx]

breathing_rate = abs(breathing_freq) * 60 # Hz → 次/分钟
else:
breathing_rate = 0

return is_breathing, breathing_rate

def detect_child_presence_thermal(
thermal_image: np.ndarray,
ambient_temp: float = 25.0,
min_area: int = 500
) -> Tuple[bool, Dict]:
"""
检测儿童存在

Args:
thermal_image: 热图像
ambient_temp: 环境温度
min_area: 最小人体区域面积(像素)

Returns:
is_child: 是否检测到儿童
info: {
'body_temp': 人体温度,
'body_area': 人体面积,
'position': 位置坐标
}

CPD 应用:
儿童判定逻辑:
1. 检测到人体温度(32-37°C)
2. 人体面积小于成人(体型判断)
3. 检测到呼吸温差
"""
# 预处理
preprocessed = thermal_image_preprocessing(thermal_image, ambient_temp)

# 人体温度阈值(32-37°C)
body_temp_min = 32.0 - ambient_temp
body_temp_max = 38.0 - ambient_temp

# 温度阈值分割
body_mask = (thermal_image >= ambient_temp + body_temp_min) & \
(thermal_image <= ambient_temp + body_temp_max)

# 连通区域分析
from scipy.ndimage import label
labeled, num_features = label(body_mask)

# 找最大连通区域
if num_features > 0:
region_sizes = np.bincount(labeled.ravel())[1:] # 排除背景
largest_region_label = np.argmax(region_sizes) + 1

# 区域面积
body_area = region_sizes[largest_region_label - 1]

# 区域温度
region_mask = labeled == largest_region_label
body_temp = np.mean(thermal_image[region_mask])

# 位置
y_coords, x_coords = np.where(region_mask)
position = (int(np.mean(x_coords)), int(np.mean(y_coords)))

# 儿童判定(体型小)
is_child = body_area > min_area and body_area < 3000 # 成人面积 >3000px

return is_child, {
'body_temp': body_temp,
'body_area': body_area,
'position': position
}

return False, {}

# 实际测试代码
if __name__ == "__main__":
# 模拟热图像数据
H, W = 320, 240

# 模拟背景(25°C)
background = np.ones((H, W)) * 25.0

# 模拟儿童(35°C,小面积)
child_thermal = background.copy()
child_thermal[100:150, 120:160] = 35.0 # 儿童区域

# 添加噪声
noise = np.random.randn(H, W) * 0.2
child_thermal += noise

# 检测儿童
is_child, info = detect_child_presence_thermal(child_thermal)

print("="*60)
print("热成像 CPD 儿童检测测试")
print("="*60)
print(f"检测到儿童: {is_child}")
print(f"人体温度: {info.get('body_temp', 0):.1f}°C")
print(f"人体面积: {info.get('body_area', 0):.0f} 像素")
print(f"位置: {info.get('position', (0, 0))}")

主流热成像模块对比

模块 分辨率 NETD 像元间距 价格 适用场景
Jenoptik EVIDIR alpha 640×512 <30mK 12μm $150-200 高端 CPD
SensorMicro TIMO212 384×288 <50mK 17μm $80-120 中端 CPD
FLIR Lepton 3.5 160×120 <50mK 17μm $200-250 开发板

车规级热成像模块要求

要求 参数 验证标准
工作温度 -40°C ~ +85°C AEC-Q100
抗震 5g @ 10-2000Hz ISO 16750
EMC 100V/m CISPR 25
寿命 >10年 MTBF >50000h

与 60GHz 雷达融合方案

graph TD
    A[热成像模块] --> B[人体温度检测]
    C[60GHz雷达] --> D[微运动检测]
    
    B --> E[融合判定]
    D --> E
    
    E --> F{儿童存在?}
    F -->|是| G[CPD触发]
    F -->|否| H[空座判定]
    
    G --> I[一级警告]
    I --> J[车门锁定]
    I --> K[鸣笛警报]

融合优势

指标 热成像单独 雷达单独 融合方案
检测精度 95% 98% 99.5%
误报率 5% 2% <0.5%
穿透毯子
心率检测
成本 $150 $100 $250

Euro NCAP CPD 合规性

要求 热成像支持 雷达支持 融合方案
检测精度 ≥99.9% ⚠️ 95% ✅ 98% ✅ 99.5%
穿透遮盖
响应时间 ≤60s ✅ 实时 ✅ 实时 ✅ 实时
误报率 <0.1% ⚠️

结论:热成像单独方案达不到 Euro NCAP 要求,必须与雷达融合。


数据来源


IMS 开发启示

  1. 热成像必须与雷达融合: 单独方案精度和误报率达不到 Euro NCAP 要求
  2. 热成像优势是夜间/强光: 补充雷达在极端光照条件下的检测能力
  3. NETD <30mK 是关键参数: 必须能检测呼吸温差(0.3-1.0°C)
  4. 12μm 像元工艺降低成本: 相比 17μm,成本降低 >30%
  5. 隐私合规优势: 热图像无面部识别,比 RGB 摄像头更易通过隐私审查

总结: 非制冷微测辐射热计热成像技术为 CPD 提供了全天候检测方案,NETD <30mK 可检测呼吸温差,12μm 像元工艺降低成本。但单独方案精度和误报率达不到 Euro NCAP 要求,必须与 60GHz 雷达融合,形成温度检测 + 微运动检测的双重验证,实现 99.5% 检测精度和 <0.5% 误报率。热成像在夜间/强光场景补充雷达,并具有隐私合规优势。


热成像 CPD 儿童检测:非制冷微测辐射热计技术方案详解
https://dapalm.com/2026/07/10/2026-07-10-thermal-imaging-cpd-child-detection-uncooled-microbolometer/
作者
Mars
发布于
2026年7月10日
许可协议