基于YCbCr颜色空间相邻帧差建模的眼睛定位算法研究
2014-01-30梁万元种银保
梁万元 种银保 赵 安* 向 逾
目前,基于人体眼睛状态的疲劳驾驶监测方法由于其疲劳判定模型PERCLOS检测符合率高,且具有非接触性等优点,研究最为广泛。应用于疲劳驾驶监测的眼睛定位算法较多,此类方法利用摄像头获取驾驶员的头像,并定位出图像中眼睛的准确区域,然后对眼睛的状态(睁眼、闭眼和眨眼)进行检测,并根据PERCLOS模型来实现对驾驶员的疲劳判定[1-2]。虽然目前大多数算法都能实现较为精确的眼睛定位,但是由于对每帧图像都要进行从人脸定位到眼睛定位的算法步骤,处理帧速还不能完全满足疲劳驾驶监测对于实时性的要求。人眨眼一次的平均时间约为0.2~0.4 s,根据采样定理,要求处理帧速要达到至少10帧/s,而现有算法处理速度普遍低于10帧/s,因而极有可能出现误判或漏判人眼睑的开闭运动[3-6]。
实际监测中发现,驾驶员头部运动范围有限,且多数时候运动幅度较小,因而摄像头采集到的相邻两帧图像中的头部位置的变化也较小,在这一前提下,若检测出相邻两帧图像中头部位置的变化幅度,参照前一帧图像定位出的眼睛准确区域,就可以确定出后一帧图像中眼睛的候选区域,再对候选区域进行提取,即可得到眼睛的准确区域,这样可以省略人脸定位和部分眼睛定位步骤,提高处理帧速。基于上述分析,本研究提出基于眼睛位移检测模型的眼睛定位算法,来弥补传统眼睛定位算法在速度方面的不足,从而更好的保证疲劳驾驶监测系统的准确性。
1 资料与方法
本研究以“极品飞车”游戏模拟驾驶环境,对始终处于清醒状态的3位志愿者分别利用摄像头以20 fps的速度和640×480的分辨率,连续采集2000帧面部图像做为实验样本,在实验期间被测者头部在摄像头视野内随机的左右和上下运动,且眼睛自然开闭,图像采集的情况见表1。
表1 3位志愿者面部图像采集的总体情况
2 眼睛位移检测
2.1 相邻帧差法
运动目标检测是指从图像序列中将前景变化区域从背景图像中提取出来。相邻帧差法是常用的运动目标检测方法,其原理是以前一帧作为背景帧,以当前帧为待检测帧,依据两帧之间的差值,来检测物体运动[7]。该方法可以较好地检测背景环境固定的情况下运动的物体。视频检测驾驶疲劳通常只针对头部,因而利用摄像头采集的相邻帧图像之间的差异主要体现在运动的头部,用待测的当前帧减去作为背景的前一帧即可实现将背景部分减去,保留下头部运动的信息。对于同一检测对象而言,眼睛在头部的位置是固定不变的,通过检测头部的运动信息即可得知眼睛位置的变化。
初步试验表明,将采集的两帧连续的彩色图像转换为灰度图像后直接相减,得到的帧差图噪点较多,难以区分头部的运动信息(如图1所示)。
图1 灰度图的相邻帧差
本研究利用YCbCr颜色空间来抑制背景噪声,其主要原理为:①将彩色图像变换到YCbCr颜色空间对图像进行预处理,能够将背景从图像中去除而留下人脸部分[9];②将得到的图像二值化后其结果如图2所示。
图2 YCbCr色彩空间的相邻帧差
对预处理后的图像进行相减,得到的相减结果如图2(c)所示,并显示出相减后得到的图像背景噪声绝大部分被去除,头部运动的位移信息比较清晰,容易分析和提取,说明利用颜色空间来改进相邻帧差法,能够比直接灰度图帧差更好地从相邻彩色图像中检测出头部的运动情况。因而本研究根据帧差图的特征,提出如下计算头部位移方法。
(1)在帧差图中将头部位移区域分为横向位移①和纵向位移②两部分。
(2)计算区域①内白色区域的横向宽度的平均值作为头部横向位移Δx;区域②内白色区域的纵向宽度的平均值作为头部的纵向位移Δy(如图3所示)。
图3 基于YCbCr色彩空间帧差图的头部位移计算示意图
2.2 眼睛位移检测模型
基于眼睛在头部的位置固定这一前提,初步研究了模拟驾驶环境下,依据相邻帧差法检测到的头部位移预测眼睛位移的模型。选取同一志愿者在同一背景下的200帧头部的彩色图像,采集过程中人的头部在摄像头视野内随机的左右和运动,且眼睛进行自然的开闭。
(1)将采集的这200帧图像以相邻两帧作为一组数据,利用YCbCr空间相邻帧差法进行处理,得到199组头部位置变化数据(公式1):
式中Δxih为第i帧相对于第i-1帧的头部横向位移,Δyih为第i帧相对于第i-1帧的头部纵向位移。
(2)对这200帧图像利用手工选定区域的方式,划出每帧图像双眼组成的最小矩形区域,找到矩形的中心点作为眼睛的中心位置,记为(xi, yi)。再两两进行相减,得到199组眼睛位移量(公式2):
式中(xi, yi)为手工选定的第i帧图像的眼睛中心位置,Δxie为第i帧相对于第i-1帧的眼睛横向位移,Δyie为第i帧相对于第i-1帧的眼睛纵向位移。
将Δxih和Δxie,Δyih和Δyie分别作图对比,得到结果如图4、图5所示。
图4 199帧眼睛横向位移(Δxe)与头部横向位移(Δxh)线性回归分析
图5 199帧眼睛纵向位移(Δye)与头部纵向位移(Δyh)线性回归分析
从图4和图5中可以看出眼睛位移与头部位移呈现较强的线性关系,表明利用本研究算法检测出的头部位移去预测眼睛位移具有可行性。因而根据上面的实验,建立了眼睛位移检测模型(公式3):
式中Δxe表示待预测的眼睛横向位移,Δxh表示通过相邻帧差法得到的头部横向位移;Δye表示待预测的眼睛纵向位移,Δyh表示通过相邻帧差法得到的头部纵向位移。
根据相邻帧差法的原理可知,要实现物体运动的检测,相邻帧图像中运动的物体必须有重叠的部分。若相邻帧有重叠的部分,则眼睛位移量在模型检测范围之内,则可以参照前一帧图像的眼睛位置对当前帧眼睛进行定位。若相邻帧没有重叠的部分,表明头部运动剧烈,甚至有可能偏离出摄像头的视野之外,已不能满足本研究算法的前提条件,则利用传统眼睛追踪定位算法对待处理图像进行眼睛定位。因而需要对本研究眼睛位置预测模型进行边界限制,具体如下(公式4):
式中F1为图像中人脸的宽度,F2为图像中人脸的高度。
3 眼睛定位算法步骤
(1)利用传统算法定位出第一帧眼睛所在的矩形区域和精确位置。本研究采用的传统眼睛定位算法的步骤主要有:肤色检测、人脸分割、灰度积分投影和形态学处理[10-15]。
(2)基于YCbCr颜色空间的相邻帧差图,提取出头部的横向位移Δxh及纵向位移Δyh。
(3)眼睛位移预测。利用所检测到的头部位移对眼睛位移量进行预测:①若Δxh<F1且Δyh<F2,则基于公式(4)预测眼睛位移{Δxe, Δye};②若Δxh≥F1或Δyh≥F2,则采用传统算法对眼睛进行定位。
(4)眼睛候选区域确定。令上一帧图像的眼睛准确矩形区域表示为{(x,y),w,h},(x,y)为矩形区域左上角点的坐标,w为矩形的宽度,h为矩形的高度,各自的具体定义如图6所示。
图6 眼睛候选区域及位置参数示意图
根据所预测的眼睛位移量{Δxe, Δye}和上一帧眼睛准确的矩形区域,即可确定当前帧眼睛候选区域(公式5):
(5)形态学处理。上一步得到的眼睛区域是对前一帧眼睛矩形区域的一个拓展,可能会存在眉毛等非眼睛区域,利用形态学方法进一步处理,去除这部分区域,最终得到眼睛的精确矩形区域。
(6)重复步骤(2)至步骤(5)。
4 实验结果与分析
将采集到的图像利用基于眼睛位移检测的定位算法和传统眼睛定位算法[16]在Windows XP和Matlab2012平台上进行眼睛定位,处理器为Intel Pentium双核E2220 2.4 GHz,内存2 GB;其结果见表2。
表2显示,本研究算法将传统算法的眼睛定位处理速度由非实时的9帧/s提高到14帧/s,已能满足PERCLOS疲劳判定模型对于实时性的要求,且睁眼与闭眼检测的正确率与传统定位算法相同,漏检与误检率在可接受的范围内,表明本研究算法在保证眼睛定位准确性的同时,较大地提高了眼睛的定位速度,达到了预期效果。实验结果表明,本研究算法对睁眼图像和闭眼图像的眼睛定位准确性上无明显差异,该算法对睁眼图像和闭眼图像的检测同样适用。
表2 两种不同算法的正确检出睁眼闭眼帧数率及总处理时间和平均处理速度
5 结论
本研究提出的基于眼睛位移检测的眼睛定位算法,通过眼睛位移检测模型来检测相邻帧间眼睛位置的变化量,然后根据眼睛的变化量来选取后续的定位步骤,算法具有更好的灵活性。实验结果表明,在保证算法准确性的同时提高了算法的效率,更好保证疲劳监测与驾驶员疲劳状态的同步性,从而满足了疲劳驾驶监测对于实时性和准确性的要求。
本算法对眼睛位移的检测针对的对象是相邻两帧图像,即除了第一帧图像之后每帧图像均要进行眼睛位移的检测,因而算法速度的提升有限。若进一步发掘图像之间的关系,只需要每一段时间等间隔抽取部分图像进行检测,即可实现每帧图像眼睛位移的检测,其算法效率能进一步提高。而提高眼睛定位速度和准确性对保证基于眼睛状态的疲劳监视监测方法实时性和可靠性具有重要意义,尚需进一步研究。
[1]郭克友.恶劣光照下驾驶人疲劳及注意力视觉监测算法[J].计算机工程与应用,2010,46(2):200-202.
[2]汤一平,楼勇攀,周宗思.基于全方位视觉传感器的驾驶疲劳视频检测装置的设计[J].计算机测量与控制,2008,16(9):1233-1236.
[3]王智文,蔡启先.利用肤色分割和自适应模版匹配的人脸检测[J].广西工学院学报,2013,24(1):1-8.
[4]宫志鹏.一种基于肤色的人脸检测方法[J].漯河职业技术学院学报,2013,12(2):42-44.
[5]夏伟.改进的积分投影眼睛定位算法[J].现代电子技术,2011,34(8):105-107.
[6]犹轶.基于机器视觉的飞行员疲劳监测技术研究[D].成都:电子科技大学,2011.
[7]万缨,韩毅,卢汉清.运动目标检测算法的探讨[J].计算机仿真,2006,23(10):221-226.
[8]金涛,贾宏志,Norihiro N,等.运动的目标圆盘的轮廓和圆心提取方法研究[J].激光杂志,2010(4):24-26.
[9]Moreno P,Bernardino A.Gabor parameter selection for local feature detection[C].Iberian:Conference on Pattern Recognition and Image Analysis,2005:11-19.
[10]房瑞雪,赵晓华,荣建,等.基于脑电信号的驾驶疲劳研究[J].公路交通科技,2009,26(12):124-126.
[11]Hyunjong K,Jeonho S,Joonki P.Wavelet Transform-based Hierarchical Active Shape Model for Object Tracking[C].New York:Proceedings of International Symposium on Intelligent Signal Processing and Communication Systems,2004:256-261.
[12]童林.基于视频的人脸识别与跟踪算法研究[J].计算机与现代化,2013(2):1-4.
[13]周锋华,孟宪元.司机疲劳驾驶实时检测系统设计[J].测控技术,2013,32(1):37-40.
[14]徐来.人眼检测技术的方法研究[J].计算机系统应用,2010,19(6):226-232.
[15]徐菲.四种人眼定位算法的比较分析[J].软件,2013,34(3):61-64.
[16]王秀,赵雪竹,朱学峰.驾驶疲劳的眼睛状态检测算法[J].计算机与数字工程,2009,37(8):135-137.