基于OpenCV的嵌入式人眼追踪系统研究

2014-12-18 11:39胡玉峰
电子科技 2014年9期
关键词:人眼分类器嵌入式

胡玉峰

(兰州交通大学电子与信息工程学院,甘肃兰州 730070)

随着图像处理技术的快速发展,一种可作为设备输入,精度更高、速度更快的视觉追踪系统受到人们的重视。该系统可帮助残疾人方便地使用输入设备、简化计算机操作人员的工作量、工作更有效。同时由系统收集的数据还可用于医学领域,作为眼部疾病的初步诊断。现阶段的人眼追踪系统通常存在一定缺陷[1-2],即均被限制在固定设备前,不能随意移动。又因为这种系统是基于PC系统所设计的,对与硬件设备的要求较高。因此一种可移动、鲁棒性更好的人眼追踪系统是完成精确视觉控制系统的基础。嵌入式系统具有运算能力较强、体积小、功耗低等特点,并可较好地使用在某些专用场合。本文研究并提出了一种基于OpenCV的人眼追踪方法,利用Haar分类器进行了实现,并在ARM嵌入式系统上进行了开发和移植测试,测试结果表明,其拥有较好地鲁棒性和识别率。

1 人眼追踪原理

1.1 Haar分类器原理

本文所使用的方法是基于Haar-like特征的目标检测方法[3-4],该方法所构成的级联分类器通常应用于目标检测。而对人眼追踪使用的是类似算法,主要区别是其训练集的不同。

Haar特征是图像中特定位置的矩形框,这些矩形反映了处在特定位置不同部分的局部灰度变化,这些矩形的目的就是将目标对象特征量化,加强区分结果。最初的特征库包含3种类型的特征,如图1所示。

图1 Haar特征

图像中白色区域的像素灰度值与减去黑色区域像素灰度值之和,所得到的数值就是所覆盖区域的特征值。通过使用积分图的方式计算,可提高运算速度。积分图是一种可描述全局信息的矩阵表示方法,其定义为

式中,ii(x,y)是原图像在(x,y)处的积分图像;i(x',y')表示(x,y)处原始图像为原图像点所在纵坐标不超过该点的所有像素灰度值之和,则图像的积分图像值可按下列公式计算

其中,s(x,y)为一系列积分;初始条件为 s(x,-1)=0,ii(-1,y)=0,即图形边界以外区域积分图像为0,通过遍历一次原始图像即可求出对应的积分图像,如图2所示。点1代表了A区的灰度值之和,点2则代表A与B区的灰度值之和,点3代表A与C区的灰度值之和。由此,通过计算即可得到D区的灰度值之和为4+1-2-3。

图2 积分图

1.2 基于AdaBoost的检测方法

AdaBoost人脸检测是一种基于积分图、级联检测器和AdaBoost算法[5]相结合的方法,其基本思想是利用大量分类能力一般的弱分类器通过一定方法叠加,构成一个分类能力较强的强分类器。而从特征集和训练集选取的正例样本与反例样本可用来训练分类器,且作为训练集还应使用一定数量的正例和反例,可选用清晰的人眼图像作为正例而使用随机图像作为反例。AdaBoost算法无需预先已知弱学习算法学习正确率的下限,且最后得到强分类器的分类精度依赖于所有弱分类器的分类精度,这样可深入挖掘弱分类器算法的能力。AdaBoost算法中不同的训练集通过调整每个样本对应的权重来实现。开始时,每个样本对应的权重相同,这种情况下可得到一个弱分类器。对于在这一过程中分类错误的样本,加大其对应的权重;而对于分类正确的样本,则降低其权重,由此错误的样本就被突显出来,从而得到一个新的样本分布。在新的样本分布下,再次对样本进行训练,得到弱分类器。依此次类推,经大量循环,得到数个弱分类器,再将这些弱分类器按一定的权重可表示叠加,得到理想的强分类器。为加快目标检测,最终的强分类器只包含一个最强特征。可表示为

2 实验系统结构及分析

2.1 嵌入式硬件环境

