一种基于方向盘图像的司机疲劳检测方法和检测装置与流程

文档序号:12721295阅读:308来源:国知局
一种基于方向盘图像的司机疲劳检测方法和检测装置与流程

本发明涉及车辆司机疲劳检测领域,具体为一种基于方向盘图像的司机疲劳检测方法和检测装置。



背景技术:

随着机动车数量的增多,交通事故也持续增加。统计数据表明,我国每年由于疲劳驾驶导致的死亡人数约9000人,给国家带来了巨大的人员和财产损失。统计数据表明,司机疲劳引起的交通事故占交通事故总数的20%左右,占特大交通事故数的40%以上。如果能在司机疲劳产生的初期给予预警,那么就会减少交通事故的发生,对交通安全意义重大。

现有的司机疲劳检测不少是基于人脸技术,因为需要对司机的正常状态和疲劳状态的特征进行识别分类判别,硬件成本较高,算法复杂,实时效果差,难以实现,且因有些司机的疲劳在脸部并没有特别反映,受个人特征影响比较大。

研究发现方向盘转角数据能实时反映司机的操作状态,当司机处于疲劳状态时,其对环境的感知能力、判断能力和实际操控能力都会下降,其直接操控的方向盘转角会出现异常波动。

通过检测方向盘转角的实时变化,即可判断司机的疲劳状态。其中关键是对方向盘转角的测量。目前,方向盘转角的测量方法安装转角传感器,测量方向盘的旋转角度。比较有代表性的如申请号为201310068176.6、名称为《基于方向盘转角数据的疲劳检测方法及检测装置》的发明专利申请和申请号为201510113007.9、名称为《基于方向盘转角信息的驾驶人疲劳状态检测方法》的发明专利申请,虽然他们的方案有效地提取了方向盘转角的疲劳特征信息并有效地检测司机的疲劳状态,但也存在明显问题:

1、方向盘转角传感器需要直接固定在车辆方向盘上或固定在方向盘转轴上,转角传感器遮挡部分仪表盘,司机察看的仪表的视线被阻挡,另一方面方向盘或其转轴上的传感器还有可能影响方向盘的旋转,影响正常驾驶操作;

2、现有方向盘转角传感器没有转角记忆功能,因此当方向盘转动范围大于一周时,转角传感器无法得到正确的转角数据;

3、方向盘转角传感器安装困难,通常需要在汽车出厂前固定安装于方向盘或转轴上,且不方便拆卸,移植性差,无法满足现有车辆司机疲劳状态检测的需要。

为此又出现的申请号为201210343216.9名称为《一种基于图像的车辆方向盘转角检测方法及检测装置》的方案,其无需安装方向盘转角传感器,在方向盘的背面粘贴两种标记贴和标识线,以方向盘初始状态图像与转动后的图像比较,计算得到方向盘转角。但是其标记过于繁琐,标识线有六条将方向盘分为六个区,每个区内要按规定粘贴三角形的标记贴和弧形标记贴,实施较困难;在方向盘背面粘贴标记,光线较差,影响图像清晰度,司机握着方向盘操作时会遮挡部分标记,也影响检测效果。故也难以实用。

传统的基于方向盘转角信息的司机疲劳判别是采用fisher线性判别算法,此方法将车辆的行驶视为直线行驶,采用角度标准差σ和零速百分比PNS这两个指标、用fisher线性判别算法判别司机的疲劳状态。但是车辆的实际行驶有走“S”形、超车变道等情况。以角度标准差σ大于1.2°作为判定疲劳的标准明显不合理。故传统的基于方向盘转角信息的司机疲劳判别方法准确率不高。

目前尚未见一种用之有效的简单易行的基于图像的司机疲劳状态检测方法。



技术实现要素:

本发明的目的是为了克服现有技术中存在的缺陷而提出的一种基于方向盘图像的司机疲劳检测方法,摄像头实时采集方向盘图像,采用模板匹配算法让模板图像与实时图像匹配,通过图像处理得到方向盘转动角度,计算当前零速百分比和角度标准差,用支持向量机算法来得到当前司机的状态。本方法操作简单、实用性强,且对司机状态检测准确。

