一种基于单目视觉的前方车辆检测方法与流程

文档序号:12124027阅读:491来源:国知局
一种基于单目视觉的前方车辆检测方法与流程

本发明涉及机器学习、图像处理、模式识别,属于机器视觉和汽车电子领域,特别涉及一种基于单目视觉的前方车辆检测方法。



背景技术:

近年来,我国经济得到迅速发展,人均汽车占有量也随之迅速增加,但是交通事故的数量也是逐年增加并且呈现上升的趋势。据2015年统计,交通事故造成的直接经济损失已经超过20亿元。追尾事故是所有交通事故中发生频率最高的,其原因之一是高速公路上车速过高;其二是驾驶员没有及时发现前方发生碰撞危险指数较高的车辆。智能交通系统(Intelligent Transportation System,ITS)能够预防交通事故从而减少不必要的损失,因此ITS已经成为全球科研的热点。据统计数据发现,如果在交通事故发生前0.5秒向驾驶员报警,则能够避免70%的不必要交通事故。

前方车辆检测系统是一种车辆的主动安全技术,即在事故发生危险之前,对事故进行实时预防和事故规避,进而避免交通事故的发生。该系统是为了减少驾驶员的负担和判断失误的一种汽车辅助驾驶系统,当驾驶员由于疏忽可能没有及时发现前方车辆,系统提示驾驶员做出相应刹车动作。通过单目CMOS摄像头采集前方道路的实时路况信息,提取前方车辆在采集图像的具体位置信息,并反馈于驾驶员,提高车辆行驶的安全性。以色列的一家图像感知技术公司Mobileye主要致力于汽车工业的计算机视觉算法和驾驶辅助系统的芯片技术研究,已经将其产品运用于特斯拉无人驾驶汽车方面,随着国内对无人驾驶汽车的研究逐步展开,安全辅助驾驶系统的研究也有了新的发展。目前,车辆检测技术主要有三种传感器可利用:基于红外检测、基于毫米波雷达检测和基于图像视觉处理。本发明所采用的是基于图像视觉处理技术,该方法具有成本较低、运用范围广和实现起来方便等优点,因此具有广泛的应用前景。国内对于前方车辆检测技术也有不少相关的论文和专利文献:奇瑞汽车股份有限公司发明的《前方车辆检测方法》(申请号:201510340493.8),提出一种根据视觉检测和雷达探测相结合得到车辆位置信息,该发明准确度比较高并且能解决道理附近杂草干扰,提高车辆检测的准确度,但是利用了雷达探测和视觉检测两个传感器,设备成本较高;长安大学推出的发明《一种高速公路前方车辆的检测方法》(申请号:201510296145.5)通过对车辆轮廓的检测结果图像进行标号,得到标号车辆;扫描标号图像,计算每个标号车辆的外界矩形根据得到外界矩形,计算每一个标号车辆的外界矩形参数,根据车辆外界矩形参数这一车辆形态特征来检测车辆比较简便,但是漏检率和误检率比较高。

查阅相关方面的技术摘要发现,基于单目视觉的前方车辆检测方法两个主要评价指标为系统的图像处理的实时性和车辆识别的准确性,这个性能指标相互影响、相互制约。所以,一种理想的车辆检测系统应该能够平衡好实时性和准确性。



技术实现要素:

针对当前技术存在的缺陷,本发明的目的在于提供一种基于单目视觉的前方车辆检测方法,其检测准确度高,系统实时性能好,能够在准确车辆的前提条件下,尽可能的降低算法的复杂性,减少系统的识别时间,使之推广于车辆记录载体和车辆自适应导航。具体来说是一种根据车辆底部阴影特征并结合HAAR特征对前方车辆进行检测,根据检测出来的车辆向驾驶员提供相应的信息。

为达到上述目的,本发明中对车辆检测算法基本思路如下:

结合车辆形态特征(底部存在阴影)和HAAR特征实现对车辆检测。通过车辆形态特征获取感兴趣区域,然后在提取感兴趣区域的HAAR特征,相比于直接提取整幅图像的HAAR特征,能够大大降低特征的维数,降低目标识别的时间,利用形态特征和HAAR特征相结合的思路还能够提高算法的准确性。

根据上述构思,本发明采用如下的技术方案:

本发明实例提供了一种基于单目视觉的车辆检测方法,所述步骤包括:

(1)图像采集:在车前上方安装CMOS摄像头以获取前方道路场景,摄像头安装时光轴尽可能与地面平行并且摄像头安装的位置必须是固定不变的;其次调整好摄像头和焦距,减少后续的图像处理中出现误差。

