APP下载

基于双目视觉的车辆检测及测距

2019-03-12陈攀

现代计算机 2019年5期
关键词:视差左图双目

陈攀

(四川大学计算机学院,成都 610065)

0 引言

随着汽车保有量的增加及无人驾驶技术的发展,前车检测及测距技术的研究,并广泛应用于汽车防撞系统中。当今常用的车间测速方法有毫米波雷达测距、超声波测距、激光雷达测距、红外线测距及计算机视觉等。其中,超声波测距实现简单、成本较低,所以应用较广,但由于多普勒效应,这种方法无法测量正在高速行驶车辆下的车距,且测距范围很低,所以其一般应用在汽车的倒车防撞系统上;毫米波雷达测距系统测量精度高、范围长,不易受外界条件干扰,但其也易受其他通信设施的电磁干扰,而且毫米波雷达测距系统成本较高,对于一般的驾驶辅助系统来说很难被广泛使用;激光雷达测距系统可以快速、精确地获得目标位置和距离信息,但是易受环境干扰且实现成本高,很难用在车载驾驶辅助系统上。相较于以上各种方法,利用计算机视觉原理实现的测距系统能够获得图像信息,可以对目标进行检测和识别,还可以根据不同的场景实现各种不同的功能,如交通标志牌检测、车道线检测等。这种方法也有其局限性,易受环境干扰,在雨雪、大雾等天气下鲁棒性较差,其精度和性能也取决于实现的算法,但因其上述及成本低廉等优点,可以广泛应用于车载辅助系统上。一般,利用计算机视觉原理测距系统分为单目视觉测距系统和双目视觉测距系统(立体视觉测距系统)。目前国内外都开展了基于视觉探测的汽车主动防护系统的相关研究工作,丰田汽车发布了雷克萨斯“LS460”配备的安全技术,采用立体摄像头及米波雷达检测障碍物,实现车辆和行人的检测[1]。

1 算法总体设计

系统的摄像元件主要用两块水平放置的摄像头组成,可以同时采集左右两幅立体图像。系统的总体流程如图1所示。先将相机采集到的图像进行灰度化处理;根据车载相机的角度截取感兴趣区域(ROI),通过截取ROI来消除天空及路边等非相关物体的干扰;车辆检测通过训练好的AdaBoost分类器,用矩形方框标记检测到的车辆;提出一种基于双目系统的交叉检测的方法,通过左图的检测结果去检测和匹配右图来保证两幅图像上检测结果的准确性和一致性;一旦检测到有效车辆,利用双目视觉原理对车辆进行测距,获得前方车辆的距离信息。

图1 系统流程图

2 车辆检测

2.1 分类器训练

车辆分类器使用Haar-like[2](类Haar)特征和Ada⁃Boost分类器,简称Haar分类器。类Haar特征值均以矩形框为单位,通过形框内所有黑色区域的和减去矩形框内所有白色区域的和即可计算得到,目前常用的矩形特征有15种[3],主要由以下四类:边缘特征、线性特征、中心-环绕特征及特定方向特征。

类Haar特征可以描述该矩形图像区域内的灰度变化情况。在目标检测时我们需要有一个子窗口在待检测的图片窗口中不断的移位滑动,子窗口每到一个位置,就会计算出该区域的类Haar特征,然后用我们训练好的级联分类器对该特征进行筛选,一旦该特征通过了所有强分类器的筛选,则判定该区域为目标。类Haar特征最初由Papageorgiou提出,后来被Paul Vi⁃ola和Michael Jones改进,用来实现人脸检测。类Haar特征适合于用来检测“基本刚性的”物体,例如人脸、车辆等,此类物体表面包含了丰富的矩形特征。类Haar特征如图2所示,本文中使用了垂直特征。

图2 类Haar特征

本文使用AdaBoost进行训练,一共使用了8873张汽车的图片作为正样本,使用了16676张负样本图片,示例如图3、图4。

图3 正样本示例

图4 负样本示例