本发明的另一目的是提出一种基于方向盘图像的司机疲劳检测装置,包括中心处理器、摄像头和报警模块,摄像头安装于驾驶室内的顶部,方向盘处于摄像头的取景框内,摄像头的视频信号输出线与本装置的中心处理器连接;中心处理器还连接报警模块。

本发明设计的一种基于方向盘图像的司机疲劳检测方法主要步骤如下:

步骤Ⅰ、取得模板图像

摄像头安装于驾驶室内的顶部,摄像头的视频信号输出线与检测装置的中心处理器连接;摄像头采集静止的方向盘图像,作为初始图像存储;

中心处理器对初始图像进行去噪处理后,存储为模板图像。

在方向盘圆上的点与摄像头拍摄到的图像椭圆上的点一一对应,图像椭圆上某一点m(xm,ym)与方向盘圆上的对应点M(xM,yM)之间的对应关系是xM=xm、式中半径R为椭圆长半轴,R的长度不变。

步骤Ⅱ、取得方向盘圆心位置坐标o(x0,y0)

步骤Ⅰ所得的任何类型车辆的方向盘模板图像上均可得到方向盘圆心位置坐标,

Ⅱ-1、方向盘外轮廓

对步骤Ⅰ所得的模板图像采用OpenCV开源视觉库自带的findContours()函数,通过设置相应的参数得到方向盘图像的外轮廓上的各点坐标;

Ⅱ-2、方向盘圆心位置坐标

由步骤Ⅱ-1确定的方向盘图像的外轮廓上的5个坐标点(xm1,ym1,xm2,ym2,...,xm5,ym5),确定椭圆方程,得到椭圆中心位置坐标o(x0,y0);

步骤Ⅲ、特征点跟踪

本方法采用光流法,针对每一个视频序列,与模板图像匹配,检测当前方向盘图像转动的角度;在方向盘上取具有代表性并易于确定的特征点,具有代表性并易于确定的特征点是方向盘转动后仍能在方向盘图像上明确定位的点。通过迭代求得当前帧中方向盘图像中的特征点坐标位置和在下一帧中的坐标位置,根据该特征点在当前帧的坐标与该特征点在下一帧的坐标计算得出从当前帧到下一帧该特征点转动的角度,也就是方向盘转动的角度;

步骤Ⅳ、计算方向盘相邻两帧转动的角度θ

以下角度θ的计算采用方向盘圆上特征点A的位置坐标。

由步骤Ⅱ确定了方向盘圆心o(x0,y0),步骤Ⅲ确定了当前帧特征点A位置A0(xM01,yM01)的坐标,当方向盘转动一个角度θ后,再确定特征点位置A0(xM01,yM01)对应的下一帧的特征点位置A1(xM11,yM11)的坐标。

圆心o(x0,y0)和A0(xM01,yM01)、A1(xM11,yM11)连线的夹角为θ1,根据余弦定理即特征点A转动角度,

由两点间距离公式算出:

步骤Ⅴ、方向盘图像的特征点转动角度

令方向盘圆心坐标为o(x0,y0),第k帧图像、第k+1帧图像中特征点的坐标分别为Dk(xMk,yMk)、Dk+1(xM(k+1),yM(k+1)),相邻两帧图像中特征点转动角度小于90°。

当yMk≥y0、yM(k+1)≥y0时:若满足xM(k+1)≥xMk,说明第k+1帧图像相对于第k帧图像顺时针转动一个角度;若满足xM(k+1)≤xMk,说明第k+1帧图像相对于第k帧图像逆时针转动一个角度。

当yMk≤y0、yM(k+1)≤y0时:若满足xM(k+1)≥xMk,说明第k+1帧图像相对于第k帧图像逆时针转动一个角度;若满足xM(k+1)≤xMk,说明第k+1帧图像相对于第k帧图像顺时针转动一个角度。

当yMk≥y0、yM(k+1)≤y0时:若满足xMk≥x0、xM(k+1)≥x0,说明第k+1帧图像相对于第k帧图像顺时针转动一个角度;若满足xMk≤x0、xM(k+1)≤x0,说明第k+1帧图像相对于第k帧图像逆时针转动一个角度。

