一种基于边云融合的在线交通事件感知系统的制作方法

文档序号:22799922发布日期:2020-11-04 03:57阅读:487来源:国知局
一种基于边云融合的在线交通事件感知系统的制作方法

本发明涉及视频图像处理领域,具体涉及一种基于边云融合的在线交通事件感知系统。



背景技术:

智能交通系统(intelligenttransportationsystem,its)建立在完善的道路检测设备的基础之上,并通过计算机视觉、自动化控制技术、数据编码及传输技术来加强交通运载工具、用户与监管部门之间的联系,提高交通系统整体的可控性与有序性,以实现提升系统运行效率,降低事故发生率,减小环境污染为目标的综合系统。美国智能交通学会(itsamerica)最早于上世纪60年代提出its的概念,并迅速在世界各国的得到推广。目前美国、欧洲、日本等都有自己的一套完善的its系统,其中日本的道路交通情报通信系统(vehicleinformationandcommunicationsystem,vics)[7]已累积创产值600亿美元。

道路交通事件检测系统作为its中最为重要的部分,是提高交通系统整体运行效率的前提和保障。道路交通事件的主体为车,对车辆的检测是其中基础环节,目前车辆检测主要可以分为3类方法:1)磁频类车辆检测,在交叉路口地面以下埋设磁感线圈来感应经过的车辆,并结合信号灯状态来触发卡口摄像机抓拍视频或照片;2)波频类车辆检测,该技术的原理为车辆在经过卡口时会改变附近能量波的状态,因此可以在路口上方或侧边安装超声波、微波或红外检测器来探测经过车辆;3)视频类车辆检测,将计算机视觉、模式识别与视频图像处理技术结合的一种新型技术,也代表了未来道路交通事件检测的方向。它用视频相机作为传感器,并设置虚拟检测区域,当车辆进入虚拟检测区域时引发灰度等特征的改变,通过计算机分析这些特征,从而完成对车辆的检测,并结合预先标定的车道,信号灯等信息而对车辆违法行为做出判断。综上所述,磁频检测器大多需要在路面以下铺设线圈,安装和维护都需要破坏路面,成本较大;波频检测器具有多车道检测、车速检测等优点,但易受到铁质隔离带的干扰,受环境温度影响较大,对环境要求较高;视频检测在具有较大的灵活性的同时还具备提供各类重要的交通管理信息的优点。

对于路口车辆行为感知主要可以分为物理设备检测方法以及视频检测方法两大类,其中物理设备检测方法以激光、超声波等辅助设备为主,具有较高的精确度,但也存在设备从成本投入,后期维护等问题;而视频检测除了必要的监控摄像机外,无需额外设备,其精度取决于监控摄像机的所能提高的像素。目前,已经有很多基于视频分析的交通事件感知方法,其中与本发明最接近的方案包括:发明专利(一种大长隧道交通事件实时检测方法及检测系统,申请号:201610926104.4)通过在大长隧道的出入口安装摄像机,然后采集出入口的车牌信息,通过时间比对判断在大长隧道内的交通事件;发明专利(基于视频监控的城市道路交通事件检测系统,申请号:201810827255.3)主要通过实时图像与标准参考图像的灰度差值来判断目标,该方案并不准确,且无法区分行人和车辆,也无法区分车型;发明专利(一种基于视频分析的交通事件检测系统,申请号:20170504134.0)仅实现了跨线、闯红灯、不按导向行驶、车辆数、车速等交通事件及参数的采集;发明专利(道路事件检测系统,申请号:201811637853.0)主要通过背景刷新的方法识别目标,该方案仍然没有提供区分行人和车辆的方法,也无法识别车型;发明专利(交通事件检测方法、装置、设备及存储介质,申请号:201910356424.4)主要为了获取交通流量、速度等交通参数;发明专利(一种大区域多目标交通事件检测系统及方法,申请号:201911017416.3)利用微波实时探测目标位置,然后通过视频检测器获取目标的位置、速度、车型、车道,进一步检测限速,该方案功能比较单一;海康威视发布了““雷视合一”、融合感知的交通检测神器”(中国公共安全,2019,10:1-2)将雷达与视频分析融合至一台装置内,实现了超速事件的实时检测;文献(孟芯宇,魏珍琦,杜瑞,刘涵。基于图像的多条件融合交通事件检测技术研究。交通世界,2019,22:10-11)高速逆行、停车、碰撞等交通事件的检测;文献(郜义浩,高志权,张明月,杨——刘星宇。基于yolov3和kcf的高速公路监控视频交通事件检测。中国交通信息化,2019,s1:197-201)采用基于yolov3的目标检测和基于kcf的目标跟踪方法实现了高速公路行人、停车和逆行三类事件的检测;文献(朱文兴,刘晓亮,赵成龙。基于跟踪算法和模糊推理的交通事件检测方法。数据采集与处理,2016,31(6):1115-1126)采用背景差分法实现车辆检测,同时采用卡尔漫滤波方法实现车辆跟踪,进而采用模糊推理方法实现交通事件判别,该方法无法判别具体的交通事件。

综上所述,现有交通事件大多数嵌入在边缘端,可检测交通事件的数量较少;少数采用云端方式,但其检测事件类型仍比较单一,扩展性较差,采用的方法通常为背景差分法,准确率较低,或者采用yolov3及kcf进行目标检测与跟踪,但其实时性较差。



技术实现要素:

为克服上述不足,本发明提供了一种基于边云融合的在线交通事件感知系统,采用图像分析与检测技术进行各种交通事件的感知。

一种基于边云融合的在线交通事件感知系统包括边缘端视频设备、光纤、云端视频存储平台、千兆网线、千兆路由器及云端分析服务器,边缘端视频设备通过光纤与云端视频存储平台连接,云端视频存储平台通过千兆网线与千兆路由器相连,同时边缘端视频设备通过光纤与千兆路由器相连,千兆路由器通过千兆网线与云端分析服务器相连;云端视频存储平台实时记录边缘端视频设备采集的交通图像;云端分析服务器内置交通事件感知软件,用户可通过感知软件提供的接口选择功能选择从边缘端视频设备或云端视频存储平台获取实时交通图像,交通事件感知软件提供初始化、码流获取线程和分析线程实现包括车辆压线行驶、车辆闯红灯、车辆不按导向行驶事件、车辆在斑马线前未礼让行人、车辆逆向行驶、车辆非法占用公交车道、车辆非法占用非机动车道、车辆违法掉头、信号灯故障、路口溢出、车辆非法越线停车、车辆不按规定与前车保持必要的安全距离、路面异常停车、非机动车占用机动车道、行人上高架或高速、货车上高架和车辆右转或高速下匝时未打右转向灯在内的多种事件感知功能;

所述的一种基于边云融合的在线交通事件感知系统,其特征在于,所述的交通事件感知软件的初始化实现步骤如下:

步骤1:定义集合及变量,具体为:

(a)交通事件集合vtype={cross,run_red_light,no_guidance,ped,converse,cover_bus_lane,cover_non_vehicle_lane,iilegal_turn,light,overflow,over_line,follow_close,abnormal_stop,non_vehicle_cover_lane,ped_on_road,truck_on_elevated_road,no_right_light_on,none},cross表示车辆压线行驶事件,run_red_light表示车辆闯红灯事件,no_guidance表示车辆不按导向行驶事件,ped表示车辆在斑马线前未礼让行人事件,converse表示车辆逆向行驶事件,cover_bus_lane表示车辆非法占用公交车道事件,cover_non_vehicle_lane表示车辆非法占用非机动车道事件,iilegal_turn表示车辆违法掉头事件,light表示信号灯故障事件,overflow表示路口溢出事件,over_line表示车辆非法越线停车事件,follow_close表示车辆不按规定与前车保持必要的安全距离事件,abnormal_stop表示路面异常停车事件,non_vehicle_cover_lane表示非机动车占用机动车道事件,ped_on_road表示行人上高架或高速事件,truck_on_elevated_road表示货车上高架事件,no_right_light_on表示车辆右转或高速下匝时未打右转向灯事件,none表示无交通事件;

(b)信号灯状态集合lstate={green,yellow,red},green表示信号灯为绿灯,yellow表示信号灯为黄灯,red表示信号灯为红灯;

(c)车道属性集合lproperty={left,left_direct,direct,right,right_direct,none_light},left表示左转车道,left_direct表示左转直行车道,direct表示直行车道,right表示右转车道,right_direct表示右转直行道,none_light表示不限制车道;

(d)车道类型集合lanetype={bus_lane,vehicle_lane,non_vehicle_lane},bus_lane表示公交车道,vehicle_lane表示机动车道,non_vehicle_lane表示非机动车道;

(e)车辆跟踪消失方向集合disappear={left_disa,right_disa,direct_disa,edge_disa,none_disa},left_disa表示车辆消失在图像左边,right_disa表示车辆消失在图像右边,direct_disa表示车辆消失在直行方向,edge_disa表示车辆消失在图像边界,none_disa表示车辆未消失;

(f)行人行进方向集合ped_direct={no_direction,left_right,right_left},init表示无方向,left_right表示行人从左向右,right_left表示行人从右向左;

(g)车型集合vehicletype={car,bus,truck,motor,bicycle,tricycle},car表示普通家用汽车,bus表示大巴车,truck表示货车,motor表示摩托车,bicycle表示自行车,tricycle表示三轮车;

(h)行人跟踪集合表示为p={<pj=<pxj,pyj,pwj,phj>,pdj>|j=1,2,…,m},pj表示第j个行人的包络框,(pxj,pyj)表示左上角的坐标,pwj和phj分别表示pj的宽度和高度,pdj表示第j个行人的行进方向,pdj∈ped_direct,m表示集合p中的行人数量;

(i)车辆跟踪集合表示为c={<ci=<cxi,cyi,cwi,chi>,c1i=<c1xi,c1yi,c1wi,c1hi>,c2i=<c2xi,c2yi,c2wi,c2hi>,c3i=<c3xi,c3yi,c3wi,c3hi>,lanei,lpropi,light1i,light2i,light3i,t1i,t2i,t3i,csi,ci1i,ci2i,ci3i,vti,cti,rti,tni,di>|i=1,2,…,n},n表示集合c中的车辆数量,ci表示第i辆车当前的包络矩形框,(cxi,cyi)表示ci左上角的坐标,cwi和chi分别表示ci的宽和高,c1i表示在t1i时刻获取到的第i辆车的包络矩形框,(c1xi,c1yi)表示c1i左上角的坐标,c1wi和c1hi分别表示c1i的宽和高,light1i表示对应于车道号lanei在t1i时刻的信号灯状态,ci1i表示在t1i时刻的完整图像,c2i表示在t2i时刻获取到的第i车辆的包络矩形框,(c2xi,c2yi)表示c2i左上角的坐标,c2wi和c2hi分别表示c2i的宽和高,light2i表示对应于车道号lanei在t2i时刻的信号灯状态,ci2i表示在t2i时刻的完整图像,c3i表示在t3i时刻获取到的第i车辆的包络矩形框,(c3xi,c3yi)表示c3i左上角的坐标,c3wi和c3hi分别表示c3i的宽和高,light3i表示对应于车道号lanei在t3i时刻的信号灯状态,ci3i表示在t3i时刻的完整图像,lanei表示车道号,lpropi表示车道属性,lpropi∈lproperty,light1i∈lstate,light2i∈lstate,light3i∈lstate,vti表示发生的交通事件,vti∈vtype,cti表示车型,cti∈vehicletype,rti表示右转向灯点亮的次数,tni表示第i辆车在整个视频中存在的帧数,di表示车辆跟踪的消失方向,di∈disappear,csi表示对应于c1i包络框从图像ci1i中截取的放大的车辆图像,csi与ci1i大小一样;

步骤2:系统初始化,启动分析线程,具体步骤为:

步骤2.1:从标定系统中读取每路相机参数,包括相机编码、相机ip地址、相机登录名、相机登录密码、相机登录端口、通道号;

步骤2.2:从标定系统中读取该路相机对应的信号灯集合l={<li,lri>|i=1,2,…,k},li∈lstate,lri=<lxi,lyi,lwi,lhi>表示对应于li在图像中的标定区域,(lxi,lyi)表示信号灯区域lri左上角的坐标,lwi和lhi分别表示信号灯区域lri的宽度和高度,k为该路相机画面中从左至右的信号灯数量;

步骤2.3:构建信号灯状态队列表示第t次采集到的第i个信号灯的状态,

步骤2.4:构建路口溢出车辆数量队列cq={qt|t=1,2,…},qt表示第t次检测到的车辆数;

步骤2.5:构建图像队列iq={<imr,tmr>|r=1,2,…},imr表示从边缘端视频设备或云端视频存储平台获取的第r幅图像,tmr表示获取imr时的时刻;

步骤2.6:从标定系统中读取该路相机对应的车道集合lane={<lidk,llsk,llek,lrsk,lrek,lpk,ltk>|k=1,2,…,e},lpk表示车道属性,lpk∈lproperty,lidk∈[1,k],lidk表示第k条车道对应的信号灯的序号,e表示车道数量,k表示车道号,ltk表示车道类型,ltk∈lanetype;初始化l中的所有li=green,第k条车道由左边车道线和右边车道线构成,左边车道线用表示,的两个端点分别由llsk和llek表示,右边车道线表示,两个端点分别由lrsk和lrek表示,(llsk.x,llsk.y)表示llsk的坐标,(llek.x,llek.y)表示llek的坐标,(lrsk.x,lrsk.y)表示lrsk的坐标,(lrek.x,lrek.y)表示lrek的坐标;

步骤2.7:初始化c和p为空集合;初始化lq为空队列;初始化cq为空队列;初始化iq为空队列;

步骤2.8:针对每路视频根据连接参数登录边缘端视频设备或云端视频存储平台,启动码流获取线程和分析线程;

所述的一种基于边云融合的在线交通事件感知系统,其特征在于,所述的交通事件感知软件的码流获取线程,具体步骤如下:

步骤3.1:根据用户对接口的选择,从边缘端视频设备或云端视频存储平台获取图像im,同时将图像获取的时刻记为tm;