研究的目标是在嵌入式Linux系统和ARM的嵌入式开发平台上,利用摄像头完成对人眼图像的采集,然后将其传输到硬件系统中,由嵌入式系统进行检测和处理以提取出关键识别特征,并将这些特征保存到系统存储器中。再通过识别算法对人眼进行识别,并最终使用QT显示在图形化的界面中。由于ARM的嵌入式硬件与传统的PC硬件区别较大,因此其核心算法与程序需根据嵌入式设备的硬件条件来确定。另外,嵌入式程序开发过程与通用PC机上的程序开发过程略有区别,其依赖于嵌入式微处理器和操作系统,主要过程包括选择嵌入式平台的支持包、定制和编译系统内核,导出并安装软件开发包(SDK)等。基于嵌入式系统则抛开了传统的PC硬件设备,而围绕嵌入式微处理器构建系统。

实验采用的嵌入式核心是S5PV210微处理器,运行最大频率可达1 GHz,处理器内部为64/32位总线结构,32/32 kB一级缓存,512 kB二级缓存;并自带3D图形加速引擎(SGX540),2D图形加速。且性能高、功耗低,适于做手持电子设备,通讯设备或医疗应用设备,监控视频设备和各种人机界面。Cortex-A8嵌入式开发平台[6]是一款基于S5PV210微处理器的嵌入式ARM开发平台,其处理速率可在600 MHz~1 GHz的范围内调节,结合功率优化的加载存储流水线,为功率敏感型应用提供了2.0 DMIPS/MHz的速率;并遵从ARMv7架构规范,其中包括用于实现更高性能、能量效率和代码密度的Thumb-2技术;同时拥有1 GB的RAM和必要的输入输出接口及外围模块。嵌入式人眼追踪系统组成如图3所示。

图3 嵌入式人眼追踪系统组成

嵌入式操作系统选择了Linux操作系统的Ubuntu 12.04,该操作系统拥有良好的人机交互界面及更易扩展的软件支持,其中包括OpenCV库和GCC编译环境。

输入设备则采用市场上普通的USB摄像头,分辨为640×480,由低分辨率进一步测试系统的准确性。同时,选择支持Linux内核的万能驱动,以避免移植驱动的工作。

2.2 OpenCV实现

OpenCV是一个基于开源发行的跨平台计算机视觉库,可运行在 Linux、Windows和 Mac OS操作系统上。其由一系列C函数和少量C++类构成,同时提供了Python、Ruby、Matlab等语言接口,并拥有众多计算机视觉[7]方面的通用算法,不需添加新的外部支持也可完整地编译链接生成执行程序。在OpenCV中应用的检测器是基于Haar特征的级联分类器,现阶段的Haar特征已将原有的特征进行了扩充和修改,使其增加和修正为Haar-like特征。新的Haar-like可分为边缘特征、线性特征、中心环绕3类,如图4~图6所示。

图4 边缘特征

图5 线性特征

图6 中心环绕

这3组特征构成了OpenCV使用的完整特征集,每种特征均添加了45°旋转特征。这些新特征可使经过旋转的积分图更快地完成计算,旋转积分图中,每个点储存的是其左上方延伸出的45°区域范围内所有像素之和。算法如下

OpenCV提供了足够数量的函数来满足不同对象的检测和级联分类器的训练。OpenCV可训练包括脸、嘴、眼睛、鼻子等一系列对象。而对于眼睛的检测则有大约6种不同的级联分类器,每个级联均由图象集训练而成,结果略有不同。本文选择其中检测右眼的级联分类器,在识别物体时,计算积分图像并为计算haar特征做准备,采用与训练时物体窗口同样大小的窗口遍历整幅图像,以后逐渐放大窗口,遍历搜索物体;每当窗口移动到一个位置,即计算该窗口内的haar特征,加权后与分类器中haar特征的阈值比较从而选择左或右分支值,累加一个级的分支值与相应级的阈值比较,大于该阈值才可进入下一轮筛选。当通过分类器所有级时即说明该物体以大概率被识别。

Haar特征的级联分类器由对象CascadeClassifier中的detectMultiscale方法来实现。其可检测源图像中的不同大小的物体。该方法的参数除输入输出外,共有4个可选参数来调整检测方式:scaleFactor用来调整检测中的图像缩放;minNeighbors相邻矩形的最小数量;flags用于选择操作模式。minSize指定对象的最小尺寸。