当yMk≤y0、yM(k+1)≥y0时:若满足xMk≥x0、xM(k+1)≥x0,说明第k+1帧图像相对于第k帧图像逆时针转动一个角度;若满足xMk≤x0、xM(k+1)≤x0,说明第k+1帧图像相对于第k帧图像顺时针转动一个角度。

本方法规定下一帧方向盘相对当前帧方向盘顺时针转动角度θ为负,逆时针转动则θ为正。依次累加每帧方向盘图像转动角度,当某时间段内累加值大于360°,即方向盘相对模板图像的位置逆时针转动超过一周;当累加值小于-360°,即此时间段内方向盘相对模板图像的位置顺时针转动超过一周;

根据存储每帧图像中的特征点转角数据计算此方向盘转动时间段内方向盘的零速百分比和角度标准差;

步骤Ⅵ、提取技术指标零速百分比和角度标准差

当时间t内方向盘角度改变的频度减少,也就是出现了司机对方向盘的修正频度减少特征时,方向盘不动的时间增多,作为本方法的技术指标之一零速百分比PNS,表征所选时间段内方向盘不动的程度,所述t为50~80秒。

零速百分比PNS的定义如下式所示:

本发明采样频率为8~12帧/秒,PNSi代表第i帧的零速百分比,Ni代表第i帧前t秒内角速度的总采样点数,ni代表第i帧前t秒内角速度在±0.1°/s之间的点数。

本方法的另一技术指标角度标准差的定义如下式所示:

其中:θj为第j帧对应的方向盘转动的角度,μ表示m2帧内平均每帧方向盘转动角度值;

步骤Ⅶ、支持向量机分类算法

综合步骤Ⅵ所得的零速百分比PNS和角度标准差σ,采用支持向量机分类算法判断司机是否处于疲劳状态;

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

f(x)=sgn[(ω*×x)+b*]

其中sgn[(ω*×x)+b*]为符号函数,当ω*×x+b>0 f(x)=1,当ω*×x+b=0f(x)=0,当ω*×x+b<0 f(x)=-1;

根据车辆行驶在上述不同路段下的W个训练样本,W为80~150,由支持向量机分类算法学习,求出区分司机处于清醒状态还是疲劳状态的决策函数f(x);

在司机实际驾驶过程中摄像头实时采集方向盘图像,经过处理得出方向盘转角,进而求出当前零速百分比和角度表准差的值,当前零速百分比和角度表准差的值代入已经求出的决策函数f(x),若f(x)=1则说明当前司机处于疲劳状态,系统立即报警。

所述步骤Ⅰ具体执行包括如下步骤:

Ⅰ-1、摄像头安装

摄像头安装于驾驶室内的顶部,使整个方向盘处于摄像头的取景框内,调节摄像头,使图像清晰,与取景框大小配合;向中心处理器传送所采集的图像数据;

Ⅰ-2、方向盘初始图像的采集

在车辆启动前,方向盘处于初始状态时,摄像头采集静止的方向盘图像,作为初始图像存储;

Ⅰ-3、模板图像

中心处理器采用核函数窗3×3的中值滤波对步骤Ⅰ-2取得的初始图像进行去噪,在去除脉冲噪声、椒盐噪声的同时保持图像的边缘细节信息。

所述步骤Ⅰ-2摄像头采集方向盘初始图像前,在方向盘的下面放一张白纸,方向盘的投影位于白纸上,采集得到有白色背景的初始图像。

所述步骤Ⅲ特征点跟踪的具体的过程如下:

Ⅲ-1、当前图像的处理

本方法摄像头的摄像频率为12~16帧/秒,中心处理器的采样频率小于摄像频率为9~12帧/秒;

中心处理器对摄像头实时采集到的方向盘图像进行与步骤Ⅰ-3相同的去噪处理;

Ⅲ-2、当前帧的特征点

对步骤Ⅲ-1处理后的当前图像采用现有的OpenCV中的Shi-Tomasi进行特征点检测,利用OpenCV开源视觉库的goodFeaturesToTrack()函数检测得到当前帧的特征点经换算后得到的位置A0(xM01,yM01);

Ⅲ-3、下一帧的特征点

调用OpenCV开源视觉库的cvCalcOpticalFlowPyrLK()函数,输入步骤Ⅲ-2所得的当前帧图像中的特征点位置A0(xM01,yM01),输出该特征点在下一帧图像中经换算后得到的位置A1(xM11,yM11)。

