一种疲劳驾驶检测装置及方法与流程

文档序号:12676707阅读:164来源:国知局
一种疲劳驾驶检测装置及方法与流程

本发明属于汽车安全驾驶技术领域,特别是一种驾驶员疲劳驾驶检测装置及方法。



背景技术:

近年来随着人们生活水平的提高,汽车的使用量正在呈现飞速增长的趋势,在每年的交通事故中,因疲劳驾驶造成的交通事故占据了重要比例。因此,研究开发高性能的疲劳驾驶检测系统,能够有效减少疲劳驾驶等行为带来的隐患,从而达到保护驾驶员自身及周围人群的生命财产安全的目的。目前疲劳驾驶检测方式各种各样,主要分为接触式和非接触式检测。接触式检测就是通过仪器测量驾驶员的心电图、脑电图等,这样的方式虽然准确性较高,但是对驾驶员的驾驶操作产生影响,同时也会使驾驶员感到不舒服;非接触式检测就是通过监控设备监测驾驶员的生理状态,这种检测方式成本相对较低,检测精度高,被广泛应用到疲劳驾驶检测当中。

以驾驶员的眼部为检测对象的疲劳驾驶检测技术,一般通过摄像头采集驾驶员的面部图像,再通过图像的进一步分析,确定眼部状态。而眼部状态监测主要是判断驾驶员是否闭眼,存在的问题有:

1、处理速度慢,对硬件的要求比较高;因为要实现时实监控驾驶员的状态,需要对大量的图像进行处理,计算量非常大,而疲劳检测的时实性要求非常高。

2、适应性差;首先,因为人体存在差异性,对于不同的个体,疲劳判断的界限设定不具有动态性;其次,检测的精度会受到影响,当驾驶员前后左右移动,导致眼部图像大小、角度出现变化时,无法动态适应,准确度出现波动;再就是很多人会戴眼镜,这也会影响到系统的精度。

由于上述存在的缺陷,很多通过视觉监控检测疲劳的方法在现实应用中的效果并不理想,实用性差。



技术实现要素:

本发明所解决的技术问题在于提供一种疲劳驾驶检测装置及方法,以解决疲劳检测中图像处理速度慢、疲劳判断适应性差的问题。

实现本发明目的的技术解决方案为:

一种疲劳驾驶检测装置,包括USB摄像机、人脸定位模块、人眼定位模块、眼睛区域图像处理模块、眼睛状态信息收集模块、疲劳判定模块、I/O接口、报警装置;所述报警装置包括LED灯和喇叭;所述USB摄像机与人脸定位模块相连,人脸定位模块通过I/O接口与LED灯相连,人脸定位模块与人眼定位模块相连;人眼定位模块与眼睛区域图像处理模块相连;眼睛区域图像处理模块分别与眼睛状态信息收集模块和疲劳判定模块相连,眼睛状态信息收集模块再与疲劳判定模块相连,疲劳判定模块通过I/O接口与喇叭相连;

USB摄像机用以采集驾驶员的正面图像;

人脸定位模块用以通过加载OpenCV机器视觉库中已经训练好的人脸特征分类器,采用Adaboost算法对USB摄像机采集的驾驶员的正面图像进行人脸定位;如果没有检测到人脸,则LED灯闪烁,发出提醒信号,并重新读取图像;

人眼定位模块用以在人脸定位模块进行人脸定位后,根据人眼在人脸的分布规律,首先对人眼粗定位,然后通过求粗定位眼部图像的垂直灰度投影,根据灰度投影曲线在垂直方法的进一步定位;

眼睛区域图像处理模块用以在人眼定位模块进行人眼定位后,对眼部图像进行处理,获取驾驶员的眼部状态信息;

眼睛状态信息收集模块用以在开始的5-7分钟时间获取驾驶员正常驾驶时的眼部信息,即计算眼睛区域图像处理模块中驾驶员非闭眼时所有内接圆半径R的平均值inf,并将该平均值传送给疲劳判定模块;