步骤3.2:若|iq|<iqnum0,则将<im,tm>添加至iq队列中;其中,|.|表示获取集合或队列的元素个数;iqnum0表示iq允许的最大元素个数;

步骤3.3:转步骤3.1;

所述的一种基于边云融合的在线交通事件感知系统,其特征在于,所述的交通事件感知软件的分析线程,具体步骤如下:

步骤4.1:若|iq|<2,则等待100毫秒,转步骤4.1;否则,从iq的队首取出一个元素,并将取出的元素的图像记为i,取出的元素的时刻为记为time,同时将i的宽度记为width,高度记为height;

步骤4.2:若信号灯集合l非空,则检测信号灯状态,并更新集合l,具体为:针对每个信号灯区域lri,令lrgi=<lrgxi,lrgyi,lrgwi,lrghi>表示绿灯兴趣区域,(lrgxi,lrgyi)表示区域lrgi左上角的坐标,lrgwi和lrghi分别表示区域lrgi的宽度和高度,lrri=<lrrxi,lrryi,lrrwi,lrrhi>表示红灯兴趣区域,(lrrxi,lrryi)表示区域lrri左上角的坐标,lrrwi和lrrhi分别表示区域lrri的宽度和高度;若lhi>1.5*lwi,则分别根据式(4-1)和(4-2)计算lrgi和lrri;否则,分别根据式(4-3)和(4-4)计算lrgi和lrri;根据式(4-5)更新li;

其中,bgrr表示对应于区域lrri的子图像的三通道平均灰度值,bgrr.r表示bgrr的红色分量值,bgrg表示对应于区域lrgi的子图像的三通道平均灰度值,bgrg.r、bgrg.g和bgrg.b分别表示bgrg的红色、绿色和蓝色分量值,red_threshold表示红灯判断阈值,red_threshold∈[100,255],green_threshold表示绿灯判断阈值,green_threshold∈[100,255];

步骤4.3:设标定的目标检测区域为cr,cr对应的彩色图像为ci,对ci进行背景建模,并进行形态学操作,然后进行二值化,得到目标检测区域二值图像bi,若bi的平均灰度值为0,则转步骤4.7;

步骤4.4:进行行人检测,具体方法为:搜索bi中的连通区域,对每个连通区域,若其宽高比大于等于行人宽高比阈值whp0,则采用机器学习方法对该连通区域进行行人检测,若检测到行人,将检测到的行人换算到图像i坐标下的包络框记为np=<npx,npy,npw,nph>,(npx,npy)表示包络框np左上角的坐标,npw表示包络框np的宽度,nph表示包络框np的高度;若np满足式(4-6),则将<np,no_direction>添加到集合p中;

其中,sp表示np与pj的交集框,∩表示求交集,sp.w表示sp的宽度,sp.h表示sp的高度,ap0表示行人面积比值的阈值,wp0表示行人宽度比值的阈值,hp0表示行人高度比值的阈值;

作为可选的,进行行人检测时,还可以采用如下方法:采用轻量级卷积神经网络模型直接对目标检测区域cr进行行人检测,假设对检测到的每个行人换算到图像i坐标下的包络框仍表示为np=<npx,npy,npw,nph>,若np满足式(4-6),将<np,no_direction>添加到集合p中;

步骤4.5:进行车辆检测,具体为:设置临时变量num=0;搜索bi中的连通区域,对每个连通区域,若其宽高比大于或等于车辆宽高比阈值whc0,则采用机器学习方法对该连通区域进行车辆检测,若检测到车辆,则设置num=num+1,并将检测到的车辆换算到图像i坐标下的包络框记为nc=<ncx,ncy,ncw,nch>,同时将检测到的车辆类型记为type,type∈vehicletype,(ncx,ncy)表示包络框nc左上角的坐标,ncw表示包络框nc的宽度,nch表示包络框nc的高度;根据nc计算所在的车道号并用变量g表示,g满足式(4-7);根据g从集合lane中找到第g条车道对应的车道属性lpg;根据g从集合lane中找到对应的信号灯编号为lidg,再根据lidg从集合l中找到第lidg个信号灯状态若nc满足式(4-8),则将<nc,nc,empty,empty,g,lpg,green,green,time,0,0,cs,i,null,null,none,type,0,0,none_disa>添加到集合c中;

其中,sc表示nc与ci的交集框,a(.)表示面积计算公式,sc.w表示sc的宽度,sc.h表示sc的高度,ac0表示车辆面积比值的阈值,ac0∈[0.2,0.4],wc0表示车辆宽度比值的阈值,wc0∈[0.3,0.6],hc0表示车辆高度比值的阈值,hc0∈[0.3,0.6],cs表示根据包络框nc从i截取车辆图像并放大到与i一样大小的图像,empty表示<0,0,0,0>,null表示空图像;

作为可选的,进行车辆检测时,还可以采用如下方法:采用轻量级卷积神经网络模型直接对目标检测区域cr进行车辆检测,假设对检测到的每辆车换算到图像i坐标下的包络框仍表示为nc=<ncx,ncy,ncw,nch>,同时将检测到的车辆类型记为type,type∈vehicletype;根据nc计算所在的车道号并用变量g表示,g满足式(4-7);根据g从集合lane中找到第g条车道对应的车道属性lpg;根据g从集合lane中找到对应的信号灯编号为lidg,再根据lidg从集合l中找到第lidg个信号灯状态若nc满足式(4-8),则将<nc,nc,empty,empty,g,lpg,green,green,time,0,0,cs,i,null,null,none,type,0,0,none_disa>添加到集合c中;

步骤4.6:若目标检测区域cr为十字路口,若|cq|≥q0,则将队列cq中的队首记录删除;将num添加到队列cq的队尾,其中,|.|表示求元素个数,q0表示队列cq允许的最大元素个数;

步骤4.7:对c中的每辆车进行交通事件感知,具体为:

步骤4.7.1:采用跟踪算法对c中第i辆车进行跟踪,i=1,2,…,n,得到新的第i辆车的包络框ci;根据式(4-9)设置vti;设置tni=tni+1;若lpropi=right,则采用轻量级深度卷积神经网络模型检测第i辆车的右转向灯是否点亮,若检测到点亮的右转向灯,则设置rti=rti+1;

其中,cd0表示逆向行驶的最小距离阈值;

步骤4.7.2:采用跟踪算法对p中任意第j个行人进行跟踪,并设跟踪到的第j个行人换算到图像i的坐标下的包络框为p′j=<px′j,py′j,pw′j,ph′j>,并根据式(4-10)设置pdj,然后设置pj=p′j;其中,(px′j,py′j)表示p′j左上角的坐标,pw′j和ph′j分别表示p′j的宽和高;

其中,pd0表示行人移动位移的最小阈值;

步骤4.7.3:若c2i=empty且cyi>y0,定义线段lsi,令lsi的起点和终点坐标分别为(lsbxi,lsbyi)和(lsexi,lseyi),它们根据式(4-11)计算,若存在车道线与lsi相交,则设置c2i=ci,ci2i=i,vti=cross,t2i=time;

其中,α表示违法压线事件感知调整系数,α∈{1,2,3,4,5},y0表示红灯停止线的纵坐标;

