PixExpo像素级曝光:如何从硬件层面突破车内rPPG的HDR光照瓶颈

PixExpo像素级曝光:如何从硬件层面突破车内rPPG的HDR光照瓶颈

论文信息

项目 内容
标题 Pixel-wise Exposure for Highly Robust In-Vehicle Remote-PPG
作者 Jieying Wang, Xinqi Cai, Caifeng Shan, Wenjin Wang
机构 山东科技大学 + 南方科技大学 + 南京大学
发表 arXiv:2609.36607, 2026年9月
链接 https://arxiv.org/abs/2609.36607
数据集 MEX-Drive (48人, 实车驾驶)

核心创新

首次识别 全局曝光约束 是rPPG鲁棒性的 硬件级瓶颈:当车舱内存在强方向性阳光时,单帧统一曝光导致部分面部像素过曝或欠曝,生理信号在采集时即被物理性丢失,任何下游算法都无法恢复。

PixExpo方案:循环多曝光采集 → 像素级非迭代融合 → 无需传感器硬件改动。

性能飞跃:MAE从13.94→6.73 bpm(降低7.21 bpm),成功率从25.95%→63.24%(+37.29个百分点)。

1. 问题定义

1.1 车舱HDR光照挑战

场景 光照条件 rPPG影响
侧向阳光 半脸过曝/半脸欠曝 过曝侧信号丢失
隧道进出口 瞬间明暗切换 AE追不上→信号中断
日落眩光 局部高光 面部饱和区域失效
树荫斑驳 明暗条纹 部分区域不可用

1.2 核心洞察

“This imaging-source signal loss is a pure hardware/physical limitation that cannot be compensated, recovered, or repaired by any rPPG extraction or enhancement algorithms—once the photon-level information is lost due to sensor saturation, all subsequent post-processing efforts are futile.”

这是硬件级限制,不是算法问题。 传统思路是改进rPPG算法,但PixExgo指出根源在采集端。

2. PixExpo方法

2.1 “时间换空间”策略

1
2
3
4
5
6
传统单曝光:  [Frame1: E=10ms] → [Frame2: E=10ms] → ...
↑ 整帧同一曝光时间

PixExpo: [Frame1: E=5ms] → [Frame2: E=10ms] → [Frame3: E=20ms] → [Frame4: E=40ms] → 重复
↓ 像素级融合 ↓
Fused Frame: 每个像素取最佳曝光的观测

2.2 融合准则

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
import numpy as np

class PixExpo:
"""
PixExpo: 像素级多曝光融合

核心: 对每个像素,从K帧不同曝光中选择最接近
rPPG目标强度的观测值

rPPG目标强度: 避免饱和(255)和严重欠曝(<30)
最优区间: [50, 200] → 信号SNR最高
"""

def __init__(self, n_exposures: int = 6, target_range: tuple = (50, 200)):
self.n_exposures = n_exposures
self.target_low, self.target_high = target_range
self.target_mid = (target_range[0] + target_range[1]) / 2

def fuse_frames(self, multi_exposure_frames: np.ndarray) -> np.ndarray:
"""
像素级融合多曝光帧

Args:
multi_exposure_frames: (K, H, W, C) K帧不同曝光的图像

Returns:
fused: (H, W, C) 融合后图像
"""
K, H, W, C = multi_exposure_frames.shape

# 计算每个像素到目标强度的距离(在绿色通道上,rPPG最敏感)
green_channel = multi_exposure_frames[:, :, :, 1] # (K, H, W)

# 距离度量: 到目标中值的距离
distances = np.abs(green_channel - self.target_mid)

# 饱和惩罚: >250或<30的像素距离设为无穷大
saturated = (green_channel > 250) | (green_channel < 30)
distances[saturated] = 1e6

# 对每个像素选择距离最小的曝光帧
best_idx = np.argmin(distances, axis=0) # (H, W)

# 构建融合帧
fused = np.zeros((H, W, C), dtype=multi_exposure_frames.dtype)
for c in range(C):
for k in range(K):
mask = (best_idx == k)
fused[:, :, c][mask] = multi_exposure_frames[k, :, :, c][mask]

return fused