在类Haar特征值的计算中,需要进行大量的区域像素值的累加,所以使用积分图[4]进行加速。图像积分图中每个点的值是原图像中该点左上角的所有像素值之和。也就是说,积分图是一个和图像尺寸大小相同的矩阵,其每个点的值代表的是图像中该点左上角像素点值之和。文献[5]提出了一种利用递推关系来计算积分图的算法:

其中,c(x,y)为图像在列方向上求和,初始时 c(x,-1)=ii(-1,y)=0。

使用积分图可以加速图像矩形区域内像素值累加操作,原理如下:图像中矩形区域[x0,x1] × [y0,y1] 内像素和可以通过积分图中II4+II1-II2-II3的计算得来,如图5所示。

图5 积分图

2.2 交叉检测方法

由于我们使用的Haar特征+AdaBoost分类器会有一定的误检率,效果如图6、图7所示。可以看出,检测结果中出现了相当高的误检率。

图6 左图检测结果

图7 右图检测结果

由此导致最严重的问题就是左右图像检测结果的一致性问题。系统或者成功地检测出两幅图像中的同一目标车辆,或者同时漏检同一目标车辆。除此之外,则会导致距离测量的结果出现严重偏差。因此,提出了一种基于双目系统的交叉检测的策略以保证系统检测结果的一致性。策略如下:

(1)对于在左图中检测到每个目标车辆,根据左图中目标车辆的大小和位置在右图中创建感兴趣区域(ROI)。

(2)当右侧图像的ROI建立后,在图像中搜索确定此ROI中是否存在假定的车辆。

(3)如果上述ROI中只有一辆车辆,则认为它是左侧图像中检测到的车辆。然后从搜索候选者中移除该车辆。如果不止一个候选车辆符合上述条件,我们会根据假定的车辆的大小和坐标选择最佳匹配。

(4)如果上述ROI中未发现车辆,降低分类器的阈值来对这个区域进行检测。当阈值降低,正确识别率降低,误检率升高。如果ROI内有车辆,较低的阈值更容易识别出车辆;如果左边的结果是假的(分类器误将特定视角的某些东西认定为车辆),即使是较低阈值的分类器也无法从另一个角度检测到。

●如果检测结果为正,则将右侧和左侧的新结果将标记为同一车辆。如果找到多个结果,我们继续根据假定的车辆的大小和坐标选择最佳匹配;

●如果检测结果为阴,我们将左图像的结果视为误报,并将其从结果集中删除。

(5)在左图中搜索完所有假定的车辆之后,对于右图,我们需要从左图中找到其匹配结果。由于之前已经先前搜索了所有左侧结果,因此左图中不存在任何可用的候选车辆,所以以较低阈值继续前几步。

直线方程(7)和(8)构成对参数xA的线性约束。将点集SFA和SCD内点的坐标转换成新坐标系下的坐标,为简化符号,在不引起歧义的情况下,这里仍用(xP,yP)表示点集内的P点在新坐标系下的坐标。

通过交叉再检测过程,进一步降低了误检率,效果如图8、图9所示。可以看出,误检率有很明显的提高。

图8 左图交叉再检测结果

图9 右图交叉再检测结果

3 车距测量

3.1 双目视觉测距原理

人对眼前的物体的立体感来源于物体在人双眼中成像的视差,通过双目产生的视差,人可以感知实体的三维信息以及到实体的距离信息。双目视觉测距利用两台摄像机模拟人眼的成像原理,拍摄两幅图像经过图像校正、匹配等步骤可以计算出图像像素点的视差信息,从而恢复出物体的深度信息。图10显示了双目视觉原理。Pl和Pr分别为左右相机的成像平面,我们可以看到,原始双目系统的成像平面都不是完全的行对准,不能直接计算视差,要先对图像进行立体校正,也叫做极线校正。立体校正可以对左右图像进行重投影,使它们精确地落在同一平面上。

图10 双目视觉原理图

图11显示了经立体校正后的双目视觉原理,这时可以直接计算得到视差。ol和or分别为左右相机的光心,ol与or的连线T称为基线,用来表示左右相机光心之间的距离,为定值,xl与xr分别表示实体点 p在两相机中的成像,视差d=xl-xr,Z表示实体点 p到基线的距离,f为相机的焦距。由数学上三角形的相似关系可得出视差d与深度Z的数学关系表达式

