低成本眼动注视分析-卡尔曼滤波+OPTICS实现DMS软件升级

前言

传统眼动追踪设备价格昂贵($1,000-$70,000),难以大规模集成到量产车辆。卡尔斯鲁厄理工学院(KIT)与保时捷工程合作,提出了一种仅使用普通RGB摄像头的软件方案,通过卡尔曼滤波和OPTICS聚类提取注视特征,为现有DMS提供低成本升级路径。

一、问题背景

1.1 传统眼动追踪的局限

方案 成本 集成难度
专业眼动仪(眼镜式) $1,000-$70,000
红外专用设备 $100+
普通RGB摄像头 已有

1.2 研究目标

核心问题:能否使用现有DMS的普通RGB摄像头,通过纯软件升级提取可靠的注视特征?

关键挑战

  • 标准摄像头精度有限
  • 环境光照变化影响
  • 头部运动干扰

二、技术方案

2.1 流水线架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌──────────────────────────────────────────────┐
│ 低成本注视分析流水线 │
├──────────────────────────────────────────────┤
│ │
│ RGB摄像头 → MediaPipe → 面部+瞳孔关键点 │
│ ↓ │
│ 卡尔曼滤波去噪 │
│ ↓ │
│ OPTICS聚类识别注视中心 │
│ ↓ │
│ 仿射归一化补偿 │
│ ↓ │
│ 注视片段输出 │
│ │
└──────────────────────────────────────────────┘

2.2 核心算法

(1) MediaPipe关键点检测

1
2
输入:RGB视频帧
输出:468个面部关键点 + 瞳孔中心

优势

  • 开源免费
  • 实时性能好
  • 普通摄像头即可运行

(2) 卡尔曼滤波去噪

问题:MediaPipe输出的关键点存在抖动(jitter)

解决方案

1
2
3
4
5
6
7
8
9
# 卡尔曼滤波状态向量
x = [x_pos, y_pos, x_vel, y_vel] # 位置+速度

# 预测步骤
x_pred = A @ x # A为状态转移矩阵

# 更新步骤
K = P @ H.T @ inv(H @ P @ H.T + R) # 卡尔曼增益
x = x_pred + K @ (z - H @ x_pred) # 状态更新

效果:显著减少关键点抖动,提高稳定性

(3) OPTICS聚类识别注视中心

OPTICS(Ordering Points To Identify the Clustering Structure)

优势

  • 不需要预设聚类数量
  • 可识别不同密度的聚类
  • 适合眼动数据的复杂分布

工作原理

1
滑动窗口内的瞳孔位置点 → OPTICS聚类 → 识别注视中心

(4) 仿射归一化补偿

目的:补偿头部运动和摄像头几何变化

1
P_normalized = A @ P + b  # 仿射变换

效果:进一步提高参考系下的瞳孔稳定性


三、实验验证

3.1 实验设置

设备:笔记本电脑摄像头(普通RGB)
环境:实验室桌面设置
任务:观看关键点和分散注意力的视觉刺激

3.2 性能指标

指标 结果
关键点抖动减少 ✅ 显著改善
注视中心稳定性 ✅ 更稳定
参考系瞳孔稳定性 ✅ 仿射归一化进一步提升
计算开销 ⭐ 极低

3.3 关键发现

  1. 卡尔曼+OPTICS组合效果最佳

    • 单独使用任一方法效果有限
    • 组合使用显著提升稳定性
  2. 仿射归一化是关键

    • 补偿头部运动影响
    • 提高跨帧一致性
  3. 软件升级可行

    • 可在现有DMS上实现
    • 无需硬件改动

四、与Euro NCAP对齐

4.1 功能覆盖

Euro NCAP要求 本方案支持
眼动追踪 ✅ 注视点检测
分心检测 ⚠️ 需结合阈值判断
注意力分析 ⚠️ 注视特征可作为输入

4.2 GSR法规

法规 要求 支持程度
DDAW (2024.07) 困倦检测 ✅ 闭眼检测
ADDW (2026.07) 分心警告 ⚠️ 需要扩展

五、IMS开发启示

5.1 技术路线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
┌─────────────────────────────────────────┐
│ 注视分析部署路径 │
├─────────────────────────────────────────┤
│ │
│ 阶段1:基础注视检测 │
│ ├─ MediaPipe关键点提取 │
│ └─ 简单阈值判断 │
│ │
│ 阶段2:稳定性增强 │
│ ├─ 卡尔曼滤波去噪 │
│ └─ 滑动窗口平均 │
│ │
│ 阶段3:注视分析 │
│ ├─ OPTICS聚类 │
│ └─ 仿射归一化 │
│ │
│ 阶段4:认知状态推断 │
│ ├─ 注视模式分析 │
│ └─ 认知负荷评估 │
│ │
└─────────────────────────────────────────┘

5.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
import mediapipe as mp
import numpy as np
from sklearn.cluster import OPTICS

class FixationAnalyzer:
def __init__(self):
self.face_mesh = mp.solutions.face_mesh.FaceMesh(
refine_landmarks=True
)
self.kalman = self.init_kalman_filter()
self.pupil_history = []

def process_frame(self, frame):
# 1. MediaPipe关键点检测
results = self.face_mesh.process(frame)
pupil_center = self.extract_pupil(results)

# 2. 卡尔曼滤波去噪
filtered = self.kalman_update(pupil_center)

# 3. 滑动窗口OPTICS聚类
self.pupil_history.append(filtered)
if len(self.pupil_history) > 30: # 1秒窗口
self.pupil_history.pop(0)

# 4. 注视中心识别
fixation = self.optics_cluster()
return fixation

def optics_cluster(self):
if len(self.pupil_history) < 10:
return None

clustering = OPTICS(min_samples=5).fit(
np.array(self.pupil_history)
)
# 返回主聚类中心
return self.get_cluster_center(clustering)

5.3 部署建议

平台 推荐配置
高通8255 MediaPipe GPU加速
TI TDA4 MediaPipe + DSP加速
Raspberry Pi MediaPipe CPU(降低帧率)

六、局限性与未来工作

6.1 当前局限

挑战 说明
光照敏感性 RGB摄像头在弱光下表现差
头部运动 大幅头部运动仍影响稳定性
人群验证 当前仅限实验室环境

6.2 改进方向

方向 方案
光照适应 近红外(NIR)摄像头
自适应校准 在线学习个体特征
广泛验证 跨人群、环境、摄像头测试

七、总结

关键成果

成果 说明
成本降低 仅用普通RGB摄像头
纯软件升级 无需硬件改动
实时性能 计算开销极低
注视稳定 卡尔曼+OPTICS组合有效

开发建议

优先级 功能 方案
P0 MediaPipe关键点 直接集成
P1 卡尔曼滤波 稳定性增强
P2 OPTICS聚类 注视分析
P3 认知推断 需要验证

论文信息

  • 标题:Low-Cost Eye-Tracking Fixation Analysis for Driver Monitoring Systems Using Kalman Filtering and OPTICS
  • 作者:Karlsruhe Institute of Technology, Porsche Engineering
  • 发布:Sensors, November 2025

发布日期:2026-03-13


低成本眼动注视分析-卡尔曼滤波+OPTICS实现DMS软件升级
https://dapalm.com/2026/03/13/2026-03-13-Low-Cost-Eye-Tracking-Fixation/
作者
Mars
发布于
2026年3月13日
许可协议