所述步骤Ⅲ在方向盘上还取另一具有代表性并易于确定的特征点B,A、B与圆心连线的夹角大于30度;

所述Ⅲ-2同时确定特征点B当前帧位置B0(xM02,yM02);

所述Ⅲ-3同样方法确定特征点位置B0(xM02,yM02)在下一帧图像中的位置B1(xM12,yM12);

圆心o(x0,y0)和B0(xM02,yM02)和B1(xM12,yM12)连线的夹角为θ2,根据余弦定即特征点B转动角度,由两点间距离公式算出:

最终的方向盘转动的角度θ为A、B两个特征点转动角度的平均值,

跟踪两个特征点的转动角度,可使检测更准确;另外当因为司机操作遮挡,其中一个特征点未能摄取到转动结果即跟踪失败时,用另一个特征点也可达到跟踪目的,此时的方向盘的转动角度θ就是该特征点转动的角度。

所述步骤Ⅶ支持向量机分类算法的具体步骤如下:

Ⅶ-1、训练样本的采集

选拥有五年或更长驾驶经验的至少5位司机和状态良好的至少5部车辆,每位司机随机挑选一部车辆,分别离散采集在直线行驶、“S”形路线行驶及超车不同行车情况下、司机处在清醒和疲劳状态时的样本,(x1,y1),...,(xW,yW)。其中x1=(x11,x12)T,x11、x12分别代表第一个样本数据的第一个指标零速百分比PNS和第二个指标角度标准差σ;yk1∈Y={1,-1},Y=1、Y=-1分别代表司机处于清醒状态和疲劳状态,W为80~150,司机疲劳状态的判断是由司机的面部视频评分的方法评估驾驶司机的疲劳状态;司机的面部视频以12~20s为间隔划分为多段,至少5名经过训练的实验人员按目前常用的司机状态特征独立对各段视频进行评分,多个实验人员评分的平均值作为司机状态的判别结果;

Ⅶ-2、参数的求解

所述分开训练样本的超平面,满足两类支持向量到该超平面的距离之和最大,支持向量即满足ωTx+b=±1的样本点,具体为求出超平面模型ωTx+b=0的参数ω和b,使得不同类支持向量到超平面的距离之和最大,即转化为:

ST ytTxt+b)≥1,t=1,2,...,n1

其中xt=(PNSt,σt)yt∈{1,-1}

此为凸二次规划问题,采用高效的拉格朗日乘子法得到其对偶,上述模型属于非线性可分,引入一个实现线性映射的高斯核函数,经过变换得到上式的对偶,即:

其中:σ1为高斯核的带宽,

xt1、xt2、yt1和yt2代表样本参数;

C为正则化常数,t1、t2=1,2,...,n1;

求解出最优拉格朗日乘子α*=(α1*,α2*,...,αn1*)T,计算最优法向量选择最优拉格朗日乘子α*中的一个小于正则化常数C的正分量αt1*,以此计算最优位移项

Ⅶ-3、构造超平面(ω*×x)+b*=0,由此求出的决策函数

f(x)=sgn[(ω*×x)+b*]。

根据上述本发明的基于方向盘图像的司机疲劳检测方法,本发明设计了一种基于方向盘图像的司机疲劳检测装置,包括中心处理器、摄像头和报警模块,摄像头安装于驾驶室内的顶部,处于方向盘上方,整个方向盘处于摄像头的取景框内,摄像头的视频信号输出线与本装置的中心处理器连接;所述中心处理器配有存储模块和供电模块,还连接报警模块,所述报警模块为报警灯或蜂鸣器;

所述中心处理器经数据传输模块连接图像处理模块,图像处理模块连接摄像头,摄像头采集方向盘图像传送入中心处理器的图像处理模块,图像处理模块对图像视频数据进行处理,经数据传输模块送入存储模块存储,并提取数据送入中心处理器,中心处理器将将当前方向盘图像与模板图像比较,得到当前方向盘转动角度,求得当前的零速百分比和角度标准差,代入根据支持向量机分类算法学习得到的决策函数,判断当前司机是否处于疲劳状态;检测到司机处于疲劳状态,中心处理器发送指令到报警模块,其报警灯闪烁或蜂鸣器鸣响。

