APP下载

改进的Hough与梯度直方图的人眼定位算法

2014-01-15蒋丹丹冯晓毅

电子设计工程 2014年21期
关键词:人眼直方图人脸

蒋丹丹,冯晓毅

(西北工业大学 电子信息学院,陕西 西安 710129)

民航运输中跨时区飞行、长线飞行以及夜间飞行引起的睡眠缺失和生物钟错乱带来的累积效应会导致内源性节律失调,形成飞行中疲劳驾驶[1]。疲劳状态的监控可以防止航空器陷入不可控状态,保障生命和财产安全。作为疲劳征兆的一种直接表象,人眼检测和定位成为非侵入式疲劳检测的主要判别方式。

常用的人眼定位算法有两种思路:一是直接人眼定位算法,如基于模板匹配算法的人眼检测和定位[2],基于二值化连通域的阈值夹逼算法的人眼定位[3]等,此思路在算法实现上简单,但计算量大,不稳定;二是先检测出人脸,然后在人脸图像区域内再检测人眼,其中人脸检测的算法常用的主要有:基于知识的人脸检测方法[4]、基于特征的人脸检测方法[5-6]、基于模板匹配的人脸检测方法[7]、基于统计理论的人脸检测方法[8],人眼部分的检测常用的算法有基于灰度积分投影的算法来检测人眼[9]、基于统计方法的人眼检测[10]等,此思路在保证存在人眼区域的情况,能够将计算量减小,并且定位能力增强。

与汽车疲劳驾驶相比,民用航空器本身运行的环境差异(快速的地域转换、高度变换、云层影响等)很大,尤其是空中巡航阶段,单一的外部视角,更容易造成视觉疲劳,感染为生理疲劳和精神疲劳;同时,现代大型客机的座舱管理更加智能化、数字化,计算机的工作负荷很大。针对这些特点,飞行座舱的疲劳检测更趋于使用快速、低复杂度、高精确度算法进行人眼状态检测。因此,飞行疲劳检测的难点和重点在于怎样快速、精确的实现人眼定位和状态判断。本文研究是基于人眼定位的第二种思路,即先人脸,再人眼。工作重点将放在寻找一种能快速、精确提高人眼定位的算法——基于Hough与梯度直方图的人眼定位的算法,提出了Hough检测的“可能圆”的简化梯度直方图,并与SVM结合的改进方法来排除多余的“虚圆”,提高人眼定位的正确率,有效解决飞行座舱疲劳监测的主要问题。

1 算法描述

1.1 Adaboost人脸检测

Adaboost算法因其准确性高、计算量小、速度快等优点成为目前最常用的人脸检测算法。其基本原理是:依据图像的积分图计算出图像的Haar-Like特征;接着利用Adaboost算法筛出重要的图像(人脸检测)分类特征,构成一簇弱分类器,通过一定的权重比例使它们组合,构成一个强分类器;重复步骤,筛选出多个强分类器,级联构成检测人脸的终极分类器[11]。

1.2 Hough检测人眼

从上述Adaboost训练分类器选定的检测目标区域,进行人眼定位。人眼的瞳孔轮廓是近似精确的圆形,假若可以在感兴趣图像区域 (这里定义为在人脸图像区域的1/4高度至1/2高度,宽为 1/6至 5/6处,即图 6的(e)、(f)中小矩形区域)中找到它的圆心(瞳孔坐标),自然就可以精确的定位人眼。

Hough变换是一种基于灰度图像的以轮廓作为特征的算法,同时融合梯度信息,以投票的方式进行识别物体,并且其隐蔽情况下的圆检测有抗干扰能力,能够得到检测目标的位置等完整参数信息。这是提出用Hough变换检测圆的一个重要原因。

假设所检测圆在一般坐标系内的圆心坐标为 (a,b),半径为r,则符合该圆上的任意一点(x,y)满足下列方程:

将X-Y平面上的圆转换到a-b-r参数空间,则图像空间中任意过点(x,y)的圆对应到参数空间中都是高度r变化下的一个三维锥面,如下图:

图1 X-Y平面转换为A-B-R参数平面坐标系Fig.1 X-Y plane converted into A-B-R parameter plane coordinate system

Hough变换检测圆可以概括如下:

1)在a,b和r的合理的最大值和最小值之间建立一个离散的参数空间;

2)建立一个累加器 A(a,b,r),并置其为 0;

3)在X-Y图像空间,对目标检测的候选区域内每一点做Hough 变换,计算出所有的(a,b,r)的值,并在相应的累加器加 1,即:

4)④累加结束,根据 A(a,b,r)的值,投票可知有多少点是共圆的,即 A(a,b,r)的值就是在(a,b,r)处共圆的点的个数。 同时(a,b,r)也给出了共圆点所在圆的参数,得出圆的位置[12]。

1.3 梯度直方图提取特征