步骤4.7.4:根据lanei从集合lane中找到对应的信号灯编号为设置临时变量再根据tmp从集合l中找到第tmp个信号灯的状态ltmp;然后按如下步骤执行:

步骤4.7.4.1:若c2i=empty且(cyi+chi)<y0,则设置c2i=ci,ci2i=i,light2i=ltmp,t2i=time,若满足式(4-12),则设置vti=ped,转步骤4.1;若c2i≠empty且c3i=empty且vti=ped,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

其中,表示存在一个整数r;

步骤4.7.4.2:若c2i≠empty且c3i=empty且(cyi+chi)<yd0,则设置c3i=ci,ci3i=i,light3i=ltmp,t3i=time,di=direct_disa,yd0表示跟踪直行车辆的极限纵坐标,转步骤4.1;

步骤4.7.4.3:若c2i≠empty且c3i=empty且(cxi+cwi)<xl0,则令c3i=ci,ci3i=i,light3i=ltmp,light3i=ltmp,t3i=time,di=left_disa,xl0表示跟踪左转弯车辆的极限横坐标,转步骤4.1;

步骤4.7.4.4:若c2i≠empty且c3i=empty且cxi>xr0,xr0表示跟踪右转弯车辆的极限横坐标,则设置c3i=ci,ci3i=i,light3i=ltmp,t3i=time,di=right_disa,转步骤4.1;

步骤4.7.4.5:若c2i≠empty且c3i=empty且(cxi≤0||cyi≤0||(cxi+cwi)≥width||(cyi+chi)≥height),则设置c3i=ci,ci3i=i,light3i=ltmp,t3i=time,di=edge_disa,转步骤4.1;

步骤4.7.4.6:若c2i=empty且vti=converse,则设置c2i=ci,ci2i=i,t2i=time,转步骤4.1;若c2i≠empty且c3i=empty且vti=converse,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

步骤4.7.4.7:若c2i=empty且从集合lane中找到第lanei条车道对应的车道类型则设置c2i=ci,ci2i=i,t2i=time,vti=cover_bus_lane,转步骤4.1;若c2i≠empty且c3i=empty且vti=cover_bus_lane,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

步骤4.7.4.8:若c2i=empty且从集合lane中找到第lanei条车道对应的车道类型则设置c2i=ci,ci2i=i,t2i=time,vti=cover_non_vehicle_lane,转步骤4.1;若c2i≠empty且c3i=empty且vti=cover_non_vehicle_lane,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

步骤4.7.4.9:若c2i≠empty且c3i=empty且(cyi+chi)>yd0且满足式(4-13),则设置c3i=ci,ci3i=i,t3=time,vti=over_line,转步骤4.1;

其中,osc0表示越线停车时车辆包络框面积相交的比例阈值,osc0∈[0.5,1.0],ot0表示越线停车时停留的时间阈值,单位为秒;在本实施例中,osc0=0.8,ot0=60;

步骤4.7.4.10:若本系统部署在高速上,若c2i=empty且cyi>yd0且满足式(4-14),则设置c2i=ci,ci2i=i,t2i=time,vti=follow_close,转步骤4.1;若c2i≠empty且c3i=empty且vti=follow_close,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

其中,dist表示高速上标定的跟车距离阈值;

步骤4.7.4.11:若c2i≠empty且c3i=empty且满足式(4-15),则设置c3i=ci,ci3i=i,t3i=time,vti=abnormal_stop,转步骤4.1;

其中,sa0表示路面异常停车时车辆包络框面积相交的比例阈值,sa0∈[0.5,1.0],st0表示路面异常停车时停留的时间阈值,单位为秒;

步骤4.7.4.12:若c2i=empty且(cti=motor||cti=bicycle||cti=tricycle)且从集合lane中找到第lanei条车道对应的车道类型不等于non_vehicle_lane,则设置c2i=ci,ci2i=i,t2i=time,vti=non_vehicle_cover_lane,转步骤4.1;若c2i≠empty且c3i=empty且vti=non_vehicle_cover_lane,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

步骤4.7.4.13:若系统部署于高架的监控场景且c2i=empty且cti=truck,则设置c2i=ci,ci2i=i,t2i=time,vti=truck_on_elevated_road,转步骤4.1;若c2i≠empty且c3i=empty且vti=truck_on_elevated_road,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

步骤4.7.5:针对行人集合p中的每个行人,若其中心点已经超出目标检测区域cr的范围,则将其从集合p中移除;

步骤4.7.6:根据不同情况实现交通事件感知,具体为:

(1)车辆压线行驶事件感知:若c2i≠empty且vti=cross,则设置c3i=ci,ci3i=i,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(2)车辆闯红灯事件感知:若c2i≠empty且c3i≠empty且vti=none且满足式(4-16),设置vti=run_red_light,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

lpropi≠none_light&&light1i=red&&light2i=red&&light3i=red(4-16)

(3)车辆不按导向行驶事件感知:若c2i≠empty且c3i≠empty且vti=none且满足式(4-17),设置vti=no_guidance,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(4)车辆在斑马线前未礼让行人事件感知:若c2i≠empty且c3i≠empty且vti=ped,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(5)车辆逆向行驶事件感知:若c2i≠empty且c3i≠empty且vti=converse,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(6)车辆非法占用公交车道事件感知:若c2i≠empty且c3i≠empty且vti=cover_bus_lane,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(7)车辆非法占用非机动车道事件感知:若c2i≠empty且c3i≠empty且vti=cover_non_vehicle_lane,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(8)车辆违法掉头事件感知:若c2i≠empty且c3i≠empty且di=edge_disa且((c1yi>c2yi&&c3yi>c2yi)||(c1yi<c2yi&&c3yi<c2yi)),设置vti=iilegal_turn,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(9)信号灯故障事件感知:若|lq|≥t0,则将队列lq中的队首记录删除;将<l1,l2,…,lk>添加到队列lq的队尾,其中,|.|表示求元素个数,t0表示队列lq允许的最大元素个数;对信号灯状态进行判断,若第q个信号灯状态满足式(4-18),则说明第q个信号灯存在故障,则保存图像i,并在该图像标记信号灯故障light;

(10)路口溢出事件感知:若目标检测区域cr为十字路口且满足式(4-19),则说明十字路口存在交通溢出事件,保存图像i,并在该图像标记路口溢出事件overflow;其中,of表示路口溢出的阈值;

(11)车辆非法越线停车事件感知:若c2i≠empty且c3i≠empty且vti=over_line,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(12)车辆不按规定与前车保持必要的安全距离事件感知:若c2i≠empty且c3i≠empty且vti=follow_close,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(13)路面异常停车事件感知:若c2i≠empty且c3i≠empty且vti=abnormal_stop,将图像ci1i和ci2i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(14)非机动车占用机动车道事件感知:若c2i≠empty且c3i≠empty且vti=non_vehicle_cover_lane,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(15)行人上高架或高速事件感知:若系统部署于高架、高速路的监控场景,若|p|>0,则将行人上高架或高速ped_on_road事件类型标记在图像i中并进行保存,清空p,转步骤4.1;