所述摄像头安装于驾驶室内顶部的N点,N点处于穿过方向盘圆心、垂直于车体纵轴的铅垂面后方,且与该铅垂面的距离小于或等于20cm,N点与穿过方向盘圆心、平行于车体纵轴的铅垂面的距离小于或等于15cm。

与现有技术相比,本发明一种基于方向盘图像的司机疲劳检测方法和检测装置的优点为:1、操作简单,根据方向盘的实时图像对方向盘转角进行实时检测,测量结果准确,且当方向盘转动的角度大于一周时,也可以得到方向盘转动的角度;2、摄像头安装于顶部,不阻挡司机看仪表的视线,也不影响方向盘的旋转,司机的正常驾驶不受妨碍;3、中心处理器采用的OpenCV开源视觉库和支持向量机分类算法均为成熟软件,实用性和鲁棒性较好;4、采用支持向量机分类算法适用范围更广,不再局限于直线行驶的情况下的司机疲劳状态判别;5、摄像头安装拆卸方便,移植性强,实用性好,可在现有各种车辆上安装,满足司机疲劳检测的需要。

附图说明

图1为本基于方向盘图像的司机疲劳检测装置实施例的摄像头与方向盘安装关系示意图;

图2为本基于方向盘图像的司机疲劳检测装置实施例结构框图;

图3为本基于方向盘图像的司机疲劳检测方法实施例流程图;

图4为本基于方向盘图像的司机疲劳检测方法实施例步骤Ⅲ所取特征点A和B的示意图;

图5为本基于方向盘图像的司机疲劳检测方法实施例中实际的方向盘特征点位置和摄像头采集的方向盘图像中相应的特征点位置的示意图;

图6为本基于方向盘图像的司机疲劳检测方法实施例2个特征点的转动角度示意图。

图中:

1-方向盘 2-摄像头。

具体实施方式

下面结合附图对本发明的具体实施方式作进一步详细说明。

基于方向盘图像的司机疲劳检测装置实施例

本基于方向盘图像的司机疲劳检测装置实施例,包括中心处理器、摄像头和报警模块,如图1所示,摄像头安装于驾驶室内的顶部,处于方向盘上方,整个方向盘处于摄像头的取景框内,摄像头的视频信号输出线与本装置的中心处理器连接;传送所采集的图像数据。

如图1所示,摄像头安装于驾驶室内顶部的N点,本例N点处于穿过方向盘圆心、垂直于车体纵轴的铅垂面后方,且与该铅垂面的距离为15cm,N点与穿过方向盘圆心、平行于车体纵轴的铅垂面的距离为5cm。

如图2所示,本例中心处理器配有存储模块和供电模块,还连接报警模块,在本实施例中报警模块采用蜂鸣器。本例中心处理器经数据传输模块连接图像处理模块。图像处理模块连接摄像头,摄像头采集的方向盘图像传送到图像处理模块。图像处理模块对图像视频数据进行处理,经数据传输模块送入存储模块存储,并提取数据送入中心处理器,中心处理器将当前方向盘图像与模板图像比较,得到当前方向盘转动角度θ,求得当前的零速百分比PNS和角度标准差σ,代入根据支持向量机分类算法(SVM)学习得到的决策函数f(x)=ωTx+b计算,当f(x)=1说明司机处于疲劳状态,中心处理器发送指令到报警模块,其蜂鸣器鸣响。

基于方向盘图像的司机疲劳检测方法实施例

本基于方向盘图像的司机疲劳检测方法实施例,其流程如图3所示,具体步骤如下:

步骤Ⅰ、取得模板图像

Ⅰ-1、摄像头安装

在本实施例中选用车辆后,摄像头安装于驾驶室内的顶部,使整个方向盘处于摄像头的取景框内,调节摄像头,使图像清晰,与取景框大小配合;摄像头的视频信号输出线与检测装置的中心处理器连接;传送所采集的图像数据。

Ⅰ-2、方向盘初始图像的采集

在车辆启动前,在方向盘下面放一张白纸,方向盘的投影位于白纸上,方向盘处于静止的初始状态时,摄像头采集得到有白色背景的初始状态下的方向盘图像;传送到中心处理器,中心处理器将此作为初始图像存储;

