基于转向盘图像的驾驶员疲劳检测方法研究*

2018-09-27 07:14蒋鹏民李海标黄名柏时君
汽车技术 2018年9期
关键词:转角驾驶员向量

蒋鹏民 李海标 黄名柏 时君

(桂林电子科技大学,桂林 541004)

主题词:驾驶员 疲劳检测 转向盘图像 支持向量机

1 前言

统计数据表明,我国每年因疲劳驾驶引起的交通事故占交通事故总数的20%左右,占特大交通事故的40%以上[1]。如果能在驾驶员疲劳产生的初期给予安全提醒,将会最大程度地避免交通事故,所以实时疲劳检测系统的设计研究对道路交通安全意义重大。现有驾驶员的疲劳检测方法主要依靠人脸面部特征进行判别[2],这种检测方法所采用的算法较复杂,实时效果较差,受个人特征影响较大。

研究发现,转向盘转角数据能实时反映驾驶员的操作状态,通过检测转向盘转角的实时变化即可判断驾驶员的疲劳状态,其中关键是对转向盘转角的测量。目前国内外主要采用转角测试仪或转角传感器[3]对转向盘转角进行测量,但这些仪器安装困难,不便于拆卸移动。为此,本文提出基于转向盘图像的驾驶员疲劳检测方法,并建立了驾驶员的疲劳判别模型,通过试验验证了判别模型的有效性。

2 基于转向盘图像的驾驶员疲劳检测方法

2.1 检测流程

基于转向盘图像的驾驶员疲劳检测流程如图1所示。首先,由摄像头实时采集转向盘图像并进行预处理,通过对预处理后的转向盘图像进行特征点的检测和跟踪,进而计算出转向盘的转角;其次,根据转向盘转角计算出与疲劳最相关的两个指标,即零速百分比PNS和角度标准差σ;最后,采用支持向量机(SVM)算法建立驾驶员的疲劳判别模型,利用该模型对试验数据进行判别。

图1 基于转向盘图像的驾驶员疲劳检测流程

2.2 检测方法

2.2.1 转向盘转角计算方法

2.2.1.1 转向盘圆心位置确定

通常情况下转向盘形状可视为圆形,但由于摄像头的安装位置不一定在转向盘中心的正上方,为增强算法的鲁棒性,采集过程中的转向盘形状一般按椭圆来处理。

首先利用安装于驾驶室车顶位置的摄像头拍摄一张白色背景的转向盘图像作为初始图像(图2),然后利用OpenCV库中findContours()函数对初始图像进行处理,通过设置一些约束参数得到转向盘图像的最外轮廓。为快速找到转向盘圆心位置,在OpenCV中利用图像矩moments()函数[4]计算图像中所有的矩,进而计算出转向盘圆心位置坐标O(x0,y0)。

图2 转向盘初始图像

2.2.1.2 特征点的检测与跟踪

特征点(也称角点)常被定义为两条边的交点,更严格地说,特征点的局部领域应该具有两个不同区域的不同方向的边界。

如图3所示,摄像头拍摄到的椭圆形转向盘上特征点位置坐标为m(xm,ym),而实际特征点位置坐标为M(xM,yM),跟踪点m计算出的转角与实际转角(由点M计算出的转角)存在一定的偏差。m(xm,ym)与M(xM,yM)之间的对应关系为:

式中,Xo为圆心位置横坐标;半径R为椭圆长半轴(等于转向盘最外轮廓半径),且R的长度不变。

图3 检测到的特征点位置与实际位置示意

为了使检测到的特征点坐标更精确,采用OpenCV库中亚像素级特征点检测函数cornerSubPix()[5]得到当前帧转向盘图像上特征点位置坐标A0(xm01,ym01)和B0(xm02,ym02),经式(1)和式(2)换算后得到当前帧转向盘实际位置坐标A0(xM01,yM01)和B0(xM02,yM02,)如图4所示。

图4 转向盘上特征点位置示意

在图像处理领域可设置感兴趣区域(ROI),也就是从图像中选择一个分析所关注的重点区域,在此区域内用鼠标点击即可检测出此区域内的特征点,以提高特征点的检测速度。

如果对每帧转向盘图像都要进行特征点检测则算法较复杂,同时考虑到在实际行车过程中驾驶员手臂可能会遮挡部分转向盘,为此,采用KLT跟踪算法[6]对特征点进行实时跟踪。

KLT跟踪算法的原理为:假设相邻两帧图像的亮度恒定、时间连续和空间一致性,简单的说,通过迭代寻找上一帧中转向盘图像中的特征点在当前帧中的位置。KLT跟踪算法的具体实现过程被写成了库函数CalcOpticalFlowPyrLK(),把上一帧特征点位置坐标A0(xM01,yM01)和输入到CalcOpticalFlowPyrLK()函数中,函数输出当前帧特征点位置坐标A1(xM11,yM11)和