(16)货车上高架事件感知:若系统部署于高架的监控场景,且c2i≠empty且c3i≠empty且vti=truck_on_elevated_road,则将图像ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

(17)车辆右转或高速下匝道未打转向灯事件感知:若c2i≠empty且c3i≠empty且di=right_disa且满足式(4-20),则设置vti=no_right_light_on,将图像ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤3.1;

其中,tn0表示未打转向灯的占比阈值,0≤tn0≤0.5。

与现有技术相比,本发明具有的主要有益效果为:(1)本发明既适用于对接边缘端视频设备,同时也可适用于对接云端视频存储平台,具有扩展性强、可分布式部署等优点;(2)本发明无须在前端增加设备,只需增加分析服务器,可充分利用已经建设好的旧的传统非智能相机,为县乡村级安全防护工程提供了智能分析;(3)本发明在统一的系统框架内同时提供多达17种交通事件检测,不仅包括传统的违法行为感知功能,而且具有信号灯故障、路口溢出等非违法类交通事件实时感知功能,此外,它们可根据实际需要进行选配,具有良好的适配性和扩展性;(4)本发明特有的融合背景建模与传统机器学习方法的车辆或行人检测思路,不仅保证了系统的实时性,而且保证了准确性;(5)本发明还可以用于离线的交通事件感知。

附图说明

图1为系统构成;

图2为红灯停止线、逆向行驶的最小距离标定线、左转跟踪停止线、直行跟踪停止线、右转跟踪停止线示意图;

图3为行人移动位移的最小阈值标定线示意图;

图4为跟车最小距离标定线示意图。

图5为车辆压线行驶事件感知结果示例;

图6为车辆闯红灯事件感知结果示例;

图7为车辆不按导向行驶事件感知结果示例;

图8为车辆在斑马线前未礼让行人事件感知结果示例;

图9为车辆逆向行驶事件感知结果示例;

图10为车辆非法占用公交车道事件感知结果示例;

图11为车辆非法占用非机动车道事件感知结果示例;

图12为车辆违法掉头事件感知结果示例;

图13为信号灯故障事件感知示意图;

图14为车辆不按规定与前车保持必要的安全距离事件感知结果示例;

图15为路面异常停车事件感知结果示例;

图16为行人上高架或高速事件感知结果示例;

图17为货车上高架事件感知结果示例;

图18为车辆右转或高速下匝道未打转向灯事件感知结果示例。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。

如图1所示,所述的一种基于边云融合的在线交通事件感知系统由边缘端视频设备、光纤、云端视频存储平台、千兆网线、千兆路由器和云端分析服务器构成,边缘端视频设备通过光纤与云端视频存储平台连接,云端视频存储平台通过千兆网线与千兆路由器相连,同时边缘端视频设备通过光纤与千兆路由器相连,千兆路由器通过千兆网线与云端分析服务器相连;云端视频存储平台实时记录边缘端视频设备采集的交通图像;云端分析服务器内置交通事件感知软件,用户可通过感知软件提供的接口选择功能选择从边缘端视频设备或云端视频存储平台获取实时交通图像,交通事件感知软件提供初始化、码流获取线程和分析线程实现包括车辆压线行驶、车辆闯红灯、车辆不按导向行驶事件、车辆在斑马线前未礼让行人、车辆逆向行驶、车辆非法占用公交车道、车辆非法占用非机动车道、车辆违法掉头、信号灯故障、路口溢出、车辆非法越线停车、车辆不按规定与前车保持必要的安全距离、路面异常停车、非机动车占用机动车道、行人上高架或高速、货车上高架和车辆右转或高速下匝时未打右转向灯在内的多种事件感知功能;

所述的交通事件感知软件的初始化实现步骤如下:

步骤1:定义集合及变量,具体为:

(a)交通事件集合vtype={cross,run_red_light,no_guidance,ped,converse,cover_bus_lane,cover_non_vehicle_lane,iilegal_turn,light,overflow,over_line,follow_close,abnormal_stop,non_vehicle_cover_lane,ped_on_road,truck_on_elevated_road,no_right_light_on,none},cross表示车辆压线行驶事件,run_red_light表示车辆闯红灯事件,no_guidance表示车辆不按导向行驶事件,ped表示车辆在斑马线前未礼让行人事件,converse表示车辆逆向行驶事件,cover_bus_lane表示车辆非法占用公交车道事件,cover_non_vehicle_lane表示车辆非法占用非机动车道事件,iilegal_turn表示车辆违法掉头事件,light表示信号灯故障事件,overflow表示路口溢出事件,over_line表示车辆非法越线停车事件,follow_close表示车辆不按规定与前车保持必要的安全距离事件,abnormal_stop表示路面异常停车事件,non_vehicle_cover_lane表示非机动车占用机动车道事件,ped_on_road表示行人上高架或高速事件,truck_on_elevated_road表示货车上高架事件,no_right_light_on表示车辆右转或高速下匝时未打右转向灯事件,none表示无交通事件;

(b)信号灯状态集合lstate={green,yellow,red},green表示信号灯为绿灯,yellow表示信号灯为黄灯,red表示信号灯为红灯;

(c)车道属性集合lproperty={left,left_direct,direct,right,right_direct,none_light},left表示左转车道,left_direct表示左转直行车道,direct表示直行车道,right表示右转车道,right_direct表示右转直行道,none_light表示不限制车道;

(d)车道类型集合lanetype={bus_lane,vehicle_lane,non_vehicle_lane},bus_lane表示公交车道,vehicle_lane表示机动车道,non_vehicle_lane表示非机动车道;

(e)车辆跟踪消失方向集合disappear={left_disa,right_disa,direct_disa,edge_disa,none_disa},left_disa表示车辆消失在图像左边,right_disa表示车辆消失在图像右边,direct_disa表示车辆消失在直行方向,edge_disa表示车辆消失在图像边界,none_disa表示车辆未消失;

(f)行人行进方向集合ped_direct={no_direction,left_right,right_left},init表示无方向,left_right表示行人从左向右,right_left表示行人从右向左;

(g)车型集合vehicletype={car,bus,truck,motor,bicycle,tricycle},car表示普通家用汽车,bus表示大巴车,truck表示货车,motor表示摩托车,bicycle表示自行车,tricycle表示三轮车;

(h)行人跟踪集合表示为p={<pj=<pxj,pyj,pwj,phj>,pdj>|j=1,2,…,m},pj表示第j个行人的包络框,(pxj,pyj)表示左上角的坐标,pwj和phj分别表示pj的宽度和高度,pdj表示第j个行人的行进方向,pdj∈ped_direct,m表示集合p中的行人数量;