疲劳判定模块用以计算单位周期内驾驶员闭眼时间占单位时间的百分比,若百分比大于80%,则发出警报;每隔5分钟时间计算驾驶员的疲劳度,若疲劳度大于设定值,则控制喇叭发出警报。

一种疲劳驾驶检测方法,包括以下步骤:

步骤1、初始化摄像头,设置摄像头读入图片的属性值,即读入的图像大小值;

步骤2、步骤2、加载OpenCV机器视觉库中已有的人脸特征分类器;

步骤3、摄像头采集图像,将图像信息输送给人脸定位模块;

步骤4、图像预处理,即图像大小调整、灰度化、高斯滤波;

步骤5、通过Adaboost算法检测人脸,定位到人脸后记录当前人脸所在的位置,后续每一帧图像中的人脸定位方法相同;

步骤6,对人眼进行定位:人脸定位后,根据人眼在人脸区域的分布规律,对人眼进行粗定位;人眼区域粗定位后,对粗定位人眼图像进行高斯滤波,去除噪声影响,通过计算垂直灰度投影进一步对眼睛区域精确定位;

步骤7、人眼精确定位后,改变眼部图像大小,将眼部图像的颜色空间进行转换并二值化处理,通过距离变换的方式求二值化图像中最大连通域的最大内接圆半径R;

步骤8、根据步骤7求出的R收集驾驶员正常状态下眼部的图像信息;剔除其中半径小于等于5的数值,计算剔除数据后的所有半径R的平均值inf;

步骤9、计算驾驶员在单位周期时间内闭眼时间占单位周期时间的比例,若比例大于80%,则判断驾驶员处于疲劳状态;

步骤10、计算驾驶员的眨眼频率,根据眨眼频率来计算驾驶员的疲劳度,若疲劳度大于设定值,则判定驾驶员当前处于疲劳状态;

步骤11、根据步骤9、10的综合判定结果,发出报警;当步骤9或步骤10任何一步判定驾驶员当前处于疲劳状态,则发出报警;当步骤9或步骤10均未判定驾驶员当前处于疲劳状态,则重新进行视频图像采集。

本发明与现有技术相比,其显著优点:

(1)本发明采用的方法,处理速度快,易于应用到各种便携式处理设备中,降低了对设备性能的要求;

(2)减少了个体性差异对检测结果的影响,眼睛的定位方式能够减小眼镜对定位精度的影响,提高了疲劳判断的准确性,具有较好的实用性;

(3)通过结合人眼的闭合时间与疲劳度两个显著特征进行复合判断,比单一方法进行识别检测的准确率更高;

(4)眼部区域图像处理采用颜色空间转换的方式对图像二值化处理,比直接对灰度图像阈值化处理的分割效果好;

(5)对驾驶员的精神状态进行判断,能够在驾驶员疲劳的时候提醒驾驶员,及时保障了人们的生命财产安全。

下面结合附图对本发明作进一步详细描述。

附图说明

图1是疲劳检测装置的结构简图。

图2是疲劳驾驶检测方法流程图。

图3是人脸定位示意图。

图4是PERCLOS测量原理图。

图5是人脸、人眼定位及人眼区域图像处理流程示意图。

具体实施方式

为了说明本发明的技术方案及技术目的,下面结合附图及具体实施例对本发明做进一步的介绍。

结合图1,本发明的一种疲劳驾驶检测装置,包括USB摄像机、人脸定位模块、人眼定位模块、眼睛区域图像处理模块、眼睛状态信息收集模块、疲劳判定模块、I/O接口、报警装置;所述报警装置包括LED灯和喇叭;所述USB摄像机与人脸定位模块相连,人脸定位模块通过I/O接口与LED灯相连,人脸定位模块与人眼定位模块相连;人眼定位模块与眼睛区域图像处理模块相连;眼睛区域图像处理模块分别与眼睛状态信息收集模块和疲劳判定模块相连,眼睛状态信息收集模块再与疲劳判定模块相连,疲劳判定模块通过I/O接口与喇叭相连;