图11 立体校正后的双目视觉原理图

3.2 立体匹配

在车辆识别中,在一对立体图像中找到相似部分的能力是至关重要的问题[6]。图像立体匹配的目的是:在右图中找到左图中同一极线上指定像素点的最佳匹配。立体匹配的基本原理为:计算匹配代价函数,搜索使得匹配代价函数值最小化的位置,确定为最佳匹配点。所以,代价函数的选取是立体匹配算法中至关重要的一环。常见的一些匹配代价函数如:SAD(Sum of Absolute Difference,灰度差绝对值之和)、SSD(Sum of Squared Difference,灰度差平方值之和)、MAD(Mean Absolute Difference,平均灰度差绝对值)以及ZNCC(Zero-mean Normalized Cross-Correlation,零均值归一化互相关)等。

采用了一种由粗到精的匹配策略:先采用跳跃式步长利用较大的窗口对图像进行抽样式匹配计算出粗略的视差值,随后,将上一步匹配得到视差值作为先验知识,在对像素点逐个匹配时可以降低匹配的搜索范围,在精度和时间性能上都有所提升。主要步骤如下:

粗匹配阶段:此阶段在计算代价函数时使用大窗口以减少错误匹配。在左相机采集到的图像上设置跳跃步长,从起始像素点在右图对应行上寻找匹配点,得到由原图抽样匹配后的粗匹配视差图,再采用左右一致性检查(LRC)[7]提高匹配精度。左右一致性检查即:在完成从左到右的匹配后,再进行从右到左的匹配,检查两者匹配结果的一致性;若匹配结果一致则接受,反之,该点视差值则为空值。对于空值,采用双线性插值填充。

我们感兴趣的是前方车辆车距,因此在计算视差时只关心被交叉检测到的车辆区域,只针对这一区域进行立体匹配。

在得到图像感兴趣视差图后,可根据前述视差和深度的计算公式得到深度图,我们还需要一部分工作来推导出前车的距离信息。我们使用直方图来表示深度图,直方图横轴由相应点的深度组成,纵轴由对应深度的像素点个数组成。取直方图峰值前三做加权平均,即,其中n代表为直方图中峰值为前n,dn代表峰值前n的深度值,distance则为前方车辆的车距信息。

4 实验结果

4.1 实验设备及平台

本文所使用的摄像机为3D双目摄像机,由两只摄像头组成,集成于同一块电路板上,如图12所示。它可以同时采集左右两幅图像,图像的分辨率为640×480。本文实验平台的硬件设置为Intel Core i5-6400 2.70GHz,内存为8.00GB,软件配置为Windows 10操作系统、Visual Studio 2015以及OpenCV 3.2.4,编程语言采用C++。

图12 3D双目摄像机

4.2 实验结果及分析

由于在真实场景下我们无法获得准确的前车车距,所以我们在设置场景下进行实验。选取10-100m的10个间距进行试验,对图所示车辆在不同距离进行了实验测量。在进行立体匹配时,粗匹配阶段的匹配窗口大小设置为20×20,精匹配阶段的匹配窗口大小设置为5×5。实验结果如表1所示。

表1 车距测量结果

本文基于双目视觉原理,利用机器学习进行车辆检测,通过双目系统进行交叉再检测,并采用一种由粗到精的匹配策略,在消除车辆误检、提高视差精度两方面有了很大的提升。实验结果表明,本文提出的方法具有较高的测距精度。当然,该方法依然有所不足,现有方法车距越远,测距误差越大,这也是今后继续努力提升的方向。

猜你喜欢

视差左图双目
采用双目视觉和自适应Kalman滤波的作物行识别与跟踪
图画捉迷藏
霜 降 苏美玲
基于双目视觉的机器人定位与导航算法
基于归一化互相关的半透明遮挡视差估计
基于自适应窗的立体相机视差图优化方法研究
视差边缘优化的SGM 密集深度估计算法∗
Kobe—one of the greatest basketball players
机械手的双目视觉定位抓取研究
找图形