Ⅰ-3、模板图像

中心处理器对摄像头采集到的初始图像进行去噪处理,本方法采用核函数窗3×3的中值滤波进行去噪,在去除脉冲噪声、椒盐噪声的同时保持图像的边缘细节信息。

中心处理器对步骤Ⅰ初始图像完成去噪处理后,存储为模板图像。模板图像效果如图4所示。

方向盘图像是椭圆,在方向盘圆上的点与在图像椭圆上的点一一对应如图5所示,图像椭圆上点m(xm,ym)与方向盘圆上的对应点M(xM,yM)之间的对应关系是其中半径R为椭圆长半轴,且R的长度不变。

步骤Ⅱ、方向盘圆心位置坐标o(x0,y0)

根据步骤Ⅰ所得的车辆的方向盘模板图像得到方向盘圆心位置坐标,具体如下:

Ⅱ-1、方向盘外轮廓

在集成开发环境VS2013和OpenCV3.0.0下对步骤Ⅰ所得的模板图像采用OpenCV开源视觉库中的findContours()函数,通过设置相应的参数得到方向盘图像的外轮廓上的各点坐标,该函数为:

Void findContours(InputArray image,

OutputArrayOfArrays contours,OutputArray hierarchy,

int mode,int method,Point offset=Point())

其中各参数依次如下:

InputArray image代表InputArray的输入图像,

OutputArrayOfArrays contours代表轮廓存储的点向量(xm,ym),

OutputArray hierarchy代表可选的输出向量,包含图像的拓扑信息,

int mode代表轮廓的检索方式,

int method代表轮廓的近似办法,

Point offset=Point()代表每个轮廓点的可选偏移量,使用默认值Point()。

在本实施例中所用的求方向盘外轮廓各点坐标的函数为:

findContours(image,contours,hierarchy,RETR_EXTERNAL,

CHAIN_APPROX_NONE,Point offset=Point())。

Ⅱ-2、最小二乘法求方向盘圆心位置坐标

本例采集到的方向盘图像是椭圆如图5所示,椭圆二次曲线的通式为:

ax2+bxy+cy2+dx+ey+1=0

由步骤Ⅱ-1确定的方向盘图像的外轮廓上的5个坐标点(xm1,ym1,xm2,ym2,...,xm5,ym5),确定椭圆方程,本例求出椭圆中心位置圆心坐标为o(545,421)。

步骤Ⅲ、特征点跟踪

本方法采用光流法,针对每一个视频序列,与模板图像匹配,检测当前方向盘图像转动的角度;如图4所示,本例取方向盘内轮廓中对称的两棱边与中心部位外侧的交点作为A、B两个特征点。方向盘无论怎样转动,在其图像上A、B点都易于确定。

具体的跟踪过程如下:

Ⅲ-1、当前图像的处理

在本实施例中摄像头的摄像频率为15帧/秒,中心处理器的采样频率为10帧/秒。

中心处理器对摄像头实时采集到的方向盘图像进行与步骤Ⅰ-3相同的去噪预处理;

Ⅲ-2、当前帧的特征点

对步骤Ⅲ-1处理后的当前图像采用现有的OpenCV中的Shi-Tomasi进行特征点检测,如图6所示,在本实施例中利用OpenCV开源视觉库的中goodFeaturesToTrack()函数检测得到当前帧的一组特征点经换算后得到的位置A0(xM01,yM01)和B0(xM02,yM02);该函数各参数如下:

Void goodFeaturesToTrack(InputArray image,OutputArray corners,

Int maxCorners,double qualityLevel,double minDistance,

InputArray mask,int blockSize,bool useHarrisDetector,double k)

其中各参数依次为

InputArray image代表源图像,

OutputArray corners代表检测到特征点的输出矢量(xm,ym),

Int maxCorners代表本方法所取特征点的最大数量,

double qualityLevel代表特征点检测可接受的最小特征值,

double minDistance代表特征点之间的最小距离,

InputArray mask为设置的感兴趣区域,

int blockSize代表计算导数自相关矩阵时指定的邻域范围默认值3,

bool useHarrisDetector代表不使用Harris特征点检测默认值false,

