2025年9月-2025年10月

Eye Touch-实时眼动追踪与注视控制系统

可穿戴电子技术 - 课程设计

软件系统开发MediaPipeScikit-learn
Eye Touch-实时眼动追踪与注视控制系统
点击查看大图

项目资源

完整的Python源代码、数据库文件、配置文件等已上传至GitHub仓库。同时提供exe安装包,包含完整的运行环境,无需额外配置即可使用。

团队信息

指导老师

陈文彬教授(光电信息科学与工程学院,UESTC)

团队成员

  • 我 - 软件系统开发,人机交互功能
  • 吴彦博(光电科学与工程学院,UESTC) - 瞳孔中心识别算法
  • 文孙治(光电科学与工程学院,UESTC) - 轨迹识别与校准

项目背景

眼动追踪技术在人机交互、医学诊断、心理学研究等领域拥有巨大潜力,但传统方案往往依赖昂贵的专用硬件(如Tobii眼动仪,价格数千美元),这严重限制了其普及和应用。

我们的项目源于一个大胆的想法:能否仅依赖普通笔记本摄像头和先进的软件算法,构建一套低成本、易于实现的眼动追踪系统?这个想法在"可穿戴电子技术"课程中萌发,我们希望通过这个项目,降低眼动追踪技术的应用门槛,为教学演示、辅助交互设计以及低预算的科学研究提供一种可行的解决方案。

项目核心目标是实现从"像素到意图"的转换:通过摄像头捕获眼部图像,识别瞳孔位置,建立坐标映射关系,实现眼神与屏幕坐标的精确对应,最终构建完整的眼动交互系统。

低成本解决方案

仅需普通笔记本摄像头,无需昂贵专用硬件,大幅降低眼动追踪技术应用门槛

独立进程架构

通过独立进程架构解决DLL冲突,高精度校准算法,实现实时眼动追踪

多领域应用

无障碍辅助、HCI研究、游戏娱乐、教育培训等多领域应用价值

数据缓存

支持最近一次校准数据的本地缓存,避免重复校准,提高系统效率

系统架构

在项目初期,我们遇到了一个棘手的问题:界面库 PyQt6 与视觉处理库 MediaPipe 存在严重的DLL冲突。两者都依赖不同版本的C++运行时库,导致在同一进程中初始化MediaPipe时程序会立即崩溃。这是一个架构层面的障碍,必须首先解决。

面临的核心挑战:DLL冲突

问题现象:程序启动后立即崩溃,错误信息:"DLL load failed"

根本原因:两者都依赖不同版本的C++运行时库,无法在同一进程中加载

我们的解决方案:独立进程架构

为了彻底隔离冲突,我设计了一套独立进程架构。主进程专门负责UI渲染和用户交互,而将所有计算密集型和存在冲突的视觉处理任务都放到一个独立的子进程中。

通信流程设计

主进程启动子进程,子进程初始化MediaPipe,JSON格式状态通信,主进程更新UI显示。

通信流程设计

python

架构优势

稳定性:即使子进程因算法错误崩溃,主UI进程依然稳定。可以向用户提供友好的错误提示并尝试重启追踪。性能优化:UI渲染和计算处理分离,避免阻塞。可扩展性:易于添加新的算法模块或功能组件。

算法原理

眼动追踪的核心问题是:如何将摄像头画面中瞳孔的坐标转换为用户在屏幕上的注视点坐标?这涉及到复杂的非线性映射关系。摄像头角度、透镜畸变、眼球曲率等因素都使这个转换变得极其复杂。

第一步:瞳孔检测算法

我们设计了一套双重保障的稳健检测流程:

第一步:瞳孔检测算法

python

关键技术包括:Otsu自适应阈值自动确定最佳分割阈值,适应不同光照条件;形态学操作去除睫毛、反光等噪声干扰;轮廓质心法精确定位瞳孔边界,计算几何中心;备用强度加权质心法,确保复杂条件下仍能输出结果。

第二步:5×5网格校准系统

