基于多层图多角度的道路交叉口车辆跟踪

2022-09-06 11:09刘向前杨慧斌贾茜伟
计算机工程与应用 2022年17期
关键词:交叉路口邻域视图

刘向前,闫 娟,杨慧斌,贾茜伟

上海工程技术大学 机械与汽车工程学院,上海 201620

随着智能监控系统和智能交通技术不断发展,研究者对目标检测跟踪与行为分析的研究日益增长。将跟踪应用于智能车辆中,可提高不同情况下驾驶性能与安全性[1-2]。Sivaraman和Trivedi[3]对道路上车辆的检测、跟踪和行为分析方面进行了研究。而近年来,针对交叉路口车辆如何跟踪问题引起了人们关注。Datondji等[4-6]研究中,他们基于机器视觉着重对交叉路口的车辆、驾驶员及行人的行为与安全性分析进行了相关研究;Veeraraghavan 等[7]通过引入两级跟踪器,用于跟踪二进制Blob,使用卡尔曼滤波器预测运动,并为目标建模,但是,拥挤的场景下,也无法满足对静止的车辆进行准确跟踪;Lira 等[8]将卡尔曼滤镜用于无人机浮动摄像机的镜头上,但是长时间晃动下,则会丢失许多帧,因此其算法也无法达到对车辆准确跟踪;Song和Nevatia[9]提出了一种马尔科夫随机场模型,通过将多个重叠的车辆分割成具有各自方向的单独车辆,他们提出的方法虽然可以跟踪方向变化的车辆,但是在出现拥堵的情况下会导致大量跟踪数据集丢失;Wu 等[10]提出用于城市交叉路口的车辆跟踪器,首先进行轨迹预测,后使用HMM 将轨迹分类为不同运动模式;Bilodeau 等[11]提出一种基于深度学习的分类标签跟踪方法,他们主要研究了交通场景中多类目标检测器的性能,并由实验结论表明检测阶段的标签改善了跟踪的性能;Prommool 等[12]开发出一种借助运动估计和泰勒级数逼近的车辆计数系统,他们所提出方法中,使用虚拟进入或退出来改进对车辆方向的预测;Del Rosario等[13]所做研究着重于智能相机视频监控,并提出数据可关联各种平台上的多视图视觉系统;Atev等[14]提出一种车辆跟踪器,用于交叉路口和高速公路上数据的自动收集,所提出模型可从任何角度进行测量,并与提出的算法有效融合在一起;Subedi 和Tang[15]提出一种针对交叉路口的多摄像机三维车辆跟踪方法,通过对每个摄像机进行校准,然后系统从摄像机中捕获同步图像并导出图像轮廓后将其投影到三维现实图像中;Wu等[16]和马泊宁等[17-18]提出一种用于车辆跟踪的图像匹配方法,所提出的方法使用了地理信息与深度特征和运动的组合。

针对单视图下交叉路口车辆跟踪实时性较差,存在误检及漏检问题。鉴于此,本文联想到多摄像机多视图下采集的方法可以具有更好的性能。尽管近年来越来越多对多摄像机方法进行相关研究,但从总体上而言,对于交叉路口车辆重叠状况下,研究还较为有限。当今与行人有关的使用图形数据关联进行跟踪已得到广泛的应用,虽然跟踪车辆并非如此,但由于相交结构,精心设计的图形层,可能会有帮助,应用在单视图跟踪中,也可以获取准确的轨迹。受此启发,本文引入多层图模型,通过构建多层图,将交叉路口车辆出入口侧位置不同或运动方向不同的运动流分布到不同层。对于每一层,引入允许方向的两个邻域,每一层代表车辆可以进入交叉路口的一侧,并且为该侧运动流定义邻域,即Near和Far邻域。在本文方法中,车辆跟踪分别在每层图形上进行,而由于图形层之间互不相交,因此避免了碰撞。车辆进入交叉路口时,将创建一个跟踪记录,穿越交叉路口期间,会随时更新轨道,当从一个单元格移动到另外一个单元格时,该视图的图形边缘权重也会随之更新,同时,系统会将相机所有视图的视频序列信息映射到选定多层图主视图上,创建一个包含所有视图的跟踪信息的映射多层图,最终通过求解最短路径来执行跟踪。针对遮挡或误检的情况,在提出的方法中是将视图中跟踪过程分为两个阶段,第一阶段通过层的相邻性来搜索跟踪历史和车辆轨迹路线;第二阶段,将其他视图的轨迹映射到选定主视图中,从映射视图中来管理其他视图中的误检。