double k代表设置hessian自相关矩阵行列式的相对权重的权重系数默认值0.04。

本例具体参数设置为:

goodFeaturesToTrack(g_grayImage,corners,20,0.01,40,imageROI,3,false,0.04)。

Ⅲ-3、下一帧的特征点

把步骤Ⅲ-2所得的当前帧图像中的一组特征点位置A0(xM01,yM01)和B0(xM02,yM02)输入到OpenCV开源视觉库的CalcOpticalFlowPyrLK()函数,输出上述的一组特征点A0(xM01,yM01)和B0(xM02,yM02)在下一帧图像中经换算后得到的位置A1(xM11,yM11)和B1(xM12,yM12),

函数各参数的含义为:

Void cvCalcOpticalFlowPyrLK(const CvArr*prev,

const CvArr*curr,const CvPoint2D32f*prev_features,

Const CvPoint2D32f*curr_features,

char*status,float*track_error,CvSize win_size,

int count,CvTermCriter criteria,int flags)

其中各参数依次为:

const CvArr*prev代表前一帧图像,

const CvArr*curr代表当前帧图像,

const CvPoint2D32f*prev_features代表特征点的前一帧坐标,

Const CvPoint2D32f*curr_features代表特征点的当前帧坐标,

char*status代表输出状态矢量,

float*track_error代表输出误差矢量,

CvSize win_size代表每个金字塔层搜索窗大小,

int count代表本法所取的金字塔层的最大数,

CvTermCriter criteria代表指定搜索算法迭代类型,

int flags代表该参数默认值0。

在本实施例中具体参数设置为:

CalcOpticalFlowPyrLK(pre_image,curr_image,points2D[0],points2D[1],status,err,winSize,3,termcrit,0)。

步骤Ⅳ、计算方向盘相邻两帧转动的角度θ

步骤Ⅱ-2确定了方向盘圆心o(x0,y0)、步骤Ⅲ确定了当前帧特征点位置A0(xM01,yM01)和B0(xM02,yM02);如图6所示,当方向盘转动一个角度θ,由步骤Ⅲ-2确定确定下一帧的特征点位置A1(xM11,yM11)和B1(xM12,yM12)。

圆心o(x0,y0)和A0(xM01,yM01)、A1(xM11,yM11)连线的夹角为θ1,根据余弦定理即特征点A转动角度,

圆心o(x0,y0)和B0(xM02,yM02)、B1(xM12,yM12)连线的夹角为θ2,根据余弦定即特征点B转动角度,由两点间距离公式算出:

最终的方向盘转动的角度θ为两个特征点A和B转动角度的平均值,

步骤Ⅴ、方向盘图像的特征点转动角度

令方向盘圆心坐标为o(x0,y0),第k帧图像、第k+1帧图像中特征点的坐标分别为Dk(xMk,yMk)、Dk+1(xM(k+1),yM(k+1)),相邻两帧图像中特征点转动角度小于90°;

当yMk≥y0、yM(k+1)≥y0时:若满足xM(k+1)≥xMk,说明第k+1帧图像相对于第k帧图像顺时针转动一个角度;若满足xM(k+1)≤xMk,说明第k+1帧图像相对于第k帧图像逆时针转动一个角度;

当yMk≤y0、yM(k+1)≤y0时:若满足xM(k+1)≥xMk,说明第k+1帧图像相对于第k帧图像逆时针转动一个角度;若满足xM(k+1)≤xMk,说明第k+1帧图像相对于第k帧图像顺时针转动一个角度;

当yMk≥y0、yM(k+1)≤y0时:若满足xMk≥x0、xM(k+1)≥x0,说明第k+1帧图像相对于第k帧图像顺时针转动一个角度;若满足xMk≤x0、xM(k+1)≤x0,说明第k+1帧图像相对于第k帧图像逆时针转动一个角度;

当yMk≤y0、yM(k+1)≥y0时:若满足xMk≥x0、xM(k+1)≥x0,说明第k+1帧图像相对于第k帧图像逆时针转动一个角度;若满足xMk≤x0、xM(k+1)≤x0,说明第k+1帧图像相对于第k帧图像顺时针转动一个角度;