(2)图像预处理:首先对图像传感器获取的原始图像进行剪裁,图像上方大部分都是天空,不存在车辆出现的可能,于是仅仅保留原始图像的下方2/3部分,减少图像处理的数据量;然后对剪裁后的图像进行灰度化,采用加权灰度化的方法;之后为了有效地滤除脉冲噪声并且使目标边缘仍然比较清晰,使用中值滤波方法对灰度图像进行滤波;最后采用两次自适应方法对滤波后的图像进行二值化,通过统计路面像素的平均灰度值以及标准差,得到的最优阈值能够把路面上的车辆阴影从背景中从分离出来,此种方法能够兼顾系统的鲁棒性和实时性。

(3)图像形态学处理:对预处理后的图像进行腐蚀、膨胀以及填充孤立的空洞等操作,这样能够初步地将目标与背景相互分离。

(4)感兴趣区域(Regions of Interest,ROI)提取:本发明初步提取的感兴趣区域是根据车辆底部在正常光照条件下存在阴影这一特征,从而实现对可能为车辆区域的某些部分从原图中分离出来。为了减少干扰,首先从上到下,从左往右搜索阴影线的初始位置和终止位置,根据摄像机位置及参数标定得到,车底阴影线的范围会随所在行的不同而变化,于是系统对每一行设定一个阈值,若检测的阴影线长度与阈值相近似则认定这条线为车底阴影线,每一行对应的长度阈值关系为:

其中w为阴影线在图像中的长度;wp为车辆实际宽度;H为CMOS摄像头光轴离地面的实际高度;y为所求阴影线所在图像中的纵轴行数;h为图像行数。

(5)提取HAAR特征:对分离出来的感兴趣区域进行归一化,即尺寸大小相同,然后提取相应的五类HAAR特征并保存。

(6)目标识别:提取出来的HAAR特征,利用Adaboost算法级联出来一个强分类器对感兴趣区域的进行分类,筛选前面所有感兴趣区域,如果为车辆区域则记录相应的坐标点以及宽度。

上述目标识别是根据HAAR+Adaboost算法来实现的,基于此对感兴趣区域进行分类筛选,具体包含以下几个步骤:

步骤一:打开正负样本,正样本中仅包含车辆,负样本为道路旁边环境,然后把样本的大小归一化为32*32;

步骤二:提取正负样本的五种HAAR特征,把五种HAAR特征串联起来构成样本图像的HAAR特征向量;

步骤三:把步骤二中得到的HAAR特征向量导入到Matlab中,利用Adaboost分类器对正负样本的HAAR特征进行离线训练;

步骤四:经过一定数量正负样本训练后,级联成一个强分类器,然后把感兴趣区域进行归一化大小并提取相应的HAAR特征,基于HAAR特征对感兴趣区域进行分类。

(7)目标验证:构造奇偶能量函数和信息量函数,对识别出来的车辆区域进行对称性验证和信息熵验证,提高车辆检测算法的准确率。利用车辆形态学特征进行筛选,由于车辆尾部具有纹理和一定的对称性,使用信息熵函数检验目标区域是否存在丰富的纹理信息;使用Sobel算子对目标进行边缘处理并垂直投影,然后构造能量函数检验对称性。

为实现上述方法,本发明提供了一种前方车辆检测系统,主要组成部分包括:图像传感器、处理器、显示器和数据存储器。其中图像传感器、显示器与处理器连接。图像传感器是用于对前方道理图像进行采集,获取原始图像;处理器是将采集到的原始图像进行图像处理,将存在车辆区域部分分离出来;显示器是为了实时显示原始图像和在原图框出的车辆,用以提醒驾驶人员;存储器是为了在处理器上面搭建Linux操作系统,编译Intel官方提供的OpenCV视觉库。

优选的,本发明使用的图像传感器为车载CMOS摄像头,指向正前方道路,安装位置为车辆前方的挡风玻璃内侧,距离地面高度约为1米左右;本发明使用的处理器为Xilinx的Zynq-zc702开发板;本发明使用的存储器为SD卡,插入SDIO;本发明使用的显示器为高清车载HDMI显示器,通过HDMI线与开发板接口相连。

与现有的车辆检测技术相比较,本发明具有如下突出的实质性特点和显著的优点:

a)安装方便,成本低。本发明设计需要的传感器较少,仅需要单个CMOS摄像头便能实现对道路环境的采集,采用车载显示器,整体布局比较精简,便于对各类小轿车实现独立安装。