1 多层图模型

由于道路交叉口背景错杂性,涉及到各种对象,包括小轿车、公共汽车、自行车及行人等,使得对于车辆跟踪多层图建立成为较复杂的任务过程。

1.1 多层图模型的构建

基于将车辆出入口侧位置不同或运动方向不同的运动流分布到不同层,提出用于跟踪目标车辆的多层图模型。首先,通过将交叉路口的公共区域划分为跟踪的区域;其次,在交叉口路面上构建一个由m×n单元组成的网格,其示意图如图1所示。

图1 标记边与层的网格单元图Fig.1 Grid cell diagram with marked edges and layers

由于每个单元格都是组成交叉点的一部分,所以网格单元的大小代表着一个重要的影像单元参数,其大小根据step参数像素间的网格线距离确定,如图2。

图2 多层图邻域单元Fig.2 Neighborhood cell of multi-layer graph

针对模型,构建大小为M×N网格单元矩阵,则对应网格线的截距y为:

其中,a为单元网格斜率,step为像元参数。

构建的多层图模型如图3 所示。当车辆进出交叉口时,车辆按照允许方向行驶,路口相交的每一侧都有相对应的图形层。针对车辆之间交叉重叠问题,只需构建的多层图形之间互不相交,就可保证车辆无法在不同层之间移动。同时,为了对每一层中车辆所允许的方向建模,引入前后邻域,用来显示每一层车辆运动的方向,将每一层之间的差异转化为每一层各单元邻域的差异。

图3 单视图下多层图模型Fig.3 Multi-level graph model in single view

1.2 多层图邻域的建立

假设t时刻车辆位于第k层(i,j)处,t+1 时刻位于(p,q)处,此段时间车辆运动方向未发生改变,两个时刻车辆都应位于同一层,为表示其运动关系,采用引入两个邻域“Near”和“Far”。根据该层的运动流,紧邻单元“Near”是紧靠(i,j)的单元,并且,紧邻邻域单元旁边的单元为“Far”,即远邻邻域。表1中定义了顶层的两个邻域位置,用于表示初始进入叉路口的车辆。在表1中单元格(i,j)表示所检测车辆所处的当前位置,(i,j-1)、(i,j+1)表示所检测到车辆的同层近邻邻域,(i,j-2)、(i,j+2)表示所检测车辆的同层远邻邻域。网格单元大小的变化可由不同的step参数来确定,帧速率也可以高也可以低,帧速率不同,导致车辆可以移动邻域也会不同。同样,由于摄像机的拍摄视图与安装位置的不同,单元网格可以表示实际交点部分也不同,并且一个单元网格也只能包含唯一车辆的step参数。

1.3 多角度下多层图单应性映射

交叉路口多相机的跟踪方法中,摄像机视图可被分为全部重叠、部分重叠或者不重叠[19]。但是实际场景中,摄像机视图至少会有80%部分重叠。本文方法中,通过在交叉点处距离地面2.2~2.5 m,将多个摄像机布置到不同的视角位置,达到对交叉路口全方位覆盖,这样对于车辆的跟踪问题转化为多摄像机之间的数据关联问题。通过视图之间的映射过程实现数据的关联,而不需要对摄像机进行校准,所有对应关系通过映射来计算。具体映射过程与数据关联由以下方式进行:

(1)多摄像机采集视图中,选择一个作为主视图niselected,按理来说对于主视图的选择没有任何约束,而本文是选择具有完整交叉点且视野开阔的相机视图。