最终目标是要在ARM嵌入式平台上实现人眼识别与追踪功能,故需交叉编译在ARM-Linux平台上移植的OpenCV函数库。整个程序使用C++语言写成,然后通过GCC进行编译,再由串口线下载到嵌入式开发系统上进行试验,并将嵌入式开发板作为系统的硬件基础。系统首先需将视频图像转成帧图像,然后将其转化为8位深的灰度图像。由此便消除了图像所含有的噪声等不利信息,便于检测函数进行处理。参数设置如下:scaleFactor=1.5;minNeighbors=2;minSize=40x40px;Flags=CV_HAAR_SCALE_IMAGE。scaleFactor和minSize共同定义了对象的大小,同时也是用户到摄像头的距离控制参数。设置距离大约35 cm,若增加这一距离则将会增加计算时间和出错的概率。若加大minNeighbors参数,虽对检测正确率影响较小但却会大幅度提高计算运行时间。通过测试SCALE_IMAGE模式的响应较快,约为100 ms,同时其也拥有令人满意的处理结果。

由于要在嵌入式系统上运行,文中同时使用了QT的开发环境[8],其拥有制作嵌入式系统图形用户界面的工具,方便制作良好的图形界面。且对于OpenCV也有较好地支持。此次设计制作了一个简单的图形界面,可控制摄像头和启动检测。

3 实验结果

实验表明,对于不同的正负样本,即便数目、大小、比例相同,训练时间也不同。众多分类器训练失败均是因负样本数目过少,导致OpenCV训练Haar特征分类器算法进入死循环。在实验的后期测试中,通过适当提高正负样本数即避免了分类器训练失败。同时,在检测到的人眼位置绘制圆形标识,以便明确地显示结果。从结果可看出,系统成功识别了右眼区域并进行了标记,如图7所示。测试一共进行了100次试验,成功率为92%,这说明本方法具有一定的鲁棒性。

图7 实验测试结果

4 结束语

根据实验测试表明,本文提出了一种基于S5PV210嵌入式核心方法,该方法可满足人眼追踪系统的要求,在弱光条件下仍有较好地识别率,且其与目前的人眼识别系统相比拥有更少的检测时间,平均检测时间<150 ms。本文提出的嵌入式人眼追踪系统提供了一种识别率和速率优良的应用方案,可进一步用于设计视觉控制系统或机器视觉,具有一定的实用价值。

[1]钟笑冬.基于机器视觉的人眼跟踪系统的设计和实现[D].西安:西安电子科技大学,2010.

[2]WU Tunhua,BAI Baogang,ZHOU Changle,et al.Real- time non-intrusive eye tracking for human-computer interaction[C].Beijing:5th International Conference on Computer Science and Education,2010:1092 -1096.

[3]LIENHART R,MAYDT J.An extended set of Haar- like features for rapid object detection[C].Xi'an:Proceedings of the International Conference on Image Processing,2002.

[4]张亮修.基于Haar-like特征的实时道路车辆识别方法研究[D].青岛:青岛大学,2009.

[5]PAUL V,MICHAEL J.Robust real- time object detection[C].Vancouver,Canada:Second International Workshop on Statistical and Computational Theories of Vision-Modeling,Learning,Computing,and Sampling,2001.

[6]广州天嵌计算机科技有限公司.TQ210开发板使用手册[R].广州:天嵌计算机科技有限公司,2012.

[7]刘瑞祯,于仕琪.OpenCV教程:基础篇[M].北京:北京航空航天大学出版社,2007.

[8]成洁,卢紫毅.Linux窗口程序设计:Qt4精彩实例分析[M].北京:清华大学出版社,2008.

猜你喜欢
人眼分类器嵌入式
人眼X光
TS系列红外传感器在嵌入式控制系统中的应用
人眼为什么能看到虚像
搭建基于Qt的嵌入式开发平台
基于实例的强分类器快速集成方法
闪瞎人眼的,还有唇
嵌入式软PLC在电镀生产流程控制系统中的应用
加权空-谱与最近邻分类器相结合的高光谱图像分类
结合模糊(C+P)均值聚类和SP-V-支持向量机的TSK分类器
看人,星光璀璨缭人眼