(i)车辆跟踪集合表示为c={<ci=<cxi,cyi,cwi,chi>,c1i=<c1xi,c1yi,c1wi,c1hi>,c2i=<c2xi,c2yi,c2wi,c2hi>,c3i=<c3xi,c3yi,c3wi,c3hi>,lanei,lpropi,light1i,light2i,light3i,t1i,t2i,t3i,csi,ci1i,ci2i,ci3i,vti,cti,rti,tni,di>|i=1,2,…,n},n表示集合c中的车辆数量,ci表示第i辆车当前的包络矩形框,(cxi,cyi)表示ci左上角的坐标,cwi和chi分别表示ci的宽和高,c1i表示在t1i时刻获取到的第i辆车的包络矩形框,(c1xi,c1yi)表示c1i左上角的坐标,c1wi和c1hi分别表示c1i的宽和高,light1i表示对应于车道号lanei在t1i时刻的信号灯状态,ci1i表示在t1i时刻的完整图像,c2i表示在t2i时刻获取到的第i车辆的包络矩形框,(c2xi,c2yi)表示c2i左上角的坐标,c2wi和c2hi分别表示c2i的宽和高,light2i表示对应于车道号lanei在t2i时刻的信号灯状态,ci2i表示在t2i时刻的完整图像,c3i表示在t3i时刻获取到的第i车辆的包络矩形框,(c3xi,c3yi)表示c3i左上角的坐标,c3wi和c3hi分别表示c3i的宽和高,light3i表示对应于车道号lanei在t3i时刻的信号灯状态,ci3i表示在t3i时刻的完整图像,lanei表示车道号,lpropi表示车道属性,lpropi∈lproperty,light1i∈lstate,light2i∈lstate,light3i∈lstate,vti表示发生的交通事件,vti∈vtype,cti表示车型,cti∈vehicletype,rti表示右转向灯点亮的次数,tni表示第i辆车在整个视频中存在的帧数,di表示车辆跟踪的消失方向,di∈disappear,csi表示对应于c1i包络框从图像ci1i中截取的放大的车辆图像,csi与ci1i大小一样;

步骤2:系统初始化,启动分析线程,具体步骤为:

步骤2.1:从标定系统中读取每路相机参数,包括相机编码、相机ip地址、相机登录名、相机登录密码、相机登录端口、通道号;

步骤2.2:从标定系统中读取该路相机对应的信号灯集合l={<li,lri>|i=1,2,…,k},li∈lstate,lri=<lxi,lyi,lwi,lhi>表示对应于li在图像中的标定区域,(lxi,lyi)表示信号灯区域lri左上角的坐标,lwi和lhi分别表示信号灯区域lri的宽度和高度,k为该路相机画面中从左至右的信号灯数量;

步骤2.3:构建信号灯状态队列表示第t次采集到的第i个信号灯的状态,

步骤2.4:构建路口溢出车辆数量队列cq={qt|t=1,2,…},qt表示第t次检测到的车辆数;

步骤2.5:构建图像队列iq={<imr,tmr>|r=1,2,…},imr表示从边缘端视频设备或云端视频存储平台获取的第r幅图像,tmr表示获取imr时的时刻;

步骤2.6:从标定系统中读取该路相机对应的车道集合lane={<lidk,llsk,llek,lrsk,lrek,lpk,ltk>|k=1,2,…,e},lpk表示车道属性,lpk∈lproperty,lidk∈[1,k],lidk表示第k条车道对应的信号灯的序号,e表示车道数量,k表示车道号,ltk表示车道类型,ltk∈lanetype;初始化l中的所有li=green,第k条车道由左边车道线和右边车道线构成,左边车道线用表示,的两个端点分别由llsk和llek表示,右边车道线表示,两个端点分别由lrsk和lrek表示,(llsk.x,llsk.y)表示llsk的坐标,(llek.x,llek.y)表示llek的坐标,(lrsk.x,lrsk.y)表示lrsk的坐标,(lrek.x,lrek.y)表示lrek的坐标;

步骤2.7:初始化c和p为空集合;初始化lq为空队列;初始化cq为空队列;初始化iq为空队列;

步骤2.8:针对每路视频根据连接参数登录边缘端视频设备或云端视频存储平台,启动码流获取线程和分析线程;

所述的交通事件感知软件的码流获取线程,具体步骤如下:

步骤3.1:根据用户对接口的选择,从边缘端视频设备或云端视频存储平台获取图像im,同时将图像获取的时刻记为tm;

步骤3.2:若|iq|<iqnum0,则将<im,tm>添加至iq队列中;其中,|.|表示获取集合或队列的元素个数;iqnum0表示iq允许的最大元素个数;在本实施例中,iqnum0=50;

步骤3.3:转步骤3.1;

所述的一种基于在线分析的交通视频结构化及事件感知系统,其特征在于,所述的交通事件感知软件的分析线程,具体步骤如下:

步骤4.1:若|iq|<2,则等待100毫秒,转步骤4.1;否则,从iq的队首取出一个元素,并将取出的元素的图像记为i,取出的元素的时刻为记为time,同时将i的宽度记为width,高度记为height;

步骤4.2:若信号灯集合l非空,则检测信号灯状态,并更新集合l,具体为:针对每个信号灯区域lri,令lrgi=<lrgxi,lrgyi,lrgwi,lrghi>表示绿灯兴趣区域,(lrgxi,lrgyi)表示区域lrgi左上角的坐标,lrgwi和lrghi分别表示区域lrgi的宽度和高度,lrri=<lrrxi,lrryi,lrrwi,lrrhi>表示红灯兴趣区域,(lrrxi,lrryi)表示区域lrri左上角的坐标,lrrwi和lrrhi分别表示区域lrri的宽度和高度;若lhi>1.5*lwi,则分别根据式(4-1)和(4-2)计算lrgi和lrri;否则,分别根据式(4-3)和(4-4)计算lrgi和lrri;根据式(4-5)更新li;

其中,bgrr表示对应于区域lrri的子图像的三通道平均灰度值,bgrr.r表示bgrr的红色分量值,bgrg表示对应于区域lrgi的子图像的三通道平均灰度值,bgrg.r、bgrg.g和bgrg.b分别表示bgrg的红色、绿色和蓝色分量值,red_threshold表示红灯判断阈值,red_threshold∈[100,255],green_threshold表示绿灯判断阈值,green_threshold∈[100,255];在本实施例中,red_threshold=120,green_threshold=100;red_threshold和green_threshold=100值越大,信号灯状态误检越少,但漏检为增多,可根据实际场景、边缘端视频设备的品质调整到一个合适的值;

步骤4.3:设标定的目标检测区域为cr,cr对应的彩色图像为ci,对ci进行背景建模,并进行形态学操作,然后进行二值化,得到目标检测区域二值图像bi,若bi的平均灰度值为0,则转步骤4.7;

步骤4.4:进行行人检测,具体方法为:搜索bi中的连通区域,对每个连通区域,若其宽高比大于等于行人宽高比阈值whp0,则采用机器学习方法对该连通区域进行行人检测,若检测到行人,将检测到的行人换算到图像i坐标下的包络框记为np=<npx,npy,npw,nph>,(npx,npy)表示包络框np左上角的坐标,npw表示包络框np的宽度,nph表示包络框np的高度;若np满足式(4-6),则将<np,no_direction>添加到集合p中;

其中,sp表示np与pj的交集框,∩表示求交集,sp.w表示sp的宽度,sp.h表示sp的高度,ap0表示行人面积比值的阈值,wp0表示行人宽度比值的阈值,hp0表示行人高度比值的阈值;在实施例中,whp0=0.5,ap0=0.25,wp0=0.5,hp0=0.5;