我们采用了机器学习的方法建立坐标映射关系。通过25个校准点(5×5网格),引导用户依次注视每个红点,在每个点采集55帧图像,计算平均瞳孔坐标。

第三步:多项式回归建模

基于校准数据,我们使用2次多项式回归拟合这种非线性映射关系:

第三步:多项式回归建模

python

核心特性:归一化处理将摄像头坐标归一化到0-1范围,提高数值稳定性;特征扩展从[x, y]扩展到[1, x, y, x², xy, y²],6个特征;独立建模分别对x和y坐标建立回归模型;模型持久化保存校准数据,避免重复校准。

第四步:卡尔曼滤波平滑

原始追踪结果会有抖动,我们引入卡尔曼滤波器进行平滑处理:

第四步:卡尔曼滤波平滑

python

优化效果:状态变量[x, y, vx, vy]包含位置和速度;运动模型匀速运动假设,预测下一帧位置;观测融合结合预测值和实际观测值;实时效果抖动从±50像素降到±10像素。

核心功能展示

现代化主界面

我采用了Fluent Design风格,为系统设计了一个现代化且信息清晰的主界面。用户可以直观地看到摄像头和算法状态,并一键启动核心功能。界面设计时特别考虑了用户体验,添加了欢迎窗口、状态监控和友好的提示信息。

界面风格Fluent Design
状态监控实时显示摄像头和算法状态
快速访问一键启动追踪和控制

摄像头检查系统

在开始眼动追踪之前,系统会先进行摄像头检查,确保摄像头能够正常开启并工作。这是后续所有功能的前提条件,包括实时预览、瞳孔检测状态监控等。如果摄像头无法正常工作,系统会提供详细的错误信息和解决建议。

实时预览摄像头画面实时显示
状态监控瞳孔检测状态实时反馈
错误处理详细的错误诊断和解决建议

智能校准系统

这是眼动追踪的第一步,也是最关键的一步。我们设计的5×5网格校准系统能引导用户快速完成数据采集,为后续精准追踪打下坚实基础。每个校准点会采集55帧数据求平均,确保数据的稳定性和准确性。

校准点数25个点(5×5网格)
采样数量每点55个样本
回归算法2次多项式回归

实时轨迹显示

校准完成后,系统便能实时追踪用户的注视点。我特别设计了轨迹淡化效果,新轨迹清晰,旧轨迹渐隐,视觉效果流畅且不杂乱。同时加入了卡尔曼滤波器来平滑轨迹,消除高频抖动,让用户体验更加自然。

渲染帧率100 FPS
轨迹长度128个点
滤波算法卡尔曼滤波

注视控制系统

这是将追踪转化为交互的关键。我们设计了9宫格布局,用户只需注视某个功能块3秒,即可启动对应的应用程序,实现了真正的"眼神操作"。为了避免误触发,我们还加入了进度条反馈,让用户知道还需要多久才能触发操作。

控制区域9宫格布局
触发时间3秒停留
支持应用QQ、微信、相机等

眼动井字棋游戏

为了展示眼动交互的趣味性和实用性,我开发了一个井字棋游戏。玩家通过注视棋盘落子,与一个简单的AI对战。这是一个很好的概念验证,展示了技术在无障碍娱乐领域的潜力,也为后续开发更复杂的眼动游戏提供了基础。

游戏类型井字棋
控制方式眼神注视
对手类型AI智能

系统设置

提供完整的系统配置功能,包括窗口模式、界面风格、应用程序路径等。用户可以根据自己的需求进行个性化设置,支持全屏模式和自适应模式切换,提供了良好的可定制性。

窗口模式全屏/自适应
应用配置自定义路径
保存设置下次启动时自动应用

量化指标

我们对系统进行了全面的性能测试和用户体验评估,通过多维度指标验证系统的技术水平和实用性。

技术指标对比

经过多轮测试和优化,我们的系统在关键技术指标上达到了预期,甚至在某些方面有所超越。

