基于水平特征的车辆检测与跟踪
2021-04-29邢艳云于波
邢艳云,于波
(1.天津职业技术师范大学汽车与交通学院,天津 300222;2.中国汽车技术研究中心汽车工程研究院,天津 300162)
0 引言
近年来智能交通系统飞速发展,驾驶辅助系统得到越来越多的汽车生产厂家的重视,而车辆检测作为智能交通系统和驾驶辅助系统的重要组成部分,也一直是一个热门的研究领域。目前车辆目标的检测算法根据是否存在运动信息分为两类:(1)利用车辆的运动信息进行检测,如背景差分法[1]、帧间差分法[2]、光流法[3]等。该类方法能够在简单理想的情况下获得较好的检测效果,但过于依赖车辆的运动信息,当失去车辆的运动信息或车辆静止时车辆检测效果很不理想;(2)检测方法则不依赖于车辆的运动信息,这类方法一般从车辆本身的特征着手,根据所用特征的不同又可以分为基于颜色、阴影和纹理特性的方法[4-6],基于建模和模板匹配的方法[5]和基于统计和机器学习的方法[7-8〗。基于颜色和纹理特征的检测方法研究的是车辆与非车辆在颜色与纹理的差异,从而实现车辆的检测,该方法的特点是对特征明显的车辆能够实现较好的检测,但对于与地面颜色和纹理接近的车辆容易漏检;基于建模和模板匹配的检测方法的特点是需要建立车辆模型,然后将测试图片与模型进行匹配,从而得到目标车辆,该方法对模型的要求较高,当测试图片与模型不一致时,容易受到噪声的干扰;基于统计和机器学习的方法是采用统计分析的思想,该方法通过提取适合车辆检测的特征,利用神经网络、支持向量机等方法进行学习检测,识别准确度高,但需要大量样本进行分类器学习,并且不同分类器间性能也有差异,计算量较大。本文作者通过学习以上方法提出了基于水平特征的车辆检测算法,该方法不依赖于车辆的运动信息,能够快速地实现车辆目标检测。
1 图像预处理与图像分割
1.1 图像滤波
为了防止图片中噪声对识别的影响,首先对图片利用加权平均滤波算法进行滤波处理,滤波算法的算子为
(1)
1.2 利用Sobel算子进行边缘检测
图像滤波后对图像进行边缘检测[9],由于Sobel算法是一种较成熟的微分边缘检测算法,该算法计算简单,且能产生较好的检测效果,对噪声具有平滑作用,可以提供较为精确的边缘方向信息。Sobel算子是一阶导数的边缘检测算子,使用两个方向算子(垂直算子和水平算子),对图像进行卷积运算,得到两个矩阵,再求这两个矩阵对应位置的两个数的均方根,得到一个新的矩阵,即为灰度图像矩阵中各个像素点的梯度值。
在算法实现过程中,通过3×3模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘。Sobel算子水平方向和垂直方向的卷积模板如下:
(2)
(3)
文中利用车辆的水平特征对车辆进行检测,因此检测边缘时仅利用水平方向的Sobel算子对图像进行了横向的边缘检测,对图1的水平边缘检测结果如图2所示。
图1 图像原图
图2 水平Sobel算子边缘检测结果
1.3 自适应的图像分割算法
图像分割是指将图像分成各具特性的区域并提取出目标的技术和过程,在图像分割的基础上才能对目标进行特征提取和参数测量,因此,它是图像处理到图像分析的关键步骤。文中采用了自适应的图像分割算法——OTSU算法,OTSU算法又称为最大类间方差法,利用该方法对普通图像进行分割时,可以获得良好的分割效果,其阈值的计算方法[10-11]如下:
首先计算直方图并归一化,可以得到图像灰度级1~M,第i级像素ni个,总像素数为N,则第i级灰度出现的概率为
Pi=ni/N
(4)
计算图像的灰度均值为
(5)
计算直方图的零阶Wi和一级矩μi
(6)
w1=1-w[k]
(7)
(8)
对一级矩做以下处理:
μ0=μ[k]/w[k]
(9)
μ1=[μ-μ[k]]/[1-w[k]]
(10)
计算并找到最大的类间方差对应此最大方差的灰度值即为要找的阈值,类间方差公式如下:
σ2[k]=w0(μ-μ0)2+w1(μ-μ1)2
(11)
即σ2[k]=[μ·w[k]-μ[k]]2/{w[k]·[1-w[k]]}
(12)
其中k从1~M变化,类间方差最大的k即为所求的最佳门限值。
利用最大类间方差法对图像进行图像分割,分割结果如图3所示。
图3 利用最大类间方差法的图像分割结果
2 基于水平特征的车辆检测
2.1 基于水平特征的感兴趣区域提取
由于车体的水平边缘数量较多,且比较规则,故水平边缘特征是表现车辆的一个很好特征。由于图像中的车辆信息一般都会靠近图片中间或中间偏下的位置,而图像的上部通常是背景区域,因此,选取图像的下面2/3作为车辆的检测区域。对分割后的图像计算出检测区域内各列的白色像素点个数,即统计感兴趣区域内每列的边缘像素点个数,并画出水平边缘的列直方图,如图4所示,其中直方图的级数等于感兴趣区域的宽度,每级的bin值即为对应列的边缘像素点个数。
图4 图像的水平边缘列直方图
为了准确地定位出车辆区域,利用中值滤波对水平边缘的列直方图进行了滤波处理。通过分析多个车辆的水平特征,结合公式(13)得到一个阈值ThreVorHis:
(13)
式中:N是图像检测区域的列宽,ni是每列的水平边缘像素数。
由于车辆的水平边缘一般都是连续的,因此将连续大于阈值的区域定为可能的车辆区域,并计算出连续区域的宽度,即为可能的车辆宽度。通过该方法将得到的感兴趣区域在直方图上画出来,如图5所示。
图5 图像滤波后的感兴趣区域
2.2 基于水平特征的感兴趣区域内车辆检测
从图5中标记的感兴趣区域可知,图(a)和图(b)均有两个感兴趣区域,对应于原图1和原图2可知,图像1中有两辆汽车,而图像2中仅有一辆汽车,在图像2中标记的感兴趣2之所以被标记为感兴趣区域是因为在分割后的图片右下方有一白色区域,因其列上的目标像素数与车辆的边缘像素数接近,且其宽度与定义的图像中车辆宽度相当,故被误认为是车辆。为了确定感兴趣区域内目标的真伪,也为了确定感兴趣区域内真实目标车辆的上下边界,需要利用车辆的水平边缘特征做进一步的确认,确认方法如下:
(1)找出每一个感兴趣区域的左边界和右边界,即找出感兴趣区域边界对应的图像矩阵对应的列;
(2)对每一个感兴趣区域内的目标像素做行灰度直方图;
(3)对做出的行灰度直方图进行边缘分析,由于车辆的水平边缘一般是连续的,像素数比较集中,而且车辆的水平边缘较多,相邻两个水平边缘直接的距离较近,上下边缘之间有多条水平边缘,上下边缘距离又与车体的宽度相当,即与感兴趣区域的宽度相当,通过上述特征判定感兴趣区域内是否有车辆存在。
利用上述方法在存在车辆的行直方图中标记车辆的横向位置,标记结果如图6和图7所示。
图6 图像1两个感兴趣区域的行灰度直方图与检测的车辆位置
图7 图像2两个感兴趣区域的行灰度直方图与检测的车辆位置
由图6和图7可知,图5(a)检测的图像1的两个感兴趣区域内各有一辆车辆,而图5(b)的图像2中仅第一个感兴趣区域检测到了车辆,第二个感兴趣区域没有符合车辆水平特征的车辆,即用列直方图检测的感兴趣区域内是假目标。由图6与图7的行灰度直方图可知,有目标的3个感兴趣区域有一定的宽度,且水平线直接有多个间隔,而图7(b)虽然行灰度直方图有一定的宽度,但是像素不是特别连续,而且水平线之间间隔太少甚至没有间隔,因此,认为该区域不是真目标。在原图上标识出车辆位置如图8所示。
图8 原图上标识出车辆位置
由图8(a)可知,利用车辆的水平特征在环境复杂的图像中也可以准确地检测出车辆的位置,而图8(b)中的伪目标也被有效地剔除。另外,该方法对货车的检测也是有效的,如图9所示。
图9 基于车辆水平边缘的货车检测结果
3 车辆的跟踪算法
跟踪算法本质上也是车辆检测算法,由于视频数据的帧率为29.97 Hz,车辆在两帧时间的方位变化不会太大,因此在检测当前图像中的车辆位置时利用上次车辆检测结果来限定检测过程中搜索区域,即根据上次检测出的车辆位置信息动态调整感兴趣区域的大小,从而大幅减小搜索区域,提高系统检测的实时性。
3.1 感兴趣区域的建立
在车辆图像中,除路边的干扰信息外,路面上的大部分信息对车辆的检测也是不需要的。真正有效的区域,即感兴趣区域,实际上只集中在车辆附近一个很小的区域内。为了提高系统检测的实时性,文中采用了限定感兴趣区域法,即把离目标车辆很远,明显对检测没有意义的区域直接剔除,不对其做任何计算与处理,从而可以节省大量的计算时间,明显提高系统的实时性。如图10所示,图10(a)为检测车辆的区域,图10(b)即为建立的感兴趣区域,从图10(b)可以看出,限定感兴趣区域的图像区域占整个图像的比例很小,因此,可以有效地提高计算速度,进而大幅提高车辆检测的实时性。
图10 当前帧的车辆检测结果与其对应的感兴趣区域
3.2 算法失效后的恢复
限定感兴趣区域法在测试中表现出较好的效果,但当受到严重干扰如目标车辆被横向穿越的行人等遮挡很严重的情况下,算法会产生较大误差甚至失效,在本车或前方车辆换道或者转弯时,算法也会产生较大误差或暂时失效。实际应用中,为保证车辆检测在出现较大误差或失效时能及时恢复正确识别,应首先检测算法是否失效,以便启动车辆重新检测模块。具体判定算法失效的方法如下:
在当前帧感兴趣区域内没有检测到目标,下一帧的感兴趣区域会适当扩大检测范围,即将感兴趣区域扩大,当连续5次未检测到车辆,即认为算法失效。此时需重新启动初始检测算法,即重新在整帧图像中检测目标车辆,重新限定感兴趣区域,从而恢复车辆的正确跟踪。
3.3 车辆的跟踪
实时跟踪车辆的实验是车辆行驶状态下利用行车记录仪录制某一国道上车辆行驶的视频,车辆车速为60 km/h,视频长度为10 min,由于转弯等问题导致的失效共重启算法3次。截取部分跟踪效果图如图11所示,每间隔20帧截图一次。
图11 车辆跟踪的截图
由图11可知,该方法能够有效地对车辆进行跟踪,只有当前方车辆离当前车辆距离较远时,如图中的最后一幅图,才会失去跟踪目标,此时如果在扩大的感兴趣区域内连续5帧没有检测到车辆信息,则认定算法失效,系统会重新启动车辆检测算法,在整幅图像进行检测,直到重新检测到车辆。
4 结论
对图像首先进行滤波处理,去除部分噪声,并利用Sobel算子的水平算子对图像的水平边缘进行增强处理,利用最大类间方差法对边缘增强后的图像进行图像分割;然后根据车辆的水平特征利用车辆的列直方图和行直方图对车辆进行检测,检测结果良好,对复杂环境下的车辆也能有效地识别,且对货车的识别效果良好;最后,利用限定感兴趣区域法对车辆进行跟踪,通过实验验证,跟踪方法有效。