所述USB摄像机用以采集驾驶员的正面图像;

USB摄像机的工作过程为:

初始化摄像头,设置摄像头读入图片的属性值,即读入的图像大小值,摄像头采集图像,将图像信息输送给人脸定位模块。

人脸定位模块用以通过加载OpenCV机器视觉库中已经训练好的人脸特征分类器,采用Adaboost算法对USB摄像机采集的驾驶员的正面图像进行人脸定位;如果没有检测到人脸,则LED灯闪烁,发出提醒信号,并重新读取图像;

人脸定位时,为了使人脸定位的速度更快,后续每一帧图像中的人脸定位方法相同,但人脸搜索区域并非整张图像,而是在前一帧图像中人脸区域所在位置附近进行搜索;

人脸定位模块的工作过程为:

首先对图像进行预处理,即图像大小调整、灰度化、高斯滤波;加载人脸特征分类器,采用Adaboost算法定位人脸,如图3中所示,人脸区域用矩形框1(人脸矩形框)表示,后面的每一帧图像中人脸检测算法相同,但搜索区域是前一帧图像中人脸宽度facew的1.2倍,人脸搜索区域用图3中的矩形框2表示,这种人脸定位方式可以大大减小图像的处理时间,提高系统的实时性。如果没有检测到人脸,则LED灯闪烁,发出提醒信号,并重新读取图像。

人眼定位模块用以在人脸定位模块进行人脸定位后,根据人眼在人脸的分布规律,首先对人眼粗定位,然后通过求粗定位眼部图像的垂直灰度投影,根据灰度投影曲线在垂直方法的进一步定位;

虽然理论上水平灰度投影可以使眼睛定位更精确,但因为考虑到眉毛、眼镜框等的影响,故不考虑水平方向的定位,这样可以提高系统的检测准确性。

人眼定位模块的工作过程为:

人脸定位后,根据人眼在人脸区域的分布规律,对人眼进行粗定位,人眼粗定位区域用图3中的矩形框3(人眼矩形框)表示,在人脸已经定位的基础上,通过设定人眼在人脸上的分布参数来对人眼粗定位,参数设定如下:

top=0.3facew,side=0.15facew,height=0.22facew,width=0.28facew

其中,top是矩形框3的上边线与矩形框1的上边线的距离,side是矩形框3的左边线与矩形框1的左边线的距离,height是矩形框3的高,即粗定位人眼图像高度,width是矩形框3的宽度,即粗定位人眼图像的宽度。

人眼区域粗定位后,对粗定位人眼图像进行高斯滤波,去除噪声影响,通过计算垂直灰度投影进一步对眼睛区域精确定位:

首先对粗定位人眼图像进行高斯滤波,用滤波模板确定的邻域内像素的加权平均灰度值去替代滤波模板中心像素点的值,滤波模板template大小为:

然后通过如下公式计算粗定位人眼图像的垂直灰度投影;

其中,f(x,y)表示粗定位人眼图像在坐标(x,y)处的像素值,width表示粗定位人眼图像宽度,A(x)表示粗定位人眼图像中每一列像素值之和;

最后比较A(x)数值的大小,找出x范围在0.15width~0.85width之间的最小A(x)所对应的x值,用index表示,在图3中坐标系OXY下,眼睛精确定位矩形框4的左上角坐标为(index-0.2width,0),右下角坐标为(index+0.2width,height);其中OXY坐标以眼睛粗定位的边框左上角为O点,边框上端向右为X轴正向,边框左端向下为Y轴正向;

眼睛区域图像处理模块用以在人眼定位模块进行人眼定位后,对眼部图像进行处理,获取驾驶员的眼部状态信息;

眼睛区域图像处理模块的工作过程为:

首先将精确定位后的人眼图像扩大2倍;然后将人眼区域图像的颜色空间由RGB转换为YCbCr格式,选择Cb通道的图像作为待处理对象,并将图像二值化,设置二值化阈值,对二值化图像进行开运算;找出二值化图像中的最大连通域,通过距离变换的方法求出最大连通域的最大内接圆半径R。

眼睛状态信息收集模块用以在开始的5分钟时间获取驾驶员正常驾驶时的眼部信息,即计算眼睛区域图像处理模块中驾驶员非闭眼时所有内接圆半径R的平均值inf,并将该平均值传送给疲劳判定模块。

眼睛状态信息收集模块的工作过程为:

统计5-7分钟时间内图像的总帧数totalNumber以及每幅图像计算出的半径R,剔除其中半径小于等于5的数值,计算剔除数据后的所有半径R的平均值inf;在5-7分钟后完成驾驶员眼部信息收集后,将inf传送给疲劳判定模块,眼睛状态信息收集模块停止工作;

疲劳判定模块用以计算单位周期内驾驶员闭眼时间占单位时间的百分比,若百分比大于80%,则发出警报;每隔5分钟时间计算驾驶员的疲劳度,若疲劳度大于设定值,则控制喇叭发出警报。

疲劳判定模块的工作过程为:

眼睛状态信息收集模块停止工作后,疲劳判定模块开始从眼睛区域图像处理模块获取驾驶员的眼部信息,计算驾驶员在单位周期时间内闭眼时间占单位周期时间的比例,公式如下:

图像总帧数设为10,即每10帧图像进行一次判断,眼睛闭合图像帧数的计算方式是:眼睛闭合图像帧数从0开始计数,当半径R的值大于0.6inf时间,眼睛闭合图像帧数加1,图像总帧数大于等于10时,眼睛闭合图像帧数重新从0开始计数,当f的值大于80%时,喇叭开始发出报警声;

与此同时,每隔5分钟计算驾驶员的疲劳度F,计算公式如下:

其中,blinkCount是眨眼次数,眨眼次数的计算方式是:每隔0.3秒计算闭眼图像帧数占0.3秒图像总帧数的百分比是否超过80%,若是,则眨眼次数blinkCount

(blinkCount从0开始计数)加1,然后每隔5分钟计算眨眼次数blinkCount的值,眨眼次数blinkCount就是驾驶员5分钟时间内的眨眼频率,5分钟过后眨眼次数blinkCount重新从0开始计数。当F的值大于25%时间,喇叭发出报警声。

结合图2-图5,本发明的另一个实施例中还提出了一种基于上述疲劳驾驶检测装置的实现的疲劳驾驶检测方法,包括以下步骤:

步骤1、初始化摄像头,设置摄像头读入图片的属性值,即读入的图像大小值;

图像大小值的设定不仅要看摄像头所支持的分辨率,而且还要视处理器设备的计算能力而定;作为优选的,对于摄像头支持的分辨率在480×360附近的,可以选择将图像大小设置成该分辨率;对于摄像头最小分辨率大于等于640×480的,需要设置摄像头的最小分辨率,而后续图像预处理还需要将图像缩小;

步骤2、加载OpenCV机器视觉库中已有的人脸特征分类器;

步骤3、摄像头采集图像,将图像信息输送给人脸定位模块;

步骤4、图像预处理,即图像大小调整、灰度化、高斯滤波;

作为优选的,对于摄像头支持的分辨率在480×360附近的,则保持图片大小不变;如果初始图像分辨率大于等于640×480,则将图像的大小缩小0.4倍,采用的方法是局部均值法,在缩小图片大小的同时较好地保留原有图像信息,缩小后的图像能够减少运算量,提高实时性;

步骤5、通过Adaboost算法检测人脸,定位到人脸后记录当前人脸所在的位置,后续每一帧图像中的人脸定位方法相同,但人脸搜索区域不同,具体过程如下;