作为可选的,进行行人检测时,还可以采用如下方法:采用轻量级卷积神经网络模型直接对目标检测区域cr进行行人检测,假设对检测到的每个行人换算到图像i坐标下的包络框仍表示为np=<npx,npy,npw,nph>,若np满足式(4-6),将<np,no_direction>添加到集合p中;

步骤4.5:进行车辆检测,具体为:设置临时变量num=0;搜索bi中的连通区域,对每个连通区域,若其宽高比大于或等于车辆宽高比阈值whc0,则采用机器学习方法对该连通区域进行车辆检测,若检测到车辆,则设置num=num+1,并将检测到的车辆换算到图像i坐标下的包络框记为nc=<ncx,ncy,ncw,nch>,同时将检测到的车辆类型记为type,type∈vehicletype,(ncx,ncy)表示包络框nc左上角的坐标,ncw表示包络框nc的宽度,nch表示包络框nc的高度;根据nc计算所在的车道号并用变量g表示,g满足式(4-7);根据g从集合lane中找到第g条车道对应的车道属性lpg;根据g从集合lane中找到对应的信号灯编号为lidg,再根据lidg从集合l中找到第lidg个信号灯状态若nc满足式(4-8),则将<nc,nc,empty,empty,g,lpg,green,green,time,0,0,cs,i,null,null,none,type,0,0,none_disa>添加到集合c中;

其中,sc表示nc与ci的交集框,a(.)表示面积计算公式,sc.w表示sc的宽度,sc.h表示sc的高度,ac0表示车辆面积比值的阈值,ac0∈[0.2,0.4],wc0表示车辆宽度比值的阈值,wc0∈[0.3,0.6],hc0表示车辆高度比值的阈值,hc0∈[0.3,0.6],cs表示根据包络框nc从i截取车辆图像并放大到与i一样大小的图像,empty表示<0,0,0,0>,null表示空图像;

作为可选的,进行车辆检测时,还可以采用如下方法:采用轻量级卷积神经网络模型直接对目标检测区域cr进行车辆检测,假设对检测到的每辆车换算到图像i坐标下的包络框仍表示为nc=<ncx,ncy,ncw,nch>,同时将检测到的车辆类型记为type,type∈vehicletype;根据nc计算所在的车道号并用变量g表示,g满足式(4-7);根据g从集合lane中找到第g条车道对应的车道属性lpg;根据g从集合lane中找到对应的信号灯编号为lidg,再根据lidg从集合l中找到第lidg个信号灯状态若nc满足式(4-8),则将<nc,nc,empty,empty,g,lpg,green,green,time,0,0,cs,i,null,null,none,type,0,0,none_disa>添加到集合c中;

在本实施例中,ac0=0.25,wc0=0.5,hc0=0.5;

步骤4.6:若目标检测区域cr为十字路口,若|cq|≥q0,则将队列cq中的队首记录删除;将num添加到队列cq的队尾,其中,|.|表示求元素个数,q0表示队列cq允许的最大元素个数;在本实施例中,考虑到通常的视频帧率为25fps,信号灯按60秒计算,设置q0=25*60=150;

步骤4.7:对c中的每辆车进行交通事件感知,具体为:

步骤4.7.1:采用跟踪算法对c中第i辆车进行跟踪,i=1,2,…,n,得到新的第i辆车的包络框ci;根据式(4-9)设置vti;设置tni=tni+1;若lpropi=right,则采用轻量级深度卷积神经网络模型检测第i辆车的右转向灯是否点亮,若检测到点亮的右转向灯,则设置rti=rti+1;

其中,cd0表示逆向行驶的最小距离阈值;在本实施例中,cd0通过标定进行设置,如图?所示的逆向行驶的最小距离标定线的长度即为cd0的值;

步骤4.7.2:采用跟踪算法对p中任意第j个行人进行跟踪,并设跟踪到的第j个行人换算到图像i的坐标下的包络框为p′j=<px′j,py′j,pw′j,ph′j>,并根据式(4-10)设置pdj,然后设置pj=p′j;其中,(px′j,py′j)表示p′j左上角的坐标,pw′j和ph′j分别表示p′j的宽和高;

其中,pd0表示行人移动位移的最小阈值;在本实施例中,pd0通过标定进行设置,如图3所示的行人移动位移的最小阈值标定线的长度即为pd0的值;

步骤4.7.3:若c2i=empty且cyi>y0,定义线段lsi,令lsi的起点和终点坐标分别为(lsbxi,lsbyi)和(lsexi,lseyi),它们根据式(4-11)计算,若存在车道线与lsi相交,则设置c2i=ci,ci2i=i,vti=cross,t2i=time;

其中,α表示违法压线事件感知调整系数,α∈{1,2,3,4,5},y0表示红灯停止线的纵坐标;在本实施例中,α表示=3,y0根据标定进行设置,如图2所示的红灯停止线的平均纵坐标即为y0的值;

步骤4.7.4:根据lanei从集合lane中找到对应的信号灯编号为设置临时变量再根据tmp从集合l中找到第tmp个信号灯的状态ltmp;然后按如下步骤执行:

步骤4.7.4.1:若c2i=empty且(cyi+chi)<y0,则设置c2i=ci,ci2i=i,light2i=ltmp,t2i=time,若满足式(4-12),则设置vti=ped,转步骤4.1;若c2i≠empty且c3i=empty且vti=ped,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

其中,表示存在一个整数r;

步骤4.7.4.2:若c2i≠empty且c3i=empty且(cyi+chi)<yd0,则设置c3i=ci,ci3i=i,light3i=ltmp,t3i=time,di=direct_disa,yd0表示跟踪直行车辆的极限纵坐标,转步骤4.1;在本实施例中,yd0通过标定进行设置,如图2所示的直行跟踪停止线两个端点纵坐标平均值即为yd0;

步骤4.7.4.3:若c2i≠empty且c3i=empty且(cxi+cwi)<xl0,则令c3i=ci,ci3i=i,light3i=ltmp,light3i=ltmp,t3i=time,di=left_disa,xl0表示跟踪左转弯车辆的极限横坐标,转步骤4.1;在本实施例中,xl0通过标定进行设置,如图2所示的左转跟踪停止线两个端点横坐标平均值即为xl0;

步骤4.7.4.4:若c2i≠empty且c3i=empty且cxi>xr0,xr0表示跟踪右转弯车辆的极限横坐标,则设置c3i=ci,ci3i=i,light3i=ltmp,t3i=time,di=right_disa,转步骤4.1;在本实施例中,xr0通过标定进行设置,如图2所示的右转跟踪停止线两个端点横坐标平均值即为xr0;

步骤4.7.4.5:若c2i≠empty且c3i=empty且(cxi≤0||cyi≤0||(cxi+cwi)≥width||(cyi+chi)≥height),则设置c3i=ci,ci3i=i,light3i=ltmp,t3i=time,di=edge_disa,转步骤4.1;

步骤4.7.4.6:若c2i=empty且vti=converse,则设置c2i=ci,ci2i=i,t2i=time,转步骤4.1;若c2i≠empty且c3i=empty且vti=converse,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

