组合型人眼识别方法及其应用

发布时间:2011-09-01
张欧平 1 ,丁志刚 2,3 ,彭娟春 2,3
(1.上海市计算技术研究所,上海         200040;2.上海计算机软件技术开发中心,上海201112;
3.上海嵌入式系统应用工程技术研究中心,上海201112)
1概述
       随着人工智能和计算机科学的发展,机器视觉技术已经取得了相当大的进步,受到人们的广泛关注,快速的人眼检测和跟踪是其中的关键技术之一。人眼检测和跟踪的目标就是对于给定的视频序列,根据前一帧已定位到的眼睛位置,在后续的每帧图像中实时捕捉人眼的运动信息。目前人眼定位主要有基于学习、基于模板匹配和基于特征的方法 [1]。本文提出一种组合型人眼检测和跟踪方法,采用Adaboost算法构建人眼检测分类器,检测到眼睛位置后,结合卡尔曼滤波器与平均位移追踪瞳孔的位置。该方法具有高检测率的优点,适用于嵌入式平台。本文采用DM6446嵌入式平台作为组合型人眼识别方法的实现平台,通过双核处理技术提高了视频处理的性能。
2 相关理论
2.1 AdaBoost分类器
       文献[2]提出一种快速的人脸检测方法,提取简单的Haar-like [3]特征,其能很好地反映出人脸图像中的灰度分布。同理,该方法也适用于人眼检测,找人眼的过程就被转化为找到较好的Haar-like 特征来描述人眼图像的灰度分布;Adaboost 就是从大量的Haar-like 特征中挑选出最优的描述人眼图像灰度分布的特征。使用AdaBoost来训练分类器,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
2.2卡尔曼滤波器追踪
       卡尔曼滤波器算法用于估计目标在下一帧中的位置,也就是说在下一帧的预测区域内应该搜寻多大的区域才能找到待检测目标。卡尔曼滤波器分为预测和更新2个个阶段。
      (1)状态预测:为了加快运算,在实际中用误差估计和来计算搜寻范围的大小,值越大,不确定的估计越多,搜寻的范围越大。
      (2)状态更新:通过得到新的状态估计。
2.3 平均移位追踪
       平均移位追踪是基于目标物外表的目标追踪方法。基于前一帧检测到的人眼,构造眼睛模型密度分布,匹配的过程就是寻找Bhattacharyya系数最大值的寻优过程。卡尔曼滤波器预测当前图像中眼睛的位置,作为初始位置,然后平均移位使用以下的算法 [4]在当前图像中找到与眼睛模型最相似的眼睛候选区域。其算法核心如下:
      (1)初始化当前图像中眼睛位置,计算模型密度与目标候选区域密度的相似度。
      (2)通过公式推导得到人眼新的位置,并更新候选区域密度分布,然后计算模型密度与目标候选区域密度的相似度。
      (3)为了避免平均移位跟踪器移动到不正确的位置。当<时,令。
      (4)如果,则停止,其中ε为终止阀值;否则 = ,跳到步骤(1)。
3组合型人眼识别方法
       组合型人眼识别方法中检测过程和跟踪过程交替进行,这样可提高系统处理的平均速度和目标检测的准确性。在检测过程中,采用AdaBoost分类器尺度缩放机制的人眼检测算法,并利用 Canny 裁减技术以减少分析的候选区域。在跟踪过程中,采用2级眼睛跟踪,卡尔曼滤波器与平均位移交替着起作用。若连续5帧图像的检测人眼的位置都正确,则进入眼睛的追踪阶段;利用检测到眼睛的位置预测下一帧图像眼睛的位置并定出一个搜寻范围。每经过 100帧图像,重新使用Adaboost分类器检测,接着又进入追踪阶段。组合型人眼识别方法结构如图1所示。
                                                                                                                        

1 组合型人眼识别方法结构图
3.1 AdaBoost分类器人眼检测
       由于训练分类器需要相当长的时间,实际应用中把训练好的AdaBoost分类器做成XML文件,检测目标时只需加载相应的级联分类器。为了检测未知大小的目标物体,分类器通常需要用不同比例大小的搜索窗口对图片进行几次扫描,移动搜索窗口,检测每一个位置来确定可能的目标。
3.1.1预处理
       利用Canny边缘检测器做边缘检测和特征提取,目的是排除一些边缘很少或者很多的图像区域,因为这样的区域一般不含检测目标。