技术指标
期望数值
实际数值
备注
标定速度
≤ 15s
~20s
牺牲部分速度以换取更高的数据采集精度
响应速度
≤ 5s
~3s
达到优秀识别准度所需的平均时间
识别准度
≤ 50px
≤ 20px
60帧内平均像素误差,优于预期
稳定性
±20°头部旋转,准确率下降≤5%
影响很小
实现了利用头动辅助眼动追踪

性能测试指标

追踪帧率30 FPS
轨迹渲染100 FPS
平均误差< 50px
处理延迟< 30ms

精度分析

通过在屏幕不同区域放置固定点进行精度测试,我们发现系统在不同区域的误差分布:

中心区域
≤ 20px
边缘区域
≤ 50px
角落区域
≤ 80px

稳定性测试

通过长时间运行测试和环境适应性测试,我们验证了系统的稳定性和可靠性:

连续运行时间
> 1小时无崩溃
头部运动适应
±20°旋转,准确率下降 < 5%
光照适应性
正常室内光照,成功率 > 95%
误触发率
< 1%(注视控制系统)

问题解决

在开发过程中,我们遇到了多个技术难题,通过深入分析和创新思维,最终找到了有效的解决方案,这些经验也为类似项目提供了宝贵的参考。

瞳孔识别准确性低

问题描述:初期的外接圆与椭圆近似算法对反光和噪声敏感,导致瞳孔识别准确率不稳定。

解决方案:改用基于图像矩的质心法,并结合自适应阈值与形态学滤波进行双重保障,显著提升了准确性。

技术亮点:实现了对光照变化的自适应调整,提高了系统的鲁棒性。

DLL冲突导致崩溃

问题描述:MediaPipe与PyQt6底层库冲突,无法在同一进程共存,导致系统频繁崩溃。

解决方案:我设计的双进程隔离架构,通过JSON通信,从根源上解决了问题,保证了系统稳定性。

技术亮点:创新的进程间通信机制,实现了不同技术栈的完美融合。

摄像头资源释放失败

问题描述:Windows系统不支持多模块同时调用同一摄像头,导致资源冲突和功能切换失败。

解决方案:实现了动态资源管理,在切换功能时先释放再请求,并加入了10次重试机制,确保摄像头能被成功调用。

技术亮点:智能重试机制和资源管理策略,确保了系统的可靠性。

完整效果演示

Eye Touch 眼动交互系统完整效果演示

演示内容

系统启动与主面介绍

人性化的主界面设计,系统功能一目了然

5×5网格校准过程

智能校准系统快速完成数据采集

实时眼动追踪效果

100 FPS超流畅轨迹渲染显示

注视控制操作演示

9宫格布局实现眼神操作

眼动游戏体验

井字棋游戏展示交互潜力

系统设置与配置

完整的个性化配置功能

项目总结

通过这个项目,我们成功证明了仅依赖普通笔记本摄像头和软件算法就能构建一套可用的眼动追踪系统。从最初的课程设计想法到最终的完整系统,我们不仅解决了技术难题,还探索了人机交互的新可能性。

完成时间2025年10月16日
项目成绩92
课程成绩93

项目收获与启发

技术创新突破

技术亮点:独立进程架构解决DLL冲突,高精度校准算法,100 FPS超流畅渲染,展现了从像素到意图的完整技术链条。

创新价值:双进程隔离架构的创新设计,为类似技术栈融合问题提供了有效解决方案。

用户体验优化

设计理念:Fluent Design界面,智能校准系统,直观的注视控制操作,为无障碍技术发展提供了新的可能性。

用户价值:降低了眼动追踪技术的使用门槛,让更多用户能够体验到眼动交互的便利性。

应用价值体现

应用领域:无障碍辅助、HCI研究、游戏娱乐、教育培训等多领域应用,为眼动追踪技术的低成本应用奠定了基础。

社会意义:为残障人士提供了新的交互方式,推动了无障碍技术的发展和应用。

感谢队友的共同努力,我即将在陈文彬教授的指导下,研究实时眼动追踪技术来完成毕业设计。