步骤4.7.4.7:若c2i=empty且从集合lane中找到第lanei条车道对应的车道类型则设置c2i=ci,ci2i=i,t2i=time,vti=cover_bus_lane,转步骤4.1;若c2i≠empty且c3i=empty且vti=cover_bus_lane,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

步骤4.7.4.8:若c2i=empty且从集合lane中找到第lanei条车道对应的车道类型则设置c2i=ci,ci2i=i,t2i=time,vti=cover_non_vehicle_lane,转步骤4.1;若c2i≠empty且c3i=empty且vti=cover_non_vehicle_lane,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

步骤4.7.4.9:若c2i≠empty且c3i=empty且(cyi+chi)>yd0且满足式(4-13),则设置c3i=ci,ci3i=i,t3=time,vti=over_line,转步骤4.1;

其中,osc0表示越线停车时车辆包络框面积相交的比例阈值,osc0∈[0.5,1.0],ot0表示越线停车时停留的时间阈值,单位为秒;在本实施例中,osc0=0.8,ot0=60;

步骤4.7.4.10:若本系统部署在高速上,若c2i=empty且cyi>yd0且满足式(4-14),则设置c2i=ci,ci2i=i,t2i=time,vti=follow_close,转步骤4.1;若c2i≠empty且c3i=empty且vti=follow_close,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

其中,dist表示高速上标定的跟车距离阈值;在本实施例中,dist根据标定进行设置,如图4所示的跟车最小距离标定线的长度即为dist值;

步骤4.7.4.11:若c2i≠empty且c3i=empty且满足式(4-15),则设置c3i=ci,ci3i=i,t3i=time,vti=abnormal_stop,转步骤4.1;

其中,sa0表示路面异常停车时车辆包络框面积相交的比例阈值,sa0∈[0.5,1.0],st0表示路面异常停车时停留的时间阈值,单位为秒;在本实施例中,sa0=0.8,st0=300;

步骤4.7.4.12:若c2i=empty且(cti=motor||cti=bicycle||cti=tricycle)且从集合lane中找到第lanei条车道对应的车道类型不等于non_vehicle_lane,则设置c2i=ci,ci2i=i,t2i=time,vti=non_vehicle_cover_lane,转步骤4.1;若c2i≠empty且c3i=empty且vti=non_vehicle_cover_lane,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

步骤4.7.4.13:若系统部署于高架的监控场景且c2i=empty且cti=truck,则设置c2i=ci,ci2i=i,t2i=time,vti=truck_on_elevated_road,转步骤4.1;若c2i≠empty且c3i=empty且vti=truck_on_elevated_road,则设置c3i=ci,ci3i=i,t3i=time,转步骤4.1;

步骤4.7.5:针对行人集合p中的每个行人,若其中心点已经超出目标检测区域cr的范围,则将其从集合p中移除;

步骤4.7.6:根据不同情况实现交通事件感知,具体为:

1)车辆压线行驶事件感知:若c2i≠empty且vti=cross,则设置c3i=ci,ci3i=i,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;在本实施例中,图5为车辆压线行驶事件感知结果示例;

2)车辆闯红灯事件感知:若c2i≠empty且c3i≠empty且vti=none且满足式(4-16),设置vti=run_red_light,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;在本实施例中,图6为车辆闯红灯事件感知结果示例;

lpropi≠none_light&&light1i=red&&light2i=red&&light3i=red(4-16)

3)车辆不按导向行驶事件感知:若c2i≠empty且c3i≠empty且vti=none且满足式(4-17),设置vti=no_guidance,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;在本实施例中,图7为车辆不按导向行驶事件感知结果示例;

4)车辆在斑马线前未礼让行人事件感知:若c2i≠empty且c3i≠empty且vti=ped,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;在本实施例中,图8为车辆在斑马线前未礼让行人事件感知结果示例;

5)车辆逆向行驶事件感知:若c2i≠empty且c3i≠empty且vti=converse,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;在本实施例中,图9为车辆逆向行驶事件感知结果示例;

6)车辆非法占用公交车道事件感知:若c2i≠empty且c3i≠empty且vti=cover_bus_lane,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;在本实施例中,图10为车辆非法占用公交车道事件感知结果示例;

7)车辆非法占用非机动车道事件感知:若c2i≠empty且c3i≠empty且vti=cover_non_vehicle_lane,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;在本实施例中,图11为车辆非法占用非机动车道事件感知结果示例;

8)车辆违法掉头事件感知:若c2i≠empty且c3i≠empty且di=edge_disa且((c1yi>c2yi&&c3yi>c2yi)||(c1yi<c2yi&&c3yi<c2yi)),设置vti=iilegal_turn,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;在本实施例中,图12为车辆违法掉头事件感知结果示例;9)信号灯故障事件感知:若|lq|≥t0,则将队列lq中的队首记录删除;将<l1,l2,…,lk>添加到队列lq的队尾,其中,|.|表示求元素个数,t0表示队列lq允许的最大元素个数;对信号灯状态进行判断,若第q个信号灯状态满足式(4-18),则说明第q个信号灯存在故障,则保存图像i,并在该图像标记信号灯故障light;在本实施例中,视频帧率为25fps,信号灯切换时间按120秒计算,t0=25*120=300,图13为信号灯故障事件感知示意图;

10)路口溢出事件感知:若目标检测区域cr为十字路口且满足式(4-19),则说明十字路口存在交通溢出事件,保存图像i,并在该图像标记路口溢出事件overflow;其中,of表示路口溢出的阈值;在本实施例中,of=30;

11)车辆非法越线停车事件感知:若c2i≠empty且c3i≠empty且vti=over_line,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

12)车辆不按规定与前车保持必要的安全距离事件感知:若c2i≠empty且c3i≠empty且vti=follow_close,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;在本实施例中,图14为车辆不按规定与前车保持必要的安全距离事件感知结果示例;

13)路面异常停车事件感知:若c2i≠empty且c3i≠empty且vti=abnormal_stop,将图像ci1i和ci2i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;在本实施例中,图15为路面异常停车事件感知结果示例;

14)非机动车占用机动车道事件感知:若c2i≠empty且c3i≠empty且vti=non_vehicle_cover_lane,将图像csi,ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;

15)行人上高架或高速事件感知:若系统部署于高架、高速路的监控场景,若|p|>0,则将行人上高架或高速ped_on_road事件类型标记在图像i中并进行保存,清空p,转步骤4.1;在本实施例中,图16为行人上高架或高速事件感知结果示例;16)货车上高架事件感知:若系统部署于高架的监控场景,且c2i≠empty且c3i≠empty且vti=truck_on_elevated_road,则将图像ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤4.1;在本实施例中,图17为货车上高架事件感知结果示例;

17)车辆右转或高速下匝道未打转向灯事件感知:若c2i≠empty且c3i≠empty且di=right_disa且满足式(4-20),则设置vti=no_right_light_on,将图像ci1i,ci2i和ci3i拼成一幅图像,同时将vti表示的事件类型标记在该图像中并保存,然后将第i辆车从c中移除,转步骤3.1;

其中,tn0表示未打转向灯的占比阈值,0≤tn0≤0.5;在本实施例中,tn0=0.2,图18为车辆右转或高速下匝道未打转向灯事件感知结果示例。

以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。

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