梯度直方图(HOG)是用于目标检测的特征描述子,统计局部图像中的方向梯度出现的次数。HOG特征的原理[13]是:将整幅图象分割成若干个cells(比如一个cell为8×8像素),计算每个cell的方向梯度直方图,并将几个cells组成一个block区间(比如一个block为64×64像素),最终形成的特征向量与block有关,在与其大小一样的窗口中检测。

文献[14]提出了一种正面人脸图像中检测人眼的方法:对整幅图像进行Hough圆检测,得到可能的人眼中心之后;利用这些检测得到的可能人眼的某一矩形区域内的梯度直方图(HOG)特征信息和支持向量机,训练得到SVM人眼分类器来判断准确的人眼。但是该方法在整幅图像进行Hough圆检测,带来了大的计算量和内存占用空间,同时也耗用了较长的人眼检测时间;另外,Hough圆检测得到的“可能圆”区域较小,划分blocks增加了小区域梯度直方图的提取复杂度,且特征提取不明显。从计算量、实时性以及复杂度等方面来讲,该算法适用性不强。

2 改进之处

梯度的计算对Hough圆的结果影响很大,容易将某些边界误检为圆,这些圆分布不规律,不能通过简单的双眼距离等来判断和排除。

本文在HOG算法的基础上,提出了简化梯度直方图的方法:不再划分blocks,直接对梯度方向角进行统计,得到梯度直方图信息。Hough检测之后的可能圆的区域面积不大,并且在梯度方向上存在着明显、强烈的变化,即白—黑—白,从梯度方向出发,提取人眼的梯度方向信息,通过SVM寻找最优线性分类器,准确判断人眼。

简化的梯度直方图具体算法步骤如下:

1)计算一个矩形区域作为提取样本的区域。将Hough圆检测之后的“可能圆”,以其圆心为中心,在其某一邻域(该邻域与“可能圆”的半径有关)范围为长和宽,做一个规定的矩形区域。将所有的Hough检测的“可能圆”的矩形区域保存为正负样本,;

2)进行归一化操作。即将保存好的样本归一化到尺寸大小相同的图像区域;

3)利用梯度算子(如图2)计算该区域内X方向和Y方向上的梯度,求出其梯度角的值。在一幅数字图像中,一阶导数可以表示边缘点,像素点(x,y)在X方向上有Gx:

在Y方向上有Gy:

则梯度方向角α表示为:

4)划归bins。梯度的范围为0度-180度,根据特征需求,平均划归为N个bins,对相应bins里的梯度方向角的个数进行统计作为特征值;

5)训练分类器。用标签将眼睛区域和非人眼区域标注,如眼睛区域的标签为1,非眼睛和闭眼区域的标签为0,利用SVM对提取的眼睛梯度直方图特征信息以及标签进行训练,得到最优的线性分类器;

6)对经Hough检测出的多个“可能圆”的规定邻域范围内的图像的梯度信息进行提取,并送入训练好的支持向量机进行预测,判别并得出图像区域的分类标签,即1或0。

通过SVM结合了眼睛区域的简化HOG信息进行训练和预测,将Hough检测出的“可能圆”中的非人眼点给排除出去。

另外,在Hough圆检测算法运行中,对累加器计数最大的点可能存在重复的圆心问题,我们对这些点采取如下操作:

其中(c0,c1)是已知检测确定的圆心点,(cx,cy)是累加器计数最大的点,min_dist是设置的阈值 (两圆之间最小的距离)。当两点之间的距离小于阈值时,即可认为此圆心与已确定的圆心为同一圆心。这样就避免了同一圆心的邻近区域内重复性圆检测,形成簇圆,无法提取圆形轮廓和精确定位人眼。

综上所述,改进的Hough与梯度直方图的人眼定位算法可以用如下图示流程简要表示:

图2 梯度算子示意图Fig.2 Schematic diagram of gradient operator

3 实验结果及分析

本文将提出改进的Hough与梯度直方图算法分别用实拍的飞行员实际飞行视频的图像数据库、实验室随机采集视频的图像数据库和网络下载图像库进行了实验,在粗提取的感兴趣区域内的实际检测定位(灰度图像)效果如下图所示:

图3 改进的Hough与梯度直方图的人眼定位算法流程图Fig.3 The flowchart of Improved Hough and gradient histogram for eye location algorithm

上述实验结果可以证明:Hough变换的方法检测圆具有鲁棒性,其抗干扰的能力很强,对背景和实验环境要求不高。

本文通过基于Opencv和C++结合的编程在自建的图像库和来自MIT的FACEREC数据库中的图像实现了Hough变换、Hough+HOG、改进算法的人眼实验。实验结果如下:

图4 不同实验环境下改进的新型结合算法人眼定位结果Fig.4 The results of improved eye location algorithm under different experimental environment

图5 三种算法的检测结果Fig.5 The detection results of three algorithms