(2)选定主视图后,可将其他视图的信息映射到其主视图中。由于每个视图来自每台相机,因此可以从不同的视图中获取不同的图像位置信息。目标对象之间视图相互映射通过在每个摄像机之间应用单应性关系[20]实现。所有车辆都在同一地面上,可以通过单应性分析将其视图与车辆之间进行对应。

假设xi和xj分别是同一辆车在视图i和j下的质心,这两个点之间对应的映射为Hi,j,两个视图的图像点有映射关系:xi=Hj,i xj和xi=Hi,j xi,计算niselected与其他视图k之间的n-1 个单应性矩阵:

(3)除niselected视图外,所有如图4 所示多层图形均可通过Hk、niselected映射到所选视图中。具体实施仅需映射具有跟踪信息的顶点与边,并分别将Vstart与Vend之间相互映射。基于每个摄像机的安装位置,来确定应映射到图层,对于视图k的每个边缘,确定映射的源顶点与宿顶点。由于每个顶点都存在相交的一部分,所以顶点的任何部分都可以映射到其他视图图形层的另一个顶点,而每个顶点在其他特定时间也会被映射,因此,映射结果会更加准确可靠,映射过程如式(3)所示:

图4 多视图下多层图模型Fig.4 Multi-level graph model under multi-view

其中,k为视图编号,(midx,midy)为顶点所检测车辆质心坐标,lmapped为l映射层,(midxmapped,midymapped)为对应质心坐标映射,为映射积。

图像顶点之间边缘处具有要跟踪的信息,所以在构建图形时,单元格边的权重均为W(W>0),当车辆通过边缘时,权重变为δ,映射所有图像后包含轨迹的最终权值为:

其中,是边和的权值,w是初始权值,δ为还原参数,r为图形跟踪次数。

所搭建的多层模型中,在执行跟踪之前对每个交叉点进行计算,目的为跟踪做好前期处理准备。

2 车辆跟踪

2.1 车辆轨迹的检测

跟踪过程是通过在构建的图层中搜索车辆轨迹的路径来实现。跟踪开始之前,通过多层图对每个视图构建相对应的图层,并通过求解单应性矩阵,来获取运行轨迹。同时,为了短时间内获取轨迹并保证轨迹的连续性,本文中将当前图像最后一帧与下一图像的第一帧进行重合处理。随着时间推移,图形层会进行更新,从而可保证轨迹不会在中间丢失。当车辆进入摄像机视野时,交叉路口车辆跟踪开始,因此,当车辆从特定层的入口单元进入交叉口时,它的初始层就被确定了。对于每一个被检测的车辆,可以从检测器输出的数据边界框中,提取地平面上的质心作为检测的标识,确定该检测所处的顶点,跟踪过程中保存每个视图每辆车轨迹记录,其中是该车辆在时间t图形层的顶点,tag是标识号,midx、midy是检测的质心。

由于图形层互不相交,所以可在每个层中分别执行跟踪,处于相同层的车辆应保持在同一层,不允许在其他层之间移动,对于下一帧,重复以上过程,即时间t+1时刻检测到的车辆在时间t时可以保持静止,或者移动到它的相邻单元处。对于每一个被检测到的车辆,通过在先前帧的邻域中识别出车辆轨迹。当车辆通过交叉口时,保持跟踪记录,确定检测属于先前的车辆轨迹后,使该检测的跟踪记录将更新为[new,midynew],随着视图的更新,多层图随之进行更新。根据更新的多层图,分别按层和标识号为每个视图计算通过交叉口车流量,并估计此跟踪阶段主视图中的轨迹数。

在多层图中,不是所有单元网格都包含有车辆跟踪的信息,会存在部分网格中不包含信息,所以在每次处理结束时,通过单应性映射将所有多层图映射到所选主视图中,通过映射的多层图处理所有视图中的跟踪信息。

2.2 车辆轨迹的提取

为了从多层图中分别提取出车位于每个层中的轨迹,基于多层图形中搜索路径的方法来执行,而搜索路径过程中所构的图像即为车辆在不同层形成的轨迹。基于跟踪阶段的多层图和轨迹特点,将其约束式(5)定义如下:

其中,l是总层数,vl为l层顶点数,是l层使用顶点总数。

车辆通过时,该图层边缘的权值会减小,由开始的正逐渐变为负,而最终改变的范围应位于和之间。执行跟踪时,可从到之间的所有可能单元网格中,选择其一并用f(t)l(i,j),(i′,j′)表示:

此值恒大于零,对于跟踪约束在时间t与t+1 之间,只有一辆车可以通过同一单元网格,因此,所有可能的边缘之间在时间t的所有层,只能选择一个。由于任何时候地面上的一个单元都可以被一辆可能位于任何层的车辆所占据,为解决此问题,引入式(7)约束为:

同时,每层中选定单元网格数量应小于式(8)所选定顶点数量。

根据能量守恒定律,在跟踪或搜索路径时,除vstart与vend外,用于进入和退出顶点的单元网格数量应相等。针对单元格边缘的值,它们可能会有所不同,因为跟踪的过程中可能会发生遮挡和误检测,本文通过式(9)来处理:

其中,r、s分别表示车辆进出时边缘初始值。

最后,每一层中开始的轨道路径的数量应等于该层中结束的轨道路径的数量。由于所构建的图形层是不相交的,通过定义入口边缘与出口边缘约束式(10),使得它们之间不会发生轨迹的相互切换。

2.3 车辆跟踪的实现

基于到所有上述条件约束,目标轨迹从vstart开始建立到vstart结束,这些轨迹主要是由跟踪信息单元网格所组成。为求解最小各边权值和,必须在规定的约束条件下对目标函数进行最小化处理:

本文将解决最小化问题转化为多层图中找k条最短路径,由于每个顶点最多有一辆车辆,所以这些路径的边与定点是不相交的。为找k条不相交路径,应事先求解出k的值。本文使用跟踪阶段的kestimate-#of-track作为k预测,通过将所有视图中最大轨迹数作为路径查找k的参数,并定义式(15)如下:

为计算最终车辆运行轨迹,应比较当前车辆与下一运动流的轨迹,以查看轨迹是否在接下来的运动流中继续。为保证轨道可以在上一个运动流的结束相同位置继续,将当前运动流的最后一帧与下一运动流的第一帧重叠。

当驶入交叉路口的两辆或更多车辆轨迹发生彼此交叉如图5所示。针对传统的跟踪,会导致跟踪轨道信息丢失,而本文所提出的多层图模型中是完全避免此现象。对跟踪过程中,来自不同侧面的可能会发生碰撞运动车辆,通过将其运行轨道分配到不同层进行通过,有效避免了碰撞的发生。针对图5 而言,时间t处有一个属于两个不同轨迹的监测点,即碰撞点,不同颜色表示轨道位于不同层中。通过车辆跟踪的历史记录,黑色轨迹跟踪的下一步将进入轨道2,而不是其他轨道,同理对于多辆车辆发生交叉时,其跟踪分析一样,其执行流程如图6所示。

图5 两个可能相互碰撞的运动流Fig.5 Two possible collision flows

图6 跟踪处理执行流程图Fig.6 Execution flow chart of tracking processing

3 实验验证与分析

3.1 数据集选取

实验数据集选取来自某城市位于交叉路口公开数据的运动流如图7所示,其中此交叉路口布置有八台摄像机,但是只有两个是公开的,包含汽车、卡车及公交车,视频时长为5 min 12 s,道路主要是来自四个方向的八条车道,每天的交通运动流量高达17 000辆。

图7 道路交叉口运动流视图Fig.7 View of movement flow at road intersection

3.2 跟踪邻域层

由标记的网格单元得层数L=14。为确定最佳邻域层,分别对近邻域、远邻域及两者综合三种情况进行实验,研究step参数与多层图中邻域层对其跟踪的影响。为验证其跟踪的效果,对step值起始10 到40 分别进行跟踪实验。

