关 闭

新闻中心

EEPW首页 > 安全与国防 > 设计应用 > 基于ZYNQ AP SoC的安全驾驶系统设计

基于ZYNQ AP SoC的安全驾驶系统设计

作者:莫长江 李俊宏 骆绮健 陈明波时间:2017-02-28来源:电子产品世界收藏
编者按:针对系统对实时图像处理的需求,本文提出了一种基于ZYNQ AP SoC的安全驾驶系统设计方案。本系统由ZYNQ架构中的PL(FPGA)部分负责驱动CMOS摄像头,将采集的图像进行灰度转换,传给PS(ARM)部分运行Adaboost算法,对图像进行人脸检测,从而获取驾驶员的眼睛和嘴巴的坐标值、面积值和张开度,并利用OpenCV的PERCLOS算法制定疲劳状态标准,给出预警信息。同时,ARM通过USB驱动摄像头,实现行车记录,并通过酒精浓度传感器采集车内酒精浓度,实现酒驾预警。通过实验表明,本系统性能稳定,实

 具体算法分析:

本文引用地址:http://www.eepw.com.cn/article/201702/344567.htm

  (1)本系统的脸部采集算法采用基于Haar特征的AdaBoost级联分类器,其具有精度和速度较快的优点,在AdaBoost算法中,核心思想是针对同一个训练集训练不同的弱分类器,然后聚合起来,构成强分类器。它根据每次训练集中的每个样本进行分类判决,以及上一次的总体分类的准确度来决定每个样本的权值,最后将每次训练得到的分类器融合起来,作为最终的判决分类器,运行在ARM嵌入式系统上,检测速度较慢。而因为驾驶位置相对固定,当系统启动时,通过detectMultiScale函数对驾驶员位置和脸部五官进行初定位,这样可以通过驾驶员坐标,分割图像,降低分类器级数,提高检测速度。而且,驾驶员驾驶机动时候,位置基本无变化,可采取隔2帧图像检测一次人脸位置,并更新的驾驶员位置坐标值。另外,由于人脸五官在脸部中的位置分布是固定的,可采用初始化时得到的五官坐标分布与五官之间的距离,提取检测图像的ROI部分,进一步降低运算量。 部分程序如下:

  pFaceCas->detectMultiScale(dstImFull,faceRectInit,1.1,2,0,Size(30,30));

  pEyesCas->detectMultiScale(dstGImeyes,eyeRectInit,1.1,4,0|CV_HAAR_SCALE_IMAGE , Size(5,5) );

  faceRectInitV=Rect(faceRectInitVX,faceRectInitVY,faceRectInitVW,faceRectInitVH*6/5);

  dstGImface = dstImFull(faceRectInitV);

  检测效果如图5,检测统计结果如表1。

  (2)采用morphologyEx函数,对识别提取的眼和嘴巴ROI图像进行开运算形态学滤波。开运算算法实际是对图像先进性腐蚀后膨胀,而形态学图象处理表现为一种邻域运算形式,一种特殊定义的邻域称之为“结构元素”(Structure Element),它在每个像素位置上与二值图象对应的区域进行特定的逻辑运算,逻辑运算的结果为输出图象的相应像素。开运算能达到消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积的效果,假设给定二值图象B(x,y)和作为结构元素的二值模板X(i,j)。

  腐蚀运算:

  开运算:

  开运算程序如下:

  Mat element = getStructuringElement(MORPH_RECT,Size(3,3));

  Mat element2 = getStructuringElement(MORPH_RECT,Size(7,7));

  morphologyEx(leyeT,leyeTm,MORPH_ERODE,element); // 腐蚀

  morphologyEx(leyeTm,leyeTm,MORPH_DILATE,element2); // 膨胀

  开运算效果如图6。

  (3)OpenCV里面的findcontours算子能标记并提取脸部五官轮廓,通过提取出来的轮廓,计算得到眼睛、嘴巴的最大逼近张开度,然后通过比较,可判断出驾驶员的眼睛开闭状态、打哈欠次数。处理效果如图7,代码实现如下:

  vector> contours;

  vectorhierarchy;

  Mat image1 = dstTImmouth.clone();

  findContours(image1,contours,hierarchy,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);

  int i = 0 ;int crea;

  for( ;i

  crea = fabs(contourArea(contours[i]));

  if(crea>=500) {cout<

  qDebug()<<crea<<endl; p="" }

  Rect box = boundingRect(contours[i]);

  dstTImmouth = dstTImmouth(box);

4 与酒精检测

  随着道路上机动车数量的增多,在开车的路上难免有小刮小碰,遇到撞车党和碰瓷党的事件常有发生,所以本系统集成有仪功能,记录每一个行车过程的细节,维护司机的合法权益。如图8,系统具有清除内存、内存剩余量、续航时间报时和回播功能。同时,系统集成了12位精度的数模转换器和酒精传感器,实时对酒驾行为提出警报。

5 结论

  本系统在ZYNQ ApSoC平台下,集成、酒驾判断功能,对人脸检测算法进行了嵌入式架构移植,对AdaBoost算法进行了嵌入式优化,利用ZYNQ的ARM+FPGA的架构优势,在(PL)FPGA端对图像进行了灰度转换预处理,在PS(ARM)端,对来自PL端的图像进行了降噪和人脸检测、人脸五官特征值提取。

  本系统的运行图如图9,通过实验,参考表1,识别率较高,达到了预定的功能,适用于车辆防止交通事故的发生等一体化行车安全场景,加以完善,有广泛的应用前景。

参考文献:

  [1]李庆梅,钟燕科.机车司机疲劳驾驶监测[J].制造业自动化,2011(24):50-53.

  [2]Mike Santarini.Zynq-7000 EPP为创新开启新时代[J].电子技术应用,2011(07):29-31.

  [3]邢艳芳,张延冬.基于Zynq的OLED驱动设计[J].液晶与显示,2014(02):75-79.

  [4]逯沛龙,符意德.图像预处理算法在ZYNQ芯片上的设计与实现[J].计算机与数字工程,2015(06):184-186+206.

  [5]张莹,李勇平,敖新宇.基于OpenCV的通用人脸检测模块设计[J].计算机工程与科学,2011(01):101-105.

  [6]杨定礼,赵正敏,白秋产.基于Adboost与空间支持向量域分类的人脸检测[J].电路与系统学报,2013(02):325-329.

  [7]陈健.基于眼动数据和PERCLOS的管制员疲劳状态研究[J].无线互联科技,2015(10):135-136.

  [8]杨捷,高增梁,汤健彬.基于ARM的新型行车记录仪[J].仪器仪表学报,2004:320-321.


本文来源于《电子产品世界》2017年第2期第38页,欢迎您写论文时引用,并注明出处。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