如图3中所示,人脸区域用矩形框1(人脸矩形框)表示,后面的每一帧图像中人脸检测算法相同,但搜索区域是前一帧图像中人脸宽度facew的1.2倍,人脸搜索区域用图3中的矩形框2表示,这种人脸定位方式可以大大减小图像的处理时间,提高系统的实时性。如果没有检测到人脸,则LED灯闪烁,发出提醒信号,并重新读取图像;

步骤6、对人眼进行定位:

6.1、人脸定位后,根据人眼在人脸区域的分布规律,对人眼进行粗定位;

人眼粗定位区域用图3中的矩形框3(人眼矩形框)表示,在人脸已经定位的基础上,通过设定人眼在人脸上的分布参数来对人眼粗定位,参数设定如下:

top=0.3facew,side=0.15facew,height=0.22facew,width=0.28facew

其中,top是矩形框3的上边线与矩形框1的上边线的距离,side是矩形框3的左边线与矩形框1的左边线的距离,height是矩形框3的高,即粗定位人眼图像高度,width是矩形框3的宽度,即粗定位人眼图像的宽度。

6.2、人眼区域粗定位后,对粗定位人眼图像进行高斯滤波,去除噪声影响,通过计算垂直灰度投影进一步对眼睛区域精确定位;

人眼精确定位可以有效减少眼镜等因素的干扰,提高检测精度,具体步骤如下:

6.2.1对粗定位人眼图像进行高斯滤波,消除由于环境或是图像在传输过程中产生的噪声,即用一个滤波模板template(滤波模板大小如下所示)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

6.2.2计算步骤6中粗定位人眼区域图像的垂直灰度投影,计算公式如下:

其中,f(x,y)表示粗定位人眼图像在坐标(x,y)处的像素值,width表示粗定位人眼图像宽度,A(x)表示粗定位人眼图像中每一列像素值之和;

6.2.3比较A(x)数值的大小,找出x范围在0.15width~0.85width之间的最小A(x)所对应的x值,用index表示,在图3中坐标系OXY下,眼睛精确定位矩形框4的左上角坐标为(index-0.2width,0),右下角坐标为(index+0.2width,height);其中OXY坐标以眼睛粗定位的边框左上角为O点,边框上端向右为X轴正向,边框左端向下为Y轴正向;

步骤7、人眼精确定位后,改变眼部图像大小,将眼部图像的颜色空间进行转换并二值化处理,通过距离变换的方式求二值化图像中最大连通域的最大内接圆半径;具体求解过程如下:

7.1将精确定位后的人眼图像扩大2倍;便于区分睁眼和闭眼状态;眼部图像如果太小,不便于区分睁眼与闭眼;

7.2将精确定位的人眼区域图像的颜色空间由RGB转换为YCbCr格式,选择Cb通道的图像作为待处理对象,并将图像二值化,设置二值化阈值,对二值化图像进行开运算,去除一些小的连通域;

作为一种优选方案,本实施例中二值化阈值设置为45;在一些实施方式中,阈值的大小可以通过光传感器来进行调节,当光线较强时可以将阈值适当减小,当光线较弱时可以将阈值适当增大。

步骤7.2中的二值化图像在垂直方向0~0.2height区域,若像素值大于1,则将像素值置为0,消除眉毛对检测的干扰;

7.3找出二值化图像中的最大连通域,即首先对所有连通域进行标记,然后计算每个标记的连通域像素值之和,即连通域的面积,比较面积的大小,面积最大的就是所求的最大连通域,除了最大连通域部分,其余位置的像素值全部设置为0;

7.4将步骤7.3中处理后的二值化图像经过距离变换,得到变换后的图像dist_image,其中每个像素点的值是该像素点到与该像素点最近的零像素点的距离,找到图像

dist_image像素值的最大值,该最大值点的位置即连通域的质心,质心位置到非零像素点的最短距离就是连通域的最大内接圆半径R;

步骤8、根据步骤7.4求出的最大内接圆半径R收集驾驶员正常状态下眼部的图像信息,具体过程如下:

统计5-7分钟时间内图像的总帧数totalNumber以及每幅图像计算出的半径R,剔除其中半径小于等于5的数值,计算剔除数据后的所有半径R的平均值inf;将平均值inf作为疲劳判断阈值的依据,进行疲劳判定;

作为优选,统计图像的总帧数totalNumber以及每幅图像计算出的半径R的时间段为6分钟。

步骤9、计算驾驶员在单位周期时间内闭眼时间占单位周期时间的比例,若比例大于80%,则判断驾驶员处于疲劳状态,具体过程如下:

使用PERCLOS的P80方法进行疲劳判定,通过统计设定的单位周期内(1秒),眼睛闭合时间占单位周期时间的百分比,若其比例超过了预先设定的阈值T,即视作当前驾驶者已经处于疲劳驾驶;

结合图4对PERCLOS的P80方法作进一步说明:

PERCLOS在应用中有三种标准:P70,P80和EM,分别表示眼睛闭合程度为70%,80%和50%。实验证明P80标准效果最好,因此,本实施例中采用P80的准则对疲劳程度进行评判。t1为人眼正常状态时的初始时刻,即人眼张开程度为80%的时刻;t2为人眼在闭合过程中,人眼张开程度为20%的时刻;t3为人眼在完全闭合后再张开过程中,人眼张开程度达到20%的时刻;t4为人眼完成了一次眨眼过程,恢复到正常的张开状态时的时刻;

当取得t1,t2,t3,t4后,计算PERCLOS的值f:

f为眼睛闭合时间占设定时间段的百分率;

因为处理器设备处理每一帧图像的时间都在一个动态变化当中,所以上述求f值可以转换成如下计算方式:

本实施例中,若f的值大于阈值T(阈值T的值设为80%),则判定驾驶员处于疲劳状态。

作为优选的,图像总帧数设为10,即每10帧图像进行一次判断,眼睛闭合图像帧数的计算方式是:眼睛闭合图像帧数从0开始计数,当半径R的值大于0.6inf时间,眼睛闭合图像帧数加1,图像总帧数大于等于10时,眼睛闭合图像帧数重新从0开始计数;

步骤10、在计算步骤9中f的同时,计算驾驶员的眨眼频率,根据眨眼频率来计算驾驶员的疲劳度,若疲劳度大于设定值,则判定驾驶员当前处于疲劳状态,具体过程如下:

疲劳判定模块除了利用驾驶员闭眼的方式进行疲劳判定,还借助眨眼频率来计算驾驶员的疲劳度,将其作为辅助来判断驾驶员是否处于疲劳状态,当疲劳度F大于设定值,则发出警报,其中眨眼频率和疲劳度F的计算方式如下:

根据步骤9中所述的驾驶员闭眼图像帧数计算方式,优选的,每隔0.3秒计算闭眼图像帧数占0.3秒图像总帧数的百分比是否超过80%,若是,则眨眼次数blinkCount(blinkCount从0开始计数)加1,然后每隔5分钟计算眨眼次数blinkCount的值,眨眼次数blinkCount就是驾驶员5分钟时间内的眨眼频率,5分钟过后眨眼次数blinkCount重新从0开始计数,人的正常眨眼频率大概是每分钟15~16次,疲劳度F的计算如下所示:

当F大于25%时,则判定驾驶员当前处于疲劳状态;

步骤11、根据步骤9、10的综合判定结果,发出报警;具体为,当步骤9或步骤10任何一步判定驾驶员当前处于疲劳状态,则发出报警;当步骤9或步骤10均未判定驾驶员当前处于疲劳状态,则重新进行视频图像采集。

本发明中最主要的部分是人脸定位、人眼定位以及眼部图像处理部分,图5是人脸、人眼定位及人眼区域图像处理流程实例图,从图中可以看出本发明提出的人脸、人眼定位方法效果良好,而且从最后的图像中看出,通过计算出的圆直径可以较好地估计眼睛的张合度。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1