由图8得出分析如下:(1)就近邻跟踪结果显示,跟踪丢失帧的数量较多,可能由于起初较小值搜索近邻时,使车辆越过相邻层的区域,导致它在紧邻预测单元格中不存在;(2)远邻跟踪这种情况下,随着step参数值增加,轨迹之间会发生互换;(3)近、远邻域两种综合状况下,通过近邻进行搜索,如果没有找到相应的轨迹,则搜索远邻域。即使step参数值较小时,丢失帧数会少很多,并且随着参数值的增加,轨迹之间相互换的可能性也会减小。从相机角度分析来看,此种情况由于像元大小相同,使得运动似乎更大。综上,针对此三种情况,最好的跟踪策略是近、远邻域的综合,使得目标跟踪过程中丢失帧数据量最小。

图8 视频序列在不同邻域跟踪效果图Fig.8 Effect of video sequence tracking in different neighborhood

3.3 实验跟踪结果及分析

根据建立的多层图及选定的跟踪邻域,采用VS 2017+OpenCV 3.4.10 开发环境仿真跟踪实验。通过在选定的实验数据集中对多个运动目标进行跟踪实验,并选取视频中第160帧作为实验处理帧。分别采用:ViBe法、L-K 光流法、粒子滤波法及本文方法对运动目标进行跟踪处理,其跟踪效果如图9 所示、不同方法下目标跟踪的性能对比如表1所示。

表1 不同方法下目标跟踪性能对比Table 1 Target tracking performance comparison under different methods

有上述实验结果可看出,不同方法表现出不同的跟踪结果。其中,对于粒子滤波法,跟踪准确率比较低且容易受外界环境因素的影响;L-K光流法在较大允许误差范围内,虽然可实现对目标的跟踪,但由于算法较复杂,处理速率较低,使其跟踪的实时性太差;ViBe 法处理运算率最高,但目标跟踪中存在跟踪不准确、跟踪偏差,导致跟踪准确率较低;本文方法中,不仅保持了目标跟踪的准确率最高,同时也大大缩减了算法的复杂度,极大地提高了运算处理效率,表现出较好的实时跟踪性能。

同时,为验证本文方法在交叉路口各个状况下的跟踪效果与实时准确性,选取了视频中不同帧分别进行跟踪实验,其跟踪效果如图10所示。

由跟踪结果图表明,该多层图模型在多角度视图下可有效对交叉路口的车辆进行跟踪,从图10(E1)中可以看出,当存在遮挡条件下,该方法的追踪效果良好;图10(E2)中,跟踪的目标是黑色车,存在人行为干扰的情况下,跟踪效果依然良好;而图9(E3)中,当存在车辆轨迹之间相互碰撞交叉的情况下,车辆跟踪的效果良好,没有受到交叉轨迹线的相互干扰。

图9 目标跟踪结果图Fig.9 Target tracking results figure

图10 跟踪结果图Fig.10 Tracking results

4 结语

针对道路交叉口不确定运动流跟踪问题,提出基于多层图多角度的对进出交叉口车辆实施跟踪的方法。通过构建多层图形将各运动流分配到具有不同邻域的不同层,多角度视图下将多层图形映射到所选定主视图中,通过求解映射主视图下运动流最短路径,实现对车辆轨迹的跟踪。通过实验验证,本文方法可对交叉路口运动流94%以上的车辆进行有效预测并进行准确跟踪,总体上满足实际跟踪需求。

同时,由于本文中多层图的构建仅考虑了多视图下单应性映射与目标车辆质心,后期为进一步优化模型,提高跟踪精确率,拟在跟踪模型中引入视觉颜色特征,来缩短跟踪器的延迟时间,作为后续研究重点。

猜你喜欢
交叉路口邻域视图
基于混合变邻域的自动化滴灌轮灌分组算法
含例邻域逻辑的萨奎斯特对应理论
无信号灯交叉路口安全警示装置
尖锐特征曲面点云模型各向异性邻域搜索
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
Django 框架中通用类视图的用法
无人驾驶汽车在交叉路口的避障规划
基于车-车通信的协同交叉路口碰撞预警系统