本例规定下一帧方向盘相对当前帧方向盘顺时针转动角度θ为负,逆时针转动则θ为正;依次累加每帧方向盘图像转动角度,当某时间段内累加值大于360°,即此时间段内方向盘相对模板图像的位置逆时针转动超过一周;当累加值小于-360°,即此时间段内方向盘相对模板图像的位置顺时针转动超过一周;

步骤Ⅵ、提取技术指标零速百分比和角度标准差

本例的技术指标之一零速百分比PNS(percentage of non-steering),表征所选时间段内方向盘不动的程度,在本实施例中,取此时间段为50秒。

零速百分比PNS的定义如下式所示:

本发明采样频率为10帧/秒,PNSi代表第i帧的零速百分比,Ni代表第i帧前50秒内角速度的总采样点数,ni代表第i帧i前50秒内角速度在±0.1°/s之间的点数。

另一技术指标角度标准差的定义如下式所示:

其中:θj为j帧对应的方向盘转动的角度,μ表示m2帧内平均每帧方向盘转动角度值。

步骤Ⅶ、支持向量机分类算法

综合步骤Ⅵ所得的零速百分比PNS和角度标准差σ,采用支持向量机(SVM)分类算法判断司机是否处于疲劳状态。

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

Ⅶ-1、训练样本的采集

本例选拥有五年或更多驾驶经验的5名司机和状态良好的5部车辆,每位司机随机挑选一部车辆,分别离散采集在直线行驶、“S”形路线行驶及超车的不同行驶情况下、司机处于清醒和疲劳状态时的100个样本。具体的样本数量如下表1所示:

表1 司机的不同状态不同行驶情况下采集的样本数量一览表

(x1,y1),...,(x100,y100)。其中x1=(x11,x12)T,x11、x12分别代表第一个样本数据的第一个指标零速百分比PNS和第二个指标角度标准差σ;yk1∈Y={1,-1},k1=1,...,100,Y=1、Y=-1分别代表司机处于清醒状态和疲劳状态,司机状态的判断是由司机的面部视频评分的方法评估驾驶司机的疲劳状态。按目前常用的司机状态判别方法将驾驶司机的状态分为清醒和疲劳2个等级,清醒和疲劳状态的面部特征如下表2所示:

表2 驾驶司机状态等级的面部特征一览表

本例司机的面部视频以15s为间隔划分为多段,5名经过训练的实验人员按上述表2中目前常用的司机状态特征独立对各段视频进行评分,5个实验人员评分的平均值作为司机状态的判别结果。

Ⅶ-2、参数的求解

本例求超平面模型ωTx+b=0的参数ω和b,使得不同类支持向量到超平面的距离之和最大,即:

ST ytTxt+b)≥1,t=1,2,...,n1

其中xt=(PNSt,σt)yt∈{1,-1}

本例采用高斯核函数,经过变换得到上式的对偶,如下:

其中:σ1为高斯核的带宽,xt1、xt2、yt1和yt2代表样本参数;

C为正则化常数,t1、t2=1,2,...,n1;

求解出最优拉格朗日乘子α*=(α1*,α2*,...,αn1*)T,计算最优法向量选择最优拉格朗日乘子α*中的一个小于正则化常数C的正分量αt1*,以此计算最优位移项

Ⅶ-3、构造超平面(ω*×x)+b*=0,由此求出的决策函数

f(x)=sgn[(ω*×x)+b*]

其中sgn[(ω*×x)+b*]为符号函数,当ω*×x+b>0 f(x)=1,当ω*×x+b=0f(x)=0,当ω*×x+b<0 f(x)=-1。

根据车辆行驶在上述不同路段下的100个训练样本,由支持向量机分类算法学习,求出区分司机处于清醒状态还是疲劳状态的决策函数f(x)。

在实际行驶过程中摄像头实时采集方向盘图像,经过处理得出方向盘转角,进而求出当前零速百分比PNS和角度表准差的值σ,当前零速百分比和角度表准差的值代入已经求出的决策函数f(x),若f(x)=1则说明当前司机处于疲劳状态,系统立即报警。

上述实施例,仅为对本发明的目的、技术方案和有益效果进一步详细说明的具体个例,本发明并非限定于此。凡在本发明的公开的范围之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围之内。

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