2.2.1.3 转向盘转动角度θ的计算

当转向盘转动角度θ后,当前帧的特征点位置为如图5所示,最终转向盘转动角度θ为特征点A0和B0转动角度的平均值,即

由两点间距离公式计算出:

同理可算出 |OA1|、 |A0A1|、|OB0|、 |OB1|和 |B0B1|。

式中,NPSi为第i帧的零速百分比;Ni为第i帧前50 s内角速度的总采样点数;ni为第i帧前50 s内角速度在±0.1°/s内的点数。

另外利用角度标准差σ表征所选时间段内转向盘转角波动的大小,角度标准差计算式为:

一般情况下,需要求两个特征点动角度的平均值作为最后的转角数据,但是汽车实际行驶过程中驾驶员可能会遮挡一个特征点,这时另外一个特征点的转角可作为最终的转角数据。

2.2.2 特征提取

研究发现,当驾驶员处于疲劳状态时,其对转向盘的修正频度减少,转向盘静止不动的时间增多。本文采用零速百分比PNS来表征所选时间段内转向盘静止不动的程度[7],取时间段为50 s,采样频率为10帧/s,则零速百分比PNS计算式为:

式中,θj为第j帧对应的转向盘转角;μ为第M帧内平均每帧转向盘转角。

2.2.3 疲劳状态判别算法

综合所得的零速百分比PNS和角度标准差σ,采用支持向量机(SVM)分类算法建立驾驶员疲劳判别模型[8]。

支持向量机分类算法先训练样本集S,在样本空间中找到一个划分不同类的超平面,该超平面对应的模型为ωTx+b=0,模型参数ω为法向量、b为位移项、T为转置为零速百分比和角度标准差组成的自变量。

支持向量机分类算法实现步骤如下。

a.训练样本的采集。选择拥有5年以上驾龄的5名驾驶员,每位驾驶员随机挑选一部车况良好的车辆,采集不同行驶状况下的100个训练样本,样本情况如表1所列。

表1 不同行驶状况下采集的样本数量

b.参数的求解。找到一个超平面将训练样本分开,且满足两类支持向量(满足ωTx+b=±1的样本点)到超平面的距离之和最大,也就是找到约束模型ωTx+b=0的参数ω和b,使得间隔最大,即

以上就是支持向量机融合算法的基本模型,式(10)本身是凸二次规划问题,可以直接用现成的优化方法来计算,但是可以采用更高效的方法,就是使用拉格朗日乘子法得到其对偶问题:

式中,xt1、xt2、yt1、yt2为样本参数;α为拉格朗日常数。

以上是一般线性SVM分类原理,对于疲劳驾驶行为决策模型,属于非线性可分问题,则需在上式中引入实现线性映射的核函数K(xt1,xt2),则

支持向量机(SVM)融合算法的模型参数设置如表2所示。

本文基于4重交叉检验法对疲劳驾驶的检测模型做出准确率的评价,利用网格寻优法搜寻最优变量组合其搜寻结果如图6所示。由图6可知,当交叉检验准确率为87%时,模型参数达到最优,此时,C=4,γ=32。

表2 SVM训练参数的设置

图6 网格寻优法搜寻最优变量组合3D视图

3 试验结果与讨论

在实际的机动车行驶环境下对建立的疲劳判别模型进行了试验验证。试验时间段为上午9时至12时和下午2时至4时,地点为桂林市中山路的主干道。选取100个测试样本,其中清醒状态样本80个,疲劳状态样本20个,测试样本状态是由人工主观察所得,模型判别结果与实际状态一致视为判别正确,否则为误判。结果如表3所列。

表3 判别结果

由表3可知,疲劳判别模型正确识别率为85%,出现误判的原因为:有时光线不佳会造成特征点跟踪失败;有些司机受个人驾驶习惯影响,其对转向盘操作的行为与一般规律性不符。

4 结束语

本文提出一种基于转向盘图像的驾驶员疲劳检测方法。首先采用基于转向盘图像来计算转角,进而提取出与疲劳相关的零速百分比和角度标准差两个指标,最后采用处理非线性问题较好的支持向量机融合算法建立了驾驶员的疲劳判别模型。试验结果表明,该模型的检测正确率达85%,检测方法具有操作简单、实用性强、移植性好以及对驾驶员不造成干扰等优点。

猜你喜欢
转角驾驶员向量
基于高速公路的驾驶员换道意图识别
向量的分解
基于眼动的驾驶员危险认知
驾驶员安全带识别方法综述
聚焦“向量与三角”创新题
百花深处
一种门窗转角连接件
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线
请你发明