3.1.2人眼检测算法
       初始分类器检测窗口大小为24×24,当小的窗口移动扫描完待检测图像没有发现目标时,调整分类器的大小,然后继续检测,直到检测到目标或者窗口与待检测图片的大小相当为止。
       在每一次扫描图像过程中,级联分类器窗口大小是固定。目标检测过程中,分类器每移动一个像素的间隔都利用Canny 裁减技术对待检测窗口进行筛选,以减少分析的候选区域。在经过Canny 裁减筛选后的候选区域中利用针对某目标物理训练的级联分类器训练在图像中找到包含目标物体的矩形区域,并且将这些区域作为一序列的矩形框返回。以不同比例大小的扫描窗口对图像进行几次搜索,每次都要对图像中的这些重叠区域利用训练好的级联分类器进行检测。 在处理和收集到候选的方框(全部通过级联分类器各层的区域)之后,接着对这些区域进行组合并且返回一系列各个足够大的组合中的平均矩形,返回的平均矩形就是检测目标的人眼区域。人眼检测结构设计如图2所示。
 

2 人眼检测结构图
3.2组合型人眼跟踪器
       在初始的几帧图像中AdaBoost分类器定位到人眼位置后,对随后的每帧采用追踪的方式以减少计算量。脸部正面旋转并睁眼的情况下,卡尔曼滤波器是有效的;然而由于闭眼、头部突然移动或外部光源的干扰,卡尔曼滤波器会失效,为此提出了平均位移。如果在一帧图像中卡尔曼滤波器失效,此时追踪就交给由平均位移接管,平均位移算法根据眼睛区域的亮度的概率统计分布来跟踪眼睛,不需要亮瞳。采用平均位移算法识别眼睛的候选区域,就亮度分布而言,该区域与给定的眼睛模型有着最相似的亮度分布。因此,无论眼睛是闭合还是脸部倾斜,平均位移算法都能跟踪到眼睛。此外,平均位移算法能快速地检测目标并能很好地处理噪声,但其会受到附近相似目标的干扰。因为平均位移算法不具有纠错能力,跟踪过程中误差累积并传递给后面的每一帧图像,最后导致追踪失败,除此之外,其不具有更新眼睛模型的功能,脸部移动会引起眼睛的变化,使得待检测目标与目标模型有明显的区别,此时追踪器就识别不出人眼的正确位置。
归纳起来,本文结合两者并采取以下措施:眼睛模型不断地被更新为卡尔曼滤波器成功检测到的眼睛,避免了平均位移的误差繁衍。跟踪流程如图3所示。
先利用卡尔曼滤波器追踪瞳孔,在预测阶段,滤波器使用上一状态的估计,来做出对当前状态的估计;在更新阶段,滤波器利用对当前状态的观测值来优化在预测阶段所获得的预测值,以取得一个更精确的新估计值。假如瞳孔追踪失败,使用平均位移追踪,计算模型的密度与目标候选区域密度的相似度,以两个分布的相似性最大为原则,通过平均位移算法的迭代计算,使搜寻窗口沿密度增加最大的方向移动,并取得收敛于最佳的位置。因此,平均位移追踪是在卡尔曼滤波追踪瞳孔失败后执行。

3 人眼跟踪算法流程图
4实验与分析
       本文在DM6446平台上采用ARM+DSP双核结构对程序控制和运算部分作有效区别,从而提高视频处理的性能,使得系统在占用较少资源的情况下能有效检测并定位到眼睛。ARM端从摄像头读取原始视频数据,对图像滤波加载分类器,并将结果输出到显示器。DSP端运行人眼检测和跟踪算法。两端通过DSP-Link及共享内存空间进行交互。
在不同的眼睛条件下,2种不同跟踪器在DM6446嵌入式平台中的实验统计数据如表1所示。共设置了4组实验条件,第1行表示采集左眼睁开的420帧图像,卡尔曼跟踪器检测到301帧,组合型跟踪器检测到411帧;可以看出,组合型人眼检测跟踪器比卡尔曼瞳孔跟踪器更能准确地定位到人眼。
1  2 种不同跟踪器的实验统计数据
帧数
状态
卡尔曼
滤波器检测/帧
卡尔曼
跟踪器检测/帧
组合型
检测率/(%)
左眼420帧
睁开
301
411
97.86
左眼80帧
闭合
0
63
78.75
右眼460帧
睁开
336
453
98.48
右眼80帧
闭合
0
80
100
在大范围的头部移动情况下(如图4所示),无论睁眼,闭眼还是人眼被遮挡,2种追踪方法交替着起作用,其中,黑框代表平均位移跟踪器,白框代表卡尔曼滤波器。
(a)正面转45°      (b)向后仰          (c)闭眼正面转45°

4 大范围头部移动的实验结果
在不同的亮度环境下,实验中先关掉周围的光源,然后用强光朝着人的方向照射,目的是产生强的外部光源干扰。实验证明,组合型人眼跟踪器仍然能正确实时地跟踪到目标。
5 结束语
       本文提出了一种组合型人眼识别方法,在不同的亮度和脸部移动情况下,无论是闭眼还是睁眼,都能够快速地检测跟踪到人眼。实验结果表明,本文方法能提高眼睛检测跟踪的速度和精确度。此外,组合型人眼识别方法还能应用于驾驶员疲劳度检测嵌入式车载系统,并能处理闭眼状态、带眼镜状态和同时检测出处于不同姿势和距离的多目标人眼。