司机疲劳驾驶检测中人脸图像的快速人眼定位

2022-09-11

疲劳驾驶是造成交通事故的主要原因之一[1]。由于长时间驾驶, 或缺少睡眠等原因, 司机会出现疲劳或困倦状态。在疲劳驾驶检测中, 对人眼高效, 实时准确检测是关键步骤之一。检测方法主要有神经网络、模板匹配、统计方法等[2]。本文在深入研究国内外各种驾驶疲劳检侧方法的原理、关健技术和难点后, 在现有的基础上进行了以下方面的研究。 (1) 人脸定位:利用肤色在YCb Cr颜色空间中的聚类特性, 通过高斯拟合肤色, 得到肤色区域, 然后通过滤波, 标记最大连通图的方法选定人脸区域。 (2) 人眼定位:分析各种快速且有效人眼定位算法, 通过两次定位的方法实现了对人脸的单眼定位。为叙述方便, 本文以图1 (a) 为例讲解整套算法流程。

1 人脸定位

1.1 人脸下采样

人脸定位这个模块计算量偏大, 通过下采样降低输入图像像素, 以保证系统的实时性, 设输入图像为f (x, y) , 大小为m×n, 下采样如公式 (1) 所示

s为采样尺度, 以为s=9尺度采样后, 原图与下采样图如图1 (a) , (b) 所示。

1.2 YCb Cr肤色模型

肤色是人脸最为显著特征之一, 对于彩色图像, 肤色是图像中相对集中、稳定区域。肤色信息可将人脸和背景区域分开。研究表明, 在除去亮度的色度空间中, 不同人脸肤色分布具有聚类性[3], 因此采用肤色分割图像是可行的。

1.2.1 色彩空间的选取

根据计算机色彩理论, 目前应用最广的色彩空间有RGB格式、HIS格式和YCb Cr格式。

综合考虑R G B格式、H I S格式以及Y C b C r格式色彩空间不同特点, 选用YCb Cr色彩空间来建立肤色模型, 原因在于通过大量肤色聚类实验[3]发现在YCb Cr色彩空间下, 肤色的亮度分量Y与Cb, Cr相对无关, 通过对Cb Cr的二维子空间操作, 可以得到实用的肤色聚类模型, 以此判断像素点是否为肤色像素。相对于传统的肤色模型, 此方法能适合各种不同的肤色特征, 受光照影响更小, 具有更强鲁棒性。

1.2.2 肤色相似度建模

以图像中人脸眼睛以下嘴唇以上的狭长块作为人脸肤色统计区域, 在这些区域中人工选取人脸肤色像素点作为训练样本, 通过算法训练出Cb, Cr在高斯模型中的分布中心[4]。然后根据待检测图像中所考察的像素点离该中心的远近来得到一个相对于肤色的相似度, 就可以得到一个原图的相似度分布图。在这个过程中, 在训练高斯分布中心时需要确定Cb, Cr的均值M和方差C。高斯分布的数学表达示为:

其中行x表示Cb Cr空间中一个像素。本文通过对图像的肤色统计, 得到的训练样本为:

其中, m是均值, C是协方差。这样由均值m和协方差C, 采用二维正态联合分布率, 可以对图像进行相似度模型的建立, 如公式 (4) :

其中x表示图像Cb Cr空间中的一个像素, C和M为预先求得的肤色训练样本的协方差和均值。在得到被检测图像中的像素点的Cb, Cr值后, 就可以得到该像素点为皮肤点的概率, 得到一个相对与肤色的相似度分布图, 实验结果如图1 (b) (c) 所示。图1 (c) 中颜色越接近自色的区域为肤色区域的可能性就越大。

1.3 图像二值化选择

为了得到更精确的肤色区域, 还要进行二值化处理, 以提取肤色区域, 这一步的关键是阀值选取。为得到最佳阀值, 本文采用了区域增长算法[5]的自适应阀值处理, 每次分割中使用的都是最优阀值。区域增长的自适应阀值是根据逐步计算的结果得到的, 递进地使阀值减小可以看到分割区域的增大。但每次增长的变化量是逐渐地减少的, 而使区域增长最小的阀值即是最优结果。

具体实现步骤如下:首先将分割阀值起始值设为K=0.8, 通过这个值将图像进行二值化, 得到一个二值图像, 然后再以0.05的步长减小K, 再对相似度图进行二值处理, 并计算出相邻两次二值图像的差值, 当某相邻两次二值图像的差值最小时所得到的阀值即是所要的最佳阀值。二值化效果如图2 (a) 所示。

1.4 降噪 (滤波)

考虑到图2 (a) 中有很多明显不是人脸区域的噪声点, 本文通过一种简单方法降噪。在二值化图f (x, y) 中, 肤色点为1, 其余点为0, 统计f (x, y) 中每一点为中心的5×5区域中肤色像素个数, 记为f_num, 通过如下公式计算:

当f_num>13时, 该点保留为肤色点, 否则视为噪声点去除, 实验结果如图2 (b) 所示。

1.5 人脸区域标记

