FatigueDrivingReco 的程序文档
一、 文档说明
文档主要对项目的程序进行说明和描述程序的思想。
程序的功能
程序的思想
程序的源码
注意之处(程序中比较难理解,比较特殊的地方)
待改进之处(能使得效果更好的地方)
二、 程序内容
1. main()函数
a) 程序的功能
首先,利用 Adaboost 算法检测人脸,紧接着根据人脸的先验知识分割出大致
的人眼区域。然后,对人眼大致区域的图像进行图像增强处理(中值滤波、非线性
点运算),接着利用 Ostu 算法计算最佳分割阈值,对图像进行二值化处理。
然后定位人眼的具体位置,具体有以下几个步骤。首先利用直方图积分投影,
根据设定的阈值判断并消除眉毛区域。然后分割出左眼和右眼的图像,分别对左右
眼的图像计算直方图和直方图积分投影,从而分别确定左右眼的中心位置。
最后,根据定位出的左右眼的中心位置,人为设定人眼矩形框的大小,根据
矩形框内的像素特征判断眼睛的睁开闭合状态。有三个特征,眼睛长宽比 R,黑色
像素占总像素的比例α,以虹膜中心点为中心的 1/2 中间区域的黑色像素比例β。
根据模糊综合评价的思想,将这三个指标划分为相同的 4 个级别(见下表),然后
根据百分比组合成一个函数。最终根据函数值与阈值比较,确定眼睛的睁开、闭合
状态。
闭合
可能闭合
可能睁开
睁开
标准
权重
Value
0
2
6
8
--
--
R
(0, 0.8]
(3, 无穷]
(0.8, 1.2]
(1.2, 1.5]
(2.5, 3]
(1.5, 2.5]
2.0
0.2
α
(0, 0.4]
(0.4, 0.5]
(0.5, 0.6]
(0.6, 1]
0.65
0.4
β
(0, 0.3]
(0.3, 0.45]
(0.45, 0.6]
(0.6, 1]
0.55
0.4
为了判定驾驶员是否处于疲劳驾驶状态,需要对很多帧视频进行上述处理,
根据 PERCLOS 原理和制定的判断规则,判断最终状态。
b) 程序的思想
c) 程序的源码