找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于3G视频的驾驶员疲劳状态检测方法

[复制链接]
admin 发表于 2013-3-24 08:27:13 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
疲劳驾驶是司机在驾车过程中介于意识清醒和进人睡眠的一种非正常状态,是导致交通事故的主要原因之一。由于车辆流动性强、任务区域广、安全隐患多、风险责任大,并缺乏科学有效的监管手段,近年来疲劳驾驶所造成的车辆事故时有发生。通过3G视频监控系统对驾驶员面部状态的实时监控,一旦发现驾驶员眼睛疲劳状态立即进行报警,能有效减少驾驶员疲劳所造成的交通事故,解决车辆管理中“看不见、听不着、控不了”的难题。
基于3C视频的疲劳检测主要包括视频流解压抓帧、人脸定位、人眼定位追踪和疲劳判断4个部分。文中提出一种基于肤色检测及灰度信息的疲劳检测算法,能有效用于3G车辆视频监控系统。

1 视频采集及预处理
文中使用车辆内部的3G视频监控装置来进行视频采集,位于驾驶员头顶正面上方,拍摄在驾驶过程中多种光照环境下、不同姿势和精神状态的驾驶员视频。
视频预处理主要采用DirectShow技术进行视频流解压抓帧。利用DirectShow的媒体监测器对象(Media Detector Object),将拍摄到的驾驶员视频文件进行视频流解压缩,实时在线地从视频流中提取指定的帧视频图像,并为后续的驾驶员眼睛状态检测提供位图数据。
媒体监测器不仅能获取媒体源文件的格式信息,也可以通过捕获过滤器从一个媒体文件的视频流中捕获一幅位图图像,通常获得的位图是24位RGB格式。通过搜索媒体文件,媒体监测器可以获得这个文件中任意点的图像。应用程序通过调用IMediaDet接口与Media Detector进行交互。接口包含了一些方法能够从媒体源文件中提取重要信息,比如媒体类型、帧速率甚至是视频流的单个帧。媒体监测器将过滤器视图封装到对象中,从而使应用程序屏蔽掉与视图相关的一些细节。
在疲劳检测中,用得到的第一幅图像检测人脸和眼睛,如若失败则从下一幅图像检测直至成功,并将得到的眼睛图像作为动态模板对以后的序列进行眼睛追踪,若失败则重新定位人眼。

2 基于肤色检测的人脸定位
肤色是人脸最为显着特征之一,对于彩色图像,肤色是图像中相对集中、稳定区域。肤色信息可将人脸和背景区域分开。研究表明,在除去亮度的色度空间中,不同人脸肤色分布具有聚类性。所以肤色的差异主要取决于色彩信息,而非亮度信息。基于肤色检测方法利用人的肤色中Cr和Cb的聚类特性,在YCbCr色彩空间中检测图像中是否存在人脸。这种算法检测速度快,并且受人脸旋转或侧转的影响较小。
肤色分割可以采用的色彩空间有很多种。其中YCbCr色彩空间具有与人类视觉感知过程类似的构成机理,能很好地反映肤色分布,并反映出肤色聚类特性。YCbCr模型与RGB模型的变换公式如下
201211070509456879415.jpg
通过对人脸数据库中和人脸视频图像中黄种人人脸肤色点的采样进行分析,可得到实验环境下肤色在YCbCr空间中的聚类,用数学表达式确定肤色范围的方法进行肤色建模。可根据Chai采用YCbCr颜色空间的CbCr平面,如果某像素点的颜色落入Cr=[133:173]和Cb=[77:127]范围内,就认为是属于肤色像素,否则就认为是非肤色像素。确定为肤色区域后,将其认定的肤色区域的R、G、B值均设定为255,在图像中显示为白色;非肤色区域设y=R=G=B=0,即在图像中显示为黑色。随后对得到的图像采用自适应阈值二值化。
201211070509457348116.jpg
式中,g(t)为灰度值为t的像素个数;G为非零像素个数。最后利用投影技术及头部的特点确定人脸上下和左右边界。由于眼部处于人脸上半部分,故只需保留图像的3/5。

3 基于灰度信息的人眼定位
眼睛区域与周围区域相比,具有灰度值较低且灰度变化率较大的特点。因此可基于眼睛图像的灰度信息进行定位。
   3.1 眼睛粗略定位
准确定位人脸后,根据面部器官分布,人眼在脸部的上半部,可以很简单的确定一个大概区域。观察人脸图片,发现眼部在水平方向经过皮肤、左眼眼白、左眼瞳孔、左眼眼白、皮肤、右眼眼白、右眼瞳孔、右眼眼白、皮肤、灰度变化较大。在灰度变化突变处进行微分,将产生高值,将其绝对值累加,则灰度变化越大的那一行,累积值越大。计算公式如下
201211070509457973117.jpg
f(x,y)为得到的人脸区域的灰度图像,通过实验发现,在眼睛处导数变化值之和的绝对值最大,通过此方法可粗略判断人眼所在线的位置。
3.2 人眼精确定位
通过观察发现眼睛周围Cb值较高,而Cr值较低,因此由式(5)计算得到特征图,以突出眼部特征。
201211070509458129418.jpg
其中,EyeMap是眼睛特征图, 201211070509459066919.jpg 都归一化到[0,255]之间, 201211070509459223120.jpg 是由Cr求反得到(255,Cr)。在得到EyeMap图后,设定阀值T,将EyeMap小于T的值设为0,这一步可视为一个简单的滤波以去掉非眼部特征的干扰。
得到EyeMap滤波图后,结合人眼粗定位结果,从左到右搜索,按比例定义相对于人脸区域一定大小的框,当框进EyeMap滤波图值的和最大时,即为人眼。
3.3 眼睛的追踪
对人眼完成定位后,还要利用动态模板匹配的方法跟踪眼睛。设眼睛模板左上角的位置为(x,y),下一帧的搜索范围是原位置上沿上、下、左、右4个方向各扩展10个像素。其公式为
201211070509459691821.jpg
式中,N是模板中像索的个数;M为模板;I为图像中待匹配的部分。
可得所有大于阈值p的最大值所对应的坐标为最匹配的位置。以此得到的眼睛图像作为下一帧图像的模板。在追踪的过程中,若得到的p均小于阈值或两眼的行距过大则重新回到眼睛的检测过程。

4 基于Perclos的疲劳识别
文中的疲劳识别基于Perclos的P80模型,即将闭合程度大于80%的眼睛状态判断为闭合状态。以初始时刻司机清醒时的上下眼睑最大距离为标准,若以后得到的距离小于此距离的80%则判断为闭合。假设实验视频帧率10 f·s-1分辨率为640×480,时长60s。
则以每6 s视频作为1个检测单元,间隔0.33 s取1帧作眼睛状态检测。统计每个检测单元内18帧图像的状态,得到眼睛闭合帧数CloseFr ame_Num和处理的总帧数SumFrame_Num,依据式(7)计算相应的Perclos值。
201211070509460160622.jpg
如果所得Perclos值大于实验确定的阈值20%,则判断此时驾驶员可能已处于疲劳状态,通过报警系统进行警告。

5 结束语
视频监控能对驾驶者进行监督提醒,有效预防疲劳驾驶,减少疲劳驾驶所引起的车辆事故。3G视频监控是车辆监控发展的新趋势。算法在3G监控视频帧的基础上,进行了人脸定位、人眼定位与追踪及疲劳状态判断。实验表明,该算法有较高的鲁棒性及准确性,并能有效应用于实际。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-26 00:15 , Processed in 0.058147 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表