b)可靠性高。利用车辆形态特征和HAAR特征能够很好地将车辆检测出来,融合这两类特征,提高了车辆检测系统的抗干扰能力和实时性能。

c)调试方便。在Zynq平台上运用OpenCV可以带来很多方便,在Zynq平台上实现从摄像头实时监测和标记出车辆的位置,同时实现了对标记前和标记后的图片进行实时显示和存盘,在该平台上开发OpenCV程序与PC平台上基本上没有差异,可以在PC机上实现对算法的仿真并调试,交叉编译后便能直接在Zynq平台上运行了。

附图说明

图1是本发明方法实施例流程图。

图2是本发明实施例SD卡分区构建Linux系统示意图。

图3是本发明实施例芯片ADV7511功能结构图。

图4是本发明实施例系统硬件架构图。

图5是本发明实施例SD卡接口电路原理图。

具体实施方式

为了清楚地了解本发明技术实施方案,以下结合附图对本发明作进一步阐述说明。

如图1所示,一种基于单目视觉的前方车辆检测方法,包括如下几个步骤:

(a)图像采集:通过在车辆上固定安装CMOS摄像头获取车辆前方道路场景;

(b)预处理:对采集的图像进行裁剪、灰度化、去除噪声以及二值化操作;

(c)形态学处理:对预处理后的图像进行腐蚀、膨胀以及填充孤立空洞操作;

(d)感兴趣区域,即Regions of Interest,ROI提取:根据车辆底部存在阴影特征这一特性,对可能性是车辆区域的部分进行分离;

(e)提取HAAR特征:对ROI进行归一化到相同大小,然后提取ROI相应的HAAR特征并保存;

(f)目标识别:通过HAAR特征结合Adaboost级联一个强分类器对ROI进行分类,对车辆进行识别;

(g)目标验证:对识别出来的ROI进行对称性验证和信息熵验证,提高车辆检测算法的准确率。

在本实例中,从单目摄像头中采集的图像经过剪裁、灰度化和滤波后,采用自适应算法进行二值化,由于车辆的阴影线容易受到背景和光照的影响,通过使用两次自适应阈值分割提取车底阴影,能够消除外界干扰,鲁棒性较好。第一次阈值分割排除图像中亮度较高的像素点的影响,可以排除光强等因素引起图像质量亮度值较高的情况,第二次阈值分割求取的范围不是整幅图像而是灰度值低于第一次分割出来的阈值的像素点,对低于阈值的像素点利用自适应计算公式计算出阈值。

其中,f(m,n)为图像的灰度值;M和N分别代表图像的高度和宽度;μ为像素点灰度值的平均值;σ表示像素点灰度值的方差;Threshold为黑白分割的阈值。使用该算法提取阴影线能够较好的保留车底阴影信息,有效地抑制背景干扰和光照条件对提取阴影线的影响。

在本实例中,对阴影线的提取是通过整幅图像扫描(从上到下,从左往右)搜索起始位置和终点位置,然后确定该条阴影线在图像中的坐标和长度。根据图像成像原理可以发现,车载摄像头与前方车辆之间的距离反映在图像上为车辆在整幅图像占用的比例。当车距越远时,车底阴影线越短;当车辆越近时,车底阴影线越长。即在图像的纵轴坐标上,可以对每一行设定一个阴影线长度的阈值,当检测到的阴影线长度超过或者小于该行阈值,则删除该部分阴影线,然后进行合并阴影线,保证合并后阴影线的左端点接近目标左侧点,阴影线的右端点接近目标右侧点。根据小孔成像的原理车辆在图像中的长度w与车辆实际宽度ws、摄像头光轴距离地面高度H以及阴影线在图像纵轴方向上坐标y有如下关系:

在本实例中,提取感兴趣区域后需要对这些感兴趣区域进行智能分类,采用的算法为HAAR+Adaboost。首先制作正样本和负样本,正负样本图片大小归一化为32×32,其中正样本中仅仅包含车辆的图片,负样本中不能存在车辆并且保证负样本的多样性,尽量不要重复,利用积分图,分别提取正负样本的五种HAAR特征,再把所有图片的特征向量串联起来构成正负样本的HAAR特征向量;然后把特征向量导入MATLAB中,采用Adaboost算法对特征向量进行离线训练,得到用于目标识别的车辆分类器;接下来把感兴趣区域进行归一化与样本图像大小一致,提取感兴趣区域的HAAR特征,最终利用车辆分类器实现对感兴趣区域的分类。