从上图的3组实验结果对比可以看出,检测出的圆主要分布在边缘梯度变化大的地方,同时,从(a)、(c)和(e)图来看,简化的HOG信息作为人眼的特征在经SVM训练的分类器来检测人眼的方法是可行的。(c)和(d)图中还存在着误检情况,其中鼻孔、嘴唇因为在其计算梯度特征的矩形区域内边缘像素点灰度变化较大而被误检;而(e)和(f)图则首先经过Adaboost人脸检测,加上一个粗定位的感兴趣区域和改进的Hough+HOG分类器,检测范围在减小,同时分类器又能保证正确分类。经过实验结果的数据对比,Hough人眼检测率保持在97.2%,而Hogh+HOG算法的认假率仍然比较高(30%左右),改进的Hough与梯度直方图的算法则将认假率降到了3.2%。

另外,从算法的检测时间上来看,Hough圆检测本身因为将二维空间转变到了三维空间,计算量和内存占用很长时间,所以Hough圆检测和Hough+HOG算法在计算量和复杂度上耗用检测时间较长,大约平均一帧640×480大小的图像耗用200 ms左右;而改进的Hough与梯度直方图算法因为Hough检测的范围小,计算量小,检测时间短,大约平均一帧640×480大小的图像仅耗用40 ms左右。通用摄像头的传输速度为30帧/秒,用来做疲劳检测,在实时性方面,本文提出的改进算法在人眼检测与定位上更有优势。

4 结束语

本文主要针对用于飞行座舱行为的疲劳状态检测的快速、低复杂度、高精确度的特点,通过Adaboost和Hough算法检测人眼,提出了眼睛的简化梯度直方图(HOG)信息作为提取特征,通过SVM训练的分类器,再进行人眼的判断和定位。Adaboost算法的快速检测人脸为整个检测程序赢得了时间;Hough圆检测精确的定位人眼位置,它对噪声和边缘间断有鲁棒性;简化的梯度直方图信息能够反映眼睛的梯度信息,作为SVM的训练特征,降低了误检率,提高了检测率。针对实时性方面,今后工作将放在对本文提出的算法的优化上。

[1]Zongmin WEI,Damin ZHUANG,Xiaoru WANYAN,et al.Prediction and Analysis of the Human Errors in the Aircraft Cockpit[C]//2012 5th International Conference on Biomedical Engineering and Informatics (BMEI 2012).2012:1285-1288.

[2]Ruiming LIU,Qi JIANG,Yanhong LU,et al.Eye Localization in Face Image Based on a Novel Template Matching Method[EB/OL].(2002-05).http://dx.doi.org/10.1117/1.OE.51.2.027203.

[3]Ping WANG,Lin SHEN.A method of detecting driver drowsiness state based on multi-features of face[C]//2012 5th International Congress of Image and Signal Processing(CISP).2012:1171-1175.

[4]Jiang J,Gong J,Zhang G L.Fast hierarchical knowledgebased approach for human face detection in color images[C]//Proceedings of the society of photo-optical instrumentation engineers(SPIE),2001(4550):202-210.

[5]Ando T,Moshnyaga V G.A low complexity algorithm for eye detection and tracking in energy-constrained applications[C]//Communications ,Signal Processing ,and Their Applications (ICCSPA),2013 1st International Conference ,2013:1-4.

[6]AMANDEEP SINGH,JASPREET KAUR.Driver Fatigue Detection Using Machine Vision Approach [C]//2013 3rd IEEE International Adance Computing Conference(IACC).2013:645-650.

[7]TAO WANG,JIA-JUN BU,CHUN CHEN.A color based face detection system using multiple templates[J].Journal of Zhejiang University SCIENCE A,2003,4(2):162-165.

[8]HONG-MO JE,DAIJIN KIM,SUNG YANG BANG.Human Face Detection in Digital Video Using SVM Ensemble[J].Neural Processing Letters,2003,17(3):239-252.

[9]许璐.基于眼睛检测与视线估计的驾驶员疲劳检测[D].南京:南京理工大学,2008.

[10]JIA Ming-xing,DU Jun-qiang,CHENG Tao.An improved detection algorithm of face with combining adaboost and SVM [C]//2013 25th Chinese Controland Decision Conference,2013:2459-2463.

[11]Inalou Sania Arijomand,Kasaei Shohreh.Adaboost-based face detection in color images with false alarm[C]//2010 International Conference on Computer Modeling and Simulation.2010:107-111.

[12]陈胜勇,刘盛.基于OPENCV的计算机视觉技术实现[M].北京:科学出版社,2008(5):186-189.

[13]Dalal Navneet,Triggs Bill.Histograms of oriented gradients for human detection[C]//Conference on Computer Vision and Pattern Recognition,CVPR,2005:886-893.

[14]Ito Y,Ohyama W,Wakabayashi T,et al.Detection of eyes by circular Hough transform and histogram of gradient[C]//2012 21st International Conference on Pattern Recognition(ICPR).Tsukuba,Japa,2012:1795-1798.

猜你喜欢

人眼直方图人脸
符合差分隐私的流数据统计直方图发布
有特点的人脸
一起学画人脸
人眼X光
人眼为什么能看到虚像
用直方图控制画面影调
三国漫——人脸解锁
中考频数分布直方图题型展示
闪瞎人眼的,还有唇
看人,星光璀璨缭人眼