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

  作者:莫长江 李俊宏 骆绮健 陈明波 时间:2017-02-28来源:电子产品世界

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

作者 莫长江 李俊宏 骆绮健 陈明波 岭南师范学院 信息工程学院(广东 湛江 524048)

摘要:针对系统对实时图像处理的需求,本文提出了一种基于ZYNQ AP SoC的安全驾驶系统设计方案。本系统由ZYNQ架构中的PL(FPGA)部分负责驱动CMOS摄像头,将采集的图像进行灰度转换,传给PS(ARM)部分运行Adaboost算法,对图像进行人脸检测,从而获取驾驶员的眼睛和嘴巴的坐标值、面积值和张开度,并利用OpenCV的PERCLOS算法制定疲劳状态标准,给出预警信息。同时,ARM通过USB驱动摄像头,实现行车记录,并通过酒精浓度传感器采集车内酒精浓度,实现酒驾预警。通过实验表明,本系统性能稳定,实现了保障安全驾驶的目的。

引言

  疲劳驾驶和酒驾是严重的交通违法行为,驾驶员疲劳行车时,会造成反应迟钝、困倦、四肢无力,不能及时发现路面交通情况以采取准确的驾驶操控措施,极易发生交通事故[1]。据交通部统计,2015年间,由于驾驶员疲劳驾驶导致的交通事故占总数的10.64%,在重特大交通事故中约占45%。在美国,每年与疲劳驾驶相关的车祸夺去了15000人的生命。而酒后的驾驶员会出现视觉障碍、运动反射神经迟钝、判断力降低。有数据显示,在中国,每年因酒驾导致的交通事故占40%~50%,可见,车辆装备具有疲劳检测和酒驾提醒的安全驾驶系统的必要性。

1 硬件系统架构及方案

  基于ZYNQ AP SoC(ZYNQ All Programmable SoC)的安全驾驶系统的硬件系统[2]如图1所示,系统主要由高速CMOS图像传感器Ov7725、130万像素USB网络摄像头、Zynq-7000可扩展处理芯片、数据存储单元DDR3、HDMI显示屏、酒精传感器和喇叭等组成。Xilinx公司的Zynq-7000可扩展处理芯片是整个系统的核心,其包含处理系统(Processing System,PS)和可编程逻辑(Programmable Logic,PL)两部分,PS部分集成了最高频率为667GHz的高性能双核ARM Cortex-A9处理器,而PL部分包含28nm工艺的FPGA(Field-Programmable Gate Array)逻辑单元和DSP资源。

  PL端通过I2C协议驱动[3]Ov7725摄像头,将摄像头采集的图像数据缓存于一个异步时钟FIFO(First Input First Output)队列中,而FIFO的写时钟由Ov7725摄像头模块提供,异步读时钟由VDMA Engine提供,并在读过程进行灰度图转换,后将数据读入VDMA Engine。

  PS端通过AMBA高速总线AXI_HP接口,驱动DDR3控制器,并读取一帧图片数据,并对图片进行脸部识别等图像处理,得到人脸五官特征值。(3)PS端同时通过USB-Host总线对网络摄像头进行配置,并得到图像数据,在Linux系统下将图像通过HDMI显示器显示,并将图像数据存储到SD存储卡中。(4)PS端在Linux系统下驱动内部集成的12位精度ADC转换器,将酒精传感器采集的模拟信号进行数字转换。

  预警提示最终通过调用程序预设的语音组合,由HDMI接口输出到带功放或者音频接口的HDMI显示设备,达到提醒驾驶员的目的。

2 软件系统设计

  软件系统架构如图2,采用Linaro系统,其是在Linux系统基础下,由ARM、飞思卡尔、IBM、Samsung、ST-Ericsson 及德州仪器 (TI)等半导体厂商联合为嵌入式SoC架构平台而设计的开源系统。其次,本系统使用开源的OpenCV(Open Source Computer Vision Library)进行图像的高级处理[4],并采用具有跨平台优势、易扩展的Qt图形界面开发框架作为软件APP的界面设计与产品封装。如果说系统硬件是骨架和躯体,那么软件算法就是思想和灵魂。编写程序之前,需要搭建好软件开发环境,步骤如图3。

3 疲劳检测算法分析

  本系统的疲劳检测流程如图4,系统启动后会对驾驶员的脸部信息[5]进行获取,因为驾驶员在图像中的位置相对固定,通过基于Haar特征的AdaBoost级联分类器[6],对驾驶员进行人脸检测,得到驾驶员的脸坐标,并提取检测的脸部作为ROI(region of interes),图像继续对人眼和嘴巴进行定位,得到人眼和嘴巴的特征值图像后,进而进行二值化处理,再经过形态学滤波器,对二值化图像先腐蚀后膨胀,消除小物体,在纤细点处分离物体,然后通过OpenCV里面的findcontours算子寻找并标记轮廓,从而去除图片中的噪声和图片边缘无关物体,精确得到眼睛和嘴巴的轮廓,然后对该轮廓计算收敛的面积、高度和宽度。经过上述步骤后,便得到了驾驶员的脸部五官坐标之间的距离比例关系。之后,实时地对获取摄像头的图像数据,按照得到的脸部坐标对图像进行分割,并进行AdaBoost人脸识别处理,再根据初始化时得到的人眼坐标,进一步分割图像,提高运算速度,进行人眼识别,得到实时的人眼坐标,通过人脸五官的分布比例,定位到嘴巴,然后计算人眼和嘴巴的睁开度、打哈欠数、闭眼持续时间,根据PERCLOS算法[7]制定的标准,对驾驶员进行疲劳提醒。


1 2

关键词: ZYNQ AP SoC;OpenCV 疲劳检测 行车记录 20170203

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版