通过以上步骤基本上可以把车辆从背景中识别出来,但是其中可能会存在某些误检的部分,本发明对车辆区域进一步验证。车辆根据车辆具有明显对称性这一有效依据对分类出来的目标进行验证。首先采用Sobel垂直边缘算子对目标处理得到垂直边缘增强图像,然后计算垂直边缘的对称性,将方框内在竖直方向上垂直边缘投影均值当作横坐标的一维函数g(x),根据数理理论任何一个一维函数均能由一个偶函数和一个奇函数合成,以目标中点为纵轴,一维函数的奇函数分量和偶函数分量分别为:

其中,偶函数E>0,则其均值肯定大于0,而奇函数O的均值为0,要保证偶函数的均值为0,对偶函数分量E进行归一化处理:

通过奇函数分量和经过归一化处理后的偶函数分量的能量表示轮廓对称性,奇函数的能量越大,表明对称度越小,偶函数的能量越大,表明对称度越高。目标垂直方向对称性测度最后表示如下式:

式中S∈[-1,1],当S=-1时,完全不对称;当S=1时,完全对称。通过实验发现当S>0.3时可基本认为对称。测试结果表明该区间能有效排除掉虚假车辆。

信息熵h(x)定义为信息量的数学期望。h(x)灰度图像取值范围为[0,Hmax]。通常情况下,路面灰度分布较均匀,熵值较小,但是车辆含有的信息量比较多,车辆后视窗、车牌、保险杠等包含的信息量丰富,熵值相对较大。

式中p(li)为某像素出现的频率,rows表示感兴趣区域图像的行数。对大量车辆进行统计,发现当这个区间内能有效排除虚假车辆。

为实现上述方法,本发明使用的是以ARM Cortex A9硬核与可编程逻辑紧密集成到一起的Zynq-zc702开发板。通过这样的结合,既发挥了处理器在处理复杂控制算法、运行操作系统等方面的优势,有利用了FPGA在并行算法加速,可动态重配置的特点,提高了系统的灵活性的同时实现硬件加速,也加快了硬件的开发速度。加快了算法硬件化的过程,同时在Zynq上独立完成软硬件协同设计。FPGA+ARM的架构平台具有高速、易开发的双重优势,是实现高清、实时图像处理的绝佳选择。

在实现算法前首先要在zc702移植Linux操作系统并且编译OpenCV图像处理库。准备一张容量为8GB的SD卡,对SD卡分成两个区,如图2所示,第一个分区为FAT格式用于放置Bootloader、设备树和内核镜像,第二个分区为EXT4格式,用于放置linaro-Linux文件系统。接下来编译配置u-boot,配置FPGA所用的二进制文件system.bit,生成系统启动文件BOOT.BIN,编译Linux内核,编译支持HDMI输出设备树源文件和支持FMC视频输出的设备树源文件。搭建好linaro-Linux平台后,对OpenCV源码完成交叉编译和安装,这样便于搭建基于单目视觉的视频处理软件平台。

在本实例中主要对高清晰度多媒体接口(HDMI)进行设计。HDMI系统的架构是由信宿和信源构成。在HDMI信息传输过程中,可以分为三个阶段:视频数据传输周期、控制传输周期和数据岛传输周期。在视频输出传输周期内传输的是有效像素信息,在数据岛传输周期内传输的是打包的音频和附加数据,而在前面的数据传输任务时均为控制周期。zc702的HDMI接口采用的是ADI公司生产的一款ADV7511,225MHz的HDMI发送器。如图3所示,主要包含以下几个功能块:HDMI以太网络通道,音频数据接收模块,视频数据接收以及压缩模块,高宽带数字内容保护模块以及TMDS输出模块。ADV7511的4对差分信号输入给HDMI的输出部分,然后进行输出。Zynq的系统设计图如图4所示,使用ADV7511需要选择合适的IP核,这样才能构成完整的SoC系统。

在本实施例中,CMOS摄像头接口采用的是zc-702上的USB OTG编程接口。开发板使用了usb0控制端口作为USB OTG接口,外部采用了TI公司的物理层传输芯片TUSB1210,用于连接Zynq中PS部分的MIO引脚。当USB设备不能接受该端口USB电源电压时,作为USB主机口和OTG时可以向外提供5v电压。

在本实施例中,zc702开发板内置了一个数字输入/输出(SDIO)接口,该接口为用户提供了访问不易失性SD存储卡外围设备。如图5所示,SDIO端口信号通过连接到SoC系统PS部分,并使得VCCMIO的电平上拉至1.8V,在XC7Z020AP SoC与SD卡座之间使用SDIO端口扩展器,该扩展器使用了电压转换技术。利用SD卡存储器能够很好地搭建Linux开发平台。

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