视线跟踪算法的GPU加速
2010年5月-9月,参加了2010 AMD 中国高校加速计算竞赛,参赛作品是在GPU上实现视线跟踪算法,最终我们实现的结果是在GPU上的加速性能是CPU上的14倍。
摘 要:视线跟踪技术是一种重要的人机交互方式,而定标算法是视线跟踪系统中的关键技术。本方案设计了一种基于非均匀样本插值的视线跟踪系统。在近红外光源照射下采集到实验者的眼动视频,通过图像处理技术对视频进行处理,获得瞳孔边缘轮廓;然后利用椭圆拟合算法计算出瞳孔中心坐标;最后应用基于非均匀样本插值算法,计算出实验者注视点在屏幕上的真实位置,实现视线的跟踪。该算法简单、高效、准确度高。论文给出了该算法分别在CPU和AMD公司提供的GPU上的实现,对比了处理时间,结果显示,GPU加速性能显著,对该算法实时性能有很大提高,具有很好的应用价值。
关键词: 视线跟踪、边缘检测、非均匀插值、GPU算法加速
1. 系统框架
本系统视线跟踪过程包括视频采集、对视频进行预处理、瞳孔边缘提取、瞳孔中心提取,定标,从而实现视线的跟踪。其中眼睛图像和屏幕注视点之间的定标技术是视线跟踪系统中的关键技术。系统流程图如下:
2. 系统软件设计
视线跟踪系统的软件设计包含以下部分:视频预处理,瞳孔边缘提取,瞳孔中心提取,非均匀插值视线跟踪算法进行瞳孔中心与屏幕点的映射。
CPU平台下的算法流程图如下:
GPU平台下的算法流程图:
3. 系统演示软件
该系统软件的演示界面如下:
该界面主要分为4个部分,显示窗口区域,显示结果区域,视频采集控制区和视频处理控制区。显示窗口区域主要是显示原图像或视频和显示处理结果。图像采集控制区主要是一些控制采集图像,或者视频已经保存图像视频的按钮。图像处理控制区主要是一些处理图像视频的按钮。显示结果区域可以实时显示瞳孔中心的拟合结果以及注视点的估计误差。
对7个注视点的估计结果:
系统软件的使用基本介绍:
(1) “打开文件”按钮可以打开已有的图像或是视频源(图像格式是bmp,视频格式是avi)并且显示打开的图像文件,如果是视频就显示第一帧。
(2)“显示视频”按钮可以显示视频,但要求输入合适的帧范围。
(3)“瞳孔定位”按钮可以实时定位视频源中的瞳孔中心。如果设置开始帧和结束帧为同一帧的话,那么此按钮相当于对单帧进行瞳孔定位。
(4)“视频处理”按钮可以对视频中瞳孔进行椭圆拟合得到其中心的坐标,并通过非均匀插值算法得到注视点的估计值,要求设置合适的帧范围。
(5)“显示注视点坐标”按钮能在显示结果框中显示注视点的估计结果和注视点的真实值,同时在显示视频框中显示原始注视视频。
(6) “显示数据”复选框可以显示瞳孔中心的坐标(以像素为单位),也可以显示注视点的估计值与真实值之间的误差(单位是厘米cm)。
(7)“系统初始化”按钮对系统的一些全局变量的重新初始化。
(8)由于对缺少显卡的信息,所以对程序中的“采集视频”,“采集单帧图像”,“保存图片/视频”的按钮的功能未开发。
4. 系统仿真结果
(1)算法在GPU执行的加速性能与在CPU上的比较
多次实验表明,用于该系统的算法可以在AMD公司提供的GPU上顺利实现,并且相对于CPU的实现,在速度上有明显地提高。在此,我们以对单帧图像的边缘检测和对多帧图像的视线估计为例来说明该算法在GPU上的加速能力。
对一帧图像进行边缘检测,该处理过程在CPU上的执行时间0.462945秒,而在GPU上的执行时间为0.0146881秒,其在GPU上的处理速度大约为在CPU上的31.5倍,如下所示:
对1040个帧图像进行处理,估计观测者在屏幕上注视的实际位置。如下图所示,在GPU上的运行时间为41.0694秒,在CPU上的运行时间为517.351秒。相比于CPU上的实现,该算法在GPU上的实现速度提高了大约14倍。
5. 结论
本方案设计了一种基于非线性插值的视线跟踪系统。本系统首先通过图像处理获得瞳孔中心位置,将瞳孔中心坐标和屏幕参考点坐标对应起来,然后利用非均匀样本插值的思想,确定注视点在屏幕上的位置,达到了视线跟踪的目的。仿真结果表明,该算法在GPU上的实现相比于在CPU上的实现具有较好的加速性能,并且该算法能够较为精确地进行视线估计、定标过程简单,容易操作,所以可以与DSP等技术相结合,用于开发成本低、非接触式的高精度实时视线跟踪系统。接下来的工作是在GPU上优化代码,使得加速性能进一步提高。