def compute_exposure_schedule(
self,
base_exposure: float = 10.0, # ms
n_levels: int = 6
) -> list:
"""
生成循环曝光时间表

策略: 以基线曝光为中心,几何倍数扩展
覆盖从短曝(防过曝)到长曝(防欠曝)的全范围
"""
# 几何序列: 1/8, 1/4, 1/2, 1, 2, 4 倍基线
ratios = [2**i for i in range(-(n_levels//2), n_levels//2 + 1)][:n_levels]
exposures = [base_exposure * r for r in ratios]
return sorted(exposures)

def estimate_frame_rate(
self,
exposures: list,
readout_time: float = 2.0 # ms per frame
) -> float:
"""
估算有效帧率

一个完整循环 = K帧 × (曝光+读出)
有效rPPG帧率 = 1 / 循环时间
"""
cycle_time = sum(exposures) + len(exposures) * readout_time
effective_fps = 1000.0 / cycle_time
return effective_fps


# 测试
if __name__ == "__main__":
pixexpo = PixExpo(n_exposures=6)

# 生成曝光时间表
exposures = pixexpo.compute_exposure_schedule(base_exposure=10.0)
print("=== 曝光时间表 ===")
for i, e in enumerate(exposures):
print(f" Level {i}: {e:.1f} ms")

# 估算帧率
fps = pixexpo.estimate_frame_rate(exposures)
print(f"\n有效rPPG帧率: {fps:.1f} fps")

# 模拟多曝光融合
rng = np.random.default_rng(42)
K, H, W, C = 6, 100, 100, 3

# 模拟HDR场景: 左半过曝, 右半欠曝
frames = np.zeros((K, H, W, C), dtype=np.uint8)
for k in range(K):
frame = np.zeros((H, W, C), dtype=np.uint8)
# 左半: 随曝光增加而更亮
frame[:, :W//2, :] = int(50 + k * 40)
# 右半: 随曝光增加而从暗变亮
frame[:, W//2:, :] = int(10 + k * 45)
frames[k] = frame

fused = pixexpo.fuse_frames(frames)

print(f"\n=== 融合结果 ===")
print(f"左半区域均值: {fused[:, :W//2, 1].mean():.1f} (目标: {pixexpo.target_mid})")
print(f"右半区域均值: {fused[:, W//2:, 1].mean():.1f} (目标: {pixexpo.target_mid})")
print(f"融合后整体: 均值={fused[:,:,1].mean():.1f}, 标准差={fused[:,:,1].std():.1f}")

2.3 rPPG目标导向的融合准则

关键设计:不是优化图像美观,而是优化rPPG信号质量。

准则 传统MEF PixExpo
目标 视觉感知质量 脉搏信号SNR
目标强度 感知最佳~128 rPPG最佳[50,200]
饱和处理 软约束 硬排除
欠曝处理 软约束 硬排除
延迟 迭代搜索 非迭代预设循环

3. MEX-Drive数据集

3.1 数据集规格

参数 数值
参与者 48人
环境 实车驾驶(非模拟器)
曝光级别 6级同步多曝光
真值 临床级ECG
年龄分布 20-65岁
场景 含隧道/侧光/树荫等HDR场景

3.2 与现有数据集对比

数据集 参与者 环境 多曝光 ECG真值 HDR场景
MPIIFaceGaze 15 室内 ❌ ❌ ❌
PhysDrive 48 实车 ❌ ✅ 部分
MEX-Drive 48 实车 ✅ 6级 ✅ 临床级 ✅ 专门设计

4. 实验结果

4.1 主要性能

方法 MAE (bpm) 成功率(%) 说明
厂商默认AE 13.94 25.95% 基线
固定曝光 15.20 20.00% 更差
PixExpo 6.73 63.24% +37.29pp

4.2 场景分析

场景 AE MAE PixExpo MAE 改善
隧道进出口 18.5 7.2 -11.3
侧向阳光 16.2 5.8 -10.4
树荫斑驳 12.1 4.5 -7.6
均匀光照 8.3 3.1 -5.2
夜间(IR) 5.5 3.8 -1.7

HDR场景改善最大 — 正是PixExpo设计目标。

5. IMS开发启示

5.1 硬件需求评估

需求 当前DMS摄像头 PixExpo要求
可编程曝光 部分支持 帧级曝光控制
帧率 30fps 需>120fps(6级×20fps有效)
同步 N/A 曝光-帧关联准确
传感器 固定 无需改动
接口 专有 工业级API

5.2 量产可行性评估

方案 可行性 成本 效果
工业级摄像头 ✅ 已有 $5-10增量 最佳
消费级+API ⚠️ 需验证 $0 中等
固定曝光+软件 ❌ 不可行 $0 无法解决物理限制
双摄像头HDR ✅ 替代 $10-15 类似效果

5.3 rPPG在DMS中的价值链

graph TD
    A[摄像头采集] --> B{曝光质量}
    B -->|差| C[信号丢失→心率不可用]
    B -->|好| D[rPPG提取]
    D --> E[心率+HRV]
    E --> F[疲劳检测补充]
    E --> G[压力检测]
    E --> H[酒驾辅助]
    
    I[PixExpo] --> B
    
    style B fill:#ff9,stroke:#333
    style I fill:#9f9,stroke:#333

5.4 与Euro NCAP的关联

Euro NCAP 2026 OMS虽未强制rPPG,但:

  • 疲劳检测场景中 心率变化是重要补充信号
  • 未来NCAP版本可能纳入 生理信号监测
  • PixExpo为量产rPPG提供了 硬件层面可行性证明

6. 总结

PixExpo的贡献是 范式级 的:

  1. 识别了被忽视的硬件瓶颈 — 全局曝光约束是rPPG鲁棒性上限
  2. 时间换空间策略 — 无需传感器改动,纯软件+可编程曝光
  3. rPPG导向准则 — 不优化图像美观,优化信号质量
  4. MEX-Drive数据集 — 首个多曝光rPPG实车基准
  5. MAE 13.94→6.73 — HDR场景从几乎不可用到基本可用

对IMS团队:

  • 评估 现有DMS摄像头是否支持帧级曝光编程
  • 原型 在隧道/侧光场景测试rPPG失败率
  • 如果失败率高 → 评估PixExpo或双摄HDR方案
  • 如果可接受 → 继续用IR rPPG(红外不受可见光HDR影响)

论文: https://arxiv.org/abs/2609.36607
数据集: MEX-Drive (48人, 6级多曝光, 实车)


PixExpo像素级曝光:如何从硬件层面突破车内rPPG的HDR光照瓶颈
https://dapalm.com/2026/10/08/2026-10-08-021-pixexpo-pixel-wise-exposure-rppg-arxiv2026/
作者
Mars
发布于
2026年10月8日
许可协议