疲劳驾驶检测中, 人脸区域应为图片肤色最大区域。本文通过经典深度优先搜索算法DFS (Depth-First Traversal) [6]进行人脸区域标记。给定图G的初态是所有顶点均未访问过, 在G中任选一个顶点vi为出发点, 其DFS定义如下:首先, 访问出发点vi, 并将其标记为已访问;然后, 依次从vi出发搜索vi的每一个邻接点vj, 若vj未访问过, 则以vj为新的出发点继续搜索。显然, 这种搜索法是递归的, 其特点是尽可能对纵深方向搜索, 故称为深度优先搜索。标记后图与人脸区域的选择如图2 (c) (d) 所示。

2 人眼定位

定位人眼采取由粗到精的定位方法, 即先定位人眼大概区域, 然后缩小范围精确定位人眼。需要特别指出的是, 因为计算量相对较小, 我们还是采用图1 (a) 的原输入图像做为处理图像。另外, 考虑到眨眼是双眼同时闭合张开, 因此只需要检测一只眼睛。这样即缩小了检测面积, 提高了处理速度;又可以解决驾驶时头部倾斜而引起眼睛位于不同水平面的问题;还可以解决司机驾驶时头部偏转, 一只眼睛在侧面被挡住的难题。

2.1 眼睛粗略定位

准确定位人脸后, 根据面部器官分布, 人眼在脸部的上半部, 可以很简单的确定一个大概区域, 这个区域不要求很准确, 只要包含人眼即可。在这个区域内, 除了双眼和眉毛, 可能含有小部分头发。

观察人脸图片, 发现眼部在水平方向经过皮肤, 左眼眼白, 左眼瞳孔, 左眼眼白, 皮肤, 右眼眼白, 右眼瞳孔, 右眼眼白, 皮肤, 灰度变化较大。在灰度变化突变处进行微分, 将产生高值, 将其绝对值累加, 则灰度变化越大的那一行, 累积值越大。在数学上可用灰度的导数来表示变化, 而在数字图像中应用差分代替导数运算。计算公式如下:

f (x, y) 为得到的人脸区域的灰度图像, 它与RGB色彩空间的转换公式为:

通过大量实验发现, 在眼睛处导数变化值和的绝对值最大, 通过此方法可粗略判断人眼所在线的位置。

2.2 人眼精确定位

通过观察发现眼睛周围Cb值较高, 而Cr值较低, 因此由以下公式[3]计算得到特征图, 以突出眼部特征。

其中Eye Map是眼睛特征图, (Cb) 2, (C°r) 2, (Cb/Cr) 都归一化到[0, 255]之间, °Cr是由Cr求反得到 (255-Cr) 。在得到Eye Map图后, 设定阀值T, 将Eye Map图小于阀值T的值设为0, 这一步可视为一个简单的滤波以去掉非眼部特征的干扰。实验结果如图3 (b) (c) 所示。

得到如图3 (c) 的Eye Map滤波图后, 结合人眼粗定位结果, 从左到右搜索, 按比例定义相对于人脸区域一定大小的框, 当框进的Eye Map滤波图的值的和最大时, 即为人眼。

3 实验结果

在CPU为TURIONTL58, 内存为1G的计算机上进行了验证。测试样本是200张输入为640X480的含人脸图片。实验表明, 该算法具有较快的速度和准确率, 一副图像的处理速度平均仅为49ms, 正确检测率为98.5%。

4 结语

人眼定位是构建疲劳驾驶检测系统的前提条件, 本文在传统人脸识别YCb Cr模型基础上, 进行了两次人眼定位, 使得眼睛定位的计算速度大幅提升, 并且提高了定位的精度。实验表明, 该方法有较高的准确率, 可以应用实际。

摘要:在司机疲劳驾驶检测中, 对人眼的高效, 实时准确检测是关键步骤之一。本文研究了司机人脸图像中的人眼检测方法。首先, 将得到驾驶员面部图像隐射到YCbCr空间, 建立基于肤色的二维高斯分布模型, 通过滤波, 标记分割出肤色并得到人脸的区域;然后, 利用人眼的分布特点及自身特性, 通过两次定位的方法实现了对司机人脸的人眼定位。

关键词:司机疲劳驾驶,YCbCr空间,肤色分割,人眼检测

参考文献

[1] 公安部通报2008年全国道路交通安全情况[EB/OL].http://news.xinhuanet.com.

[2] 唐琎, 许海柱, 王力炳.图像中人眼检测技术综述[J].计算机应用研究, 2008, 25 (4) :961~965.

[3] R.L.Hsu, M.Abdel-Mottaleb, A.K.Jain.Face Detection in Color Images[J].IEEE Transactions on PAMI, 2002, 24 (5) :696~706.

[4] 唐立峰, 何东健.基于肤色分割的人脸检测算法研究[J].计算机工程与设计, 2009, 30 (19) :4461~4464.

[5] 王英, 关宇东, 李艳.一种融合区域生长和边缘检测的彩色图像分割方法[J].计算机应用, 2008, 26 (16) :85~87.

[6] 吴伟明, 严蔚敏.数据结构 (C语言版) [M].北京:清华大学出版社, 2009.

上一篇:中西医结合治疗结核性胸膜炎临床体验下一篇:税收环境对公交企业的影响及对策建议