基于高位摄像头对路边车辆停车行为的检测方法与流程

文档序号:23715144发布日期:2021-01-24 05:21阅读:940来源:国知局
基于高位摄像头对路边车辆停车行为的检测方法与流程

[0001]
本发明涉及路边车辆停车识别领域,特别涉及一种基于高位摄像头对路边车辆停车行为的检测方法。


背景技术:

[0002]
随着车辆的增长,城市街道路边往往设置有很多停车位,目前停车收费主要采用人工方式,一段街道就需要一名收费员,光收费即需要耗费大量的人力资源。而目前仅基于图像信息进行城市街道路停车自动识别还不是很成熟,主要有以下两类:第一类是用yolo深度学习模型追踪视频中出现的车辆,当这辆车的在视频中的坐标和提前设置好的车位坐标在一定程度上重合之后,判断为车辆进入,同理判断车辆离开,采用该类方法,视频图像中的每帧图像均需要输入yolo深度学习模型进行识别,功耗特别高;第二类是依赖一些传统的图像处理算法,这类方法缺乏鲁棒性,不能解决现实场景中的很多复杂情况,街道行人走动,灯光变化,阳光变化,白天黑夜等等。
[0003]
目前,已有以车位为主导的停车情况判断方法,其关心在某个车位发生了什么,即根据车位上车辆和停车区域重叠度的变化情况决定停车位的状态,是空车位,还是有车正在停放,还是已经有车停放,而目前停车情况判断方法存在如下局限性:
[0004]
1、如果停车区域内有多辆车同时有进出场行为,状态机很难将这些行为都处理到,尤其是我们的高位摄像头使得我们的观测存在角度,一辆车在停车区域的运动经常会波及到多个车位,所以当有多辆车在停车区域运动时,每一个车位上车辆和车位区域出现的重叠度就会是由多辆车带来的,就很难将在不同时刻下产生的重叠度所对应的具体某辆运动的车找出来,也就无法对具体某一辆车进行分析。
[0005]
2.容错率低,后台业务逻辑纠错成本高,而且错误会累加、造成漏判和漏收费。如果车位状态处于已经有车停放状态,除非检测到车位有车离开,状态会变成空车位,否则不会发生变化,如果车位上的车离开时没有被检测到,停车位依然处于有车停放状态,当下一辆车进入停车位的时候就不会触发检测,导致这辆车被漏检测。上一辆车的判断失败影响到了下一辆车的停车判断,所以说错误会累加;后台业务逻辑在纠正收到算法端上传上来的停车信息的错误之后,还要下发一个指令去修改算法端控制的车位状态机状态,否则错误会累加,影响后续停车判断,所以说纠错成本高。


技术实现要素:

[0006]
本发明的目的是提供一种基于高位摄像头对路边车辆停车行为的检测方法,能够解决目前以车位为主导的停车情况判断方法的车辆检测不精确以及纠错成本高的问题。
[0007]
本发明解决其技术问题,采用的技术方案是:基于高位摄像头对路边车辆停车行为的检测方法,包括如下步骤:
[0008]
步骤1、定义高位摄像头视频画中的车位框,所述车位框用于表示停车区域;
[0009]
步骤2、对高位摄像头视频画面中的每一帧图像,判断是否有运动物体,若有,产生
运动框并跳转至步骤3,否则重复步骤2;
[0010]
步骤3、判断各个帧图像中的运动框与车位框是否重叠,若重叠,则判断运动框内包含的物体是否为车辆,若有车辆,则跳转至步骤4,否则忽略当前帧图像;若不重叠,则忽略当前帧图像;
[0011]
步骤4、获取该运动物体的真实轮廓,并利用追踪器获得该运动物体的运动轨迹;
[0012]
步骤5、计算该运动物体的真实轮廓与车位框的重合度,并利用所述重合度和所述运动轨迹判断车辆的行为。
[0013]
进一步的是,所述步骤1中的停车区域覆盖多个停车位。
[0014]
进一步的是,步骤2中,利用三帧差法运动检测方法判断是否有运动物体;
[0015]
步骤3中,利用yolov3深度学习模型判断该运动物体是否为车辆;
[0016]
步骤4中,该运动物体的真实轮廓来源于步骤3中的模型运行结果。
[0017]
进一步的是,步骤2中,所述利用三帧差法运动检测方法判断是否有运动物体,其具体包括如下步骤:
[0018]
步骤201、保存当前帧图像的前两帧历史图像;
[0019]
步骤202、将当前帧图像与上一帧历史图像做对比,计算两帧间的区别,若区别小于预设阈值,则判断出当前帧图像中不存在运动物体,不产生运动框,并跳转至步骤203,若区别大于等于预设阈值,则判断当前帧图像中具有运动物体,产生运动框,跳转至步骤3;
[0020]
步骤203、将当前帧图像与另外一帧历史图像做对比,计算两帧间的区别,若区别小于预设阈值,则判断出当前帧图像中不存在运动物体,不产生运动框,重复步骤2,若区别大于等于预设阈值,则判断当前帧图像中具有运动物体,产生运动框,跳转至步骤3。
[0021]
进一步的是,步骤5中,所述车辆的行为包括:车辆的运动行为和车辆行为的目的;
[0022]
所述车辆的运动行为包括进入和离开;
[0023]
所述车辆行为的目的包括停车、路过、终止停车和依然停车。
[0024]
进一步的是,进入行为的触发步骤为:
[0025]
依据追踪器提供的物体运动轨迹,获取当前帧图像中的车辆的当前和历史真实轮廓框,凭借这些轮廓框判断车辆是否有跨线行为以及跨线的方向,跨的线为轮廓框的上边线、左边线和下边线,跨线的方向为轮廓框的顶边进场、顶边离场、左边进场、左边离场、底边进场和底边离场;
[0026]
如果有检测到越线行为,并且越线方向为对应线的入场方向,则认为车辆有进入停车区域的行为,进而判断车辆行为的最终目的。
[0027]
进一步的是,所述进入行为的最终目的判断步骤如下:
[0028]
步骤401、判断当前帧图像中已触发进入行为的车辆是否还在运动,即是否还可以造成运动框的产生,如果车辆还在运动,下一帧继续判断,否则跳转至步骤402;
[0029]
步骤402、获取触发进入行为的这辆车的所有历史轮廓框信息,根据轮廓框计算出不同时刻下和车位区域的重叠度,计算出不同时刻下车辆底边所处车位区域的位置,通过观察计算出来的结果以及其变化趋势,判断车辆是停车还是路过。
[0030]
进一步的是,离开行为的触发步骤为:
[0031]
依据追踪器提供的物体运动轨迹,获取当前帧图像中的车辆的当前和历史真实轮廓框,凭借这些轮廓框判断车辆是否有跨线行为以及跨线的方向,跨的线为轮廓框的上边
线、左边线和下边线,跨线的方向为轮廓框的顶边进场、顶边离场、左边进场、左边离场、底边进场和底边离场;
[0032]
如果有检测到越线行为,并且越线方向为对应线的离场方向,则认为车辆有离开停车区域的行为,进而判断车辆行为的最终目的。
[0033]
进一步的是,所述离开行为的最终目的的判断步骤如下:
[0034]
步骤411、判断当前帧图像中已触发进入行为的车辆是否还在运动,即是否还可以造成运动框的产生,如果车辆还在运动,下一帧继续判断,否则,跳转至步骤412;
[0035]
步骤412、获取触发进入行为的这辆车的所有历史轮廓框信息,根据轮廓框计算出不同时刻下和车位区域的重叠度,计算出不同时刻下车辆底边所处车位区域的位置,通过观察计算出来的结果以及其变化趋势,判断车辆是终止停车还是依然停车。
[0036]
本发明的有益效果是,通过上述基于高位摄像头对路边车辆停车行为的检测方法,以车辆为主导对路边停车情况进行判断,考虑并解决了一些实际情况中城市街道路边停车的问题,比如说由于摄像头角度(不是鸟瞰视角)所带来的拍摄到的停车位车辆以及其车牌被遮挡很严重的问题,停车位容易有行人或者其他物体通过/逗留,有车辆利用停车位进行调头操作等情况,也避免了一天当中随着时间的变化,太阳光线照射,车位上阴影的变化所带来的影响。
[0037]
另外,本发明结合运动检测、物体检测和追踪器找出在停车区域附件运动的车辆,逐一分析这些车辆的运动行为以及意图,继续沿用了使用运动检测降低对物体检测的依赖,使整个算法更加的低功耗,高效率。并且,本发明在物体检测之后添加了追踪器,解决了现有方案中多辆车在停车区域运动时难以区分的问题。
附图说明
[0038]
图1为发明实施例中基于高位摄像头对路边车辆停车行为的检测方法的流程图;
[0039]
图2为本发明实施例中摄像头拍摄的视频画面中一帧图像的示意图;
[0040]
图3为本发明实施例中停车区域跨线检测的示意图。
具体实施方式
[0041]
下面结合附图及实施例,详细描述本发明的技术方案。
[0042]
本实施例提供一种基于高位摄像头对路边车辆停车行为的检测方法,该方法应用于装在路灯上的摄像头上,判断受摄像头监视的车位的停车状态,可以支持一个摄像头监控多个停车位,本实施例让一个摄像头监控2个车位。
[0043]
当系统启动时,每隔一秒(可自定义)或者是每隔一(fps*1秒)帧(可自定义),会采集图像进行运算,此刻的图片称之为当前帧,同时也会把当前帧存入长度为3的队列(queue)中。本实施例中重叠度阈值均设置为0.1。
[0044]
本实施例提供的方法,其流程图见图1,实际应用中,该方法包括如下步骤:
[0045]
步骤1:系统初始阶段读取摄像头对应车位框坐标,车位框代表了关心的停车区域,覆盖了2个车位。
[0046]
步骤2:利用三帧差法运动检测方法得到后续图像中是否有运动物体,若有,产生运动框并跳转至步骤3,否则重复步骤2(每获取一个新的当前帧均要进行步骤2的判断);
[0047]
三帧差法运动检测方法包括以下步骤:
[0048]
步骤2.1为了一定程度上避免一些因为车速低(前后两帧变化不大)而出现画不出矩形框的情况发生,保存当前帧图像的前两帧历史图像,即从当前帧所在队列中获取前两帧历史图像;
[0049]
步骤2.2将当前帧图像与上一帧历史图像做对比,计算两帧间的区别,若区别小于预设阈值,则判断出当前帧图像中不存在运动物体,不产生运动框,并跳转至步骤2.3;若区别不小于预设阈值,则判断当前帧图像中具有运动物体,产生运动框,跳转至步骤3;
[0050]
步骤2.3将当前帧图像与另一帧历史图像(前前帧图像)做对比,计算两帧间的区别,若区别小于预设阈值,则判断出当前帧图像中不存在运动物体,不产生运动框,重复步骤2;若区别不小于预设阈值,则判断当前帧图像中具有运动物体,产生运动框,跳转至步骤3。
[0051]
步骤3:判断各个帧图像中的运动框与车位框是否重叠,若重叠,则判断该运动框内包含的物体是否为车辆,若有车辆,则跳转至步骤4,否则忽略该帧图像;若不重叠,则也忽略该帧图像;
[0052]
由于yolov3深度学习模型会识别出整张图片中所有的物体,因此要配合运动框找到需要的那个运动物体的真实轮廓,筛除掉无关物体轮廓。帧差法运动检测所计算出来的运动框不准确,不准确体现在运动框有时候比真实轮廓大,有时比真实轮廓小。当比真实轮廓小的时候,运动框被包含于真实轮廓中,可以通过判别哪个物体的真实轮廓包含了这个运动框,从而获取真实轮廓;比真实轮廓大的时候,真实轮廓被包含于运动框中,通过哪个物体的真实轮廓被包含于这个运动框,从而获取真实轮廓,但是因为运动框过大,很容易包含其他无关车辆,比如别的停车位上的车位,马路上路过的其他车辆,所以需要进一步的筛选。
[0053]
进一步筛选方法为:利用追踪器,追踪器可以将不同的车辆区分开来,我们只需要对被包含的所有车辆逐一进行运动行为分析就可以,这样马路上路过的或者别的停车位上的车辆就不会影响有停车或者离开停车区域意向的车辆。
[0054]
步骤4:从步骤3中运行模型的结果中获取该运动物体的真实轮廓,利用追踪器获得该物体的运动轨迹,利用所述真实轮廓与车位框的重合度和所述运动轨迹判断车辆行为。
[0055]
这里,可通过tensorrt加速yolov3深度学习模型的推断,推断过程在边缘段的耗时也小于取帧时间间隔(每隔一秒取摄像头的一帧画面),具体耗时取决于边缘段用什么硬件,比如使用fpga加速处理时间更少,运行速度会更加的快。
[0056]
其中,通过计算出来的运动框,结合车位框对造成此运动框的物体的运动意图进行判断,运动行为/意图分为六种:进入、离开、停车、路过、终止停车和依然停车,我们将前两者划分为车辆的运动行为,后四者我们划分为车辆行为的意图;每一辆触发了进入和离开行为的车都会被判断其行为的意图。例如,a车在t1时刻触发了进入,b车在t2时刻触发了离开,a和b都会各自在未来某一时刻被判断其行为的意图,a车可能的意图有停车和路过,b车有可能的意图有终止停车和依然停车。
[0057]
进入行为的触发步骤为:
[0058]
依据追踪器提供的物体运动轨迹,获取当前帧图像中的车辆的当前和历史真实轮
廓框,凭借这些轮廓框判断车辆是否有跨线行为以及跨线的方向,跨的线为图3中所示的上边线,左边线,和下边线,跨线的方向为图3中所示的顶边进场,顶边离场,左边进场,左边离场,底边进场,和底边离场。如果有检测到越线行为,并且越线方向为对应线的入场方向,则认为车辆有进入停车区域的行为,进而判断车辆行为的最终目的是什么。比如,如果a车真实轮廓框的下底边在ti时刻处于图3所示车位框的下边线之下,在ti+1时刻移动到下边线之上的话,则认为a车以底边进场的方向跨过了下边线。
[0059]
离开行为的触发步骤为:
[0060]
依据追踪器提供的物体运动轨迹,获取当前帧图像中的车辆的当前和历史真实轮廓框,凭借这些轮廓框判断车辆是否有跨线行为以及跨线的方向,跨的线为图3中所示的上边线,左边线,和下边线,跨线的方向为图3中所示的顶边进场,顶边离场,左边进场,左边离场,底边进场,和底边离场。如果有检测到越线行为,并且越线方向为对应线的离场方向,则认为车辆有离开停车区域的行为,进而判断车辆行为的最终目的是什么。比如,如果a车真实轮廓框的下底边在ti时刻处于图3所示车位框的上边线边线之下,在ti+1时刻移动到上边线之上的话,则认为a车以顶边离场的方向跨过了上边线。
[0061]
进入行为的意图的分析步骤如下:
[0062]
步骤4.3.1判断当前帧图像中已触发进入行为的车辆是否还在运动,即是否还可以造成运动框的产生,如果车辆还在运动,下一帧继续判断;否则跳转至步骤4.3.2;
[0063]
步骤4.3.2获取触发进入行为的这辆车的所有历史轮廓框信息,根据轮廓框计算出不同时刻下和车位区域的重叠度,计算出不同时刻下车辆底边所处车位区域的位置。通过观察计算出来的结果以及其变化趋势,判断车辆是停车还是路过。
[0064]
其中停车和路过判断方法为:
[0065]
获取触发进入行为的这辆车的所有历史轮廓框信息,比如追踪器成功追踪到了5帧这辆车,根据这5次的轮廓框,计算出5个和停车区域的重叠度,计算出5个车辆下底边所处车位区域的位置。如果这5次的重叠度变化符合一辆驶入停车区域的车该有的趋势,即判断这5次中是否具有三个呈递增状态的重叠度(无需连续的三个数值,比如第123呈递增,第135呈递增,第125呈递增等等均可),并且如果车辆下底边也处于车位区域内(无需5次都在区域内,只要有从区域外变为区域内的变化趋势即可),则可以认为这辆车有停车的意图,可以进不一步的根据下底边位置分析出车辆具体停放在了哪一个车位上。否则则为路过。
[0066]
这里,轮廓框的坐标值是用四个数值表示的:最左、最上、最右和最下。最左最上定义了左上角坐标的xy值,最右最下定义了右下角坐标的xy值,重叠度的计算方式是用车辆轮廓框和停车区域有交叠的面积除以停车区域的面积。计算车辆所处车位区域的位置的话只需要最下的坐标,也就是汽车后轮的高度来进行判断,因为车的底边是受摄像头角度,车辆本身大小的区别影响最小的参考物。每一个车位框在高度上有一个范围,如果最下的值落在了其中一个车位框的范围内,就可以判断出这辆车是停在了哪一个车位上,由于本实施例中兼顾了2个停车位,如图2所示,银色汽车的底边落在了前面那个车位的范围内,被判定为停在了前面那个车位。那如果最下的值不属于任何车位的范围内,则可以判断车辆没有停车,认为是路过。
[0067]
本实施例中每个车位的范围阈值均设置为大于负0.3小于0.9,意为车辆真实轮廓的最下坐标数值和车位框底边的垂直距离d与车位框顶边和车位框底边的垂直距离,即车
位框高度l的比值。比值为正代表车辆的后轮位置处于车位区域内,比值为负意味着车辆的后轮位置超出了车位区域的底边,这一片区域也算作是车位框的范围内主要是考虑到了可能发生的停车不规范问题(压线)。
[0068]
由于摄像头具有角度,如图2所示,车位是一个梯形,需要先用透视变换(perspective transformation)将车位梯形恢复成矩形,再根据得到的变换矩阵(transformation matrix)算出车辆的真实轮廓坐标在矩形中的位置,也就是模拟摄像头没有角度的情况下看到的车位鸟瞰图,否则靠前车位的上底边到下底边的距离肯定是会比靠后车位的上底边到下底边的距离短的,这样对于车辆底边到各个车位的距离的判断是不准确的。
[0069]
离开行为的意图的分析步骤如下:
[0070]
步骤4.4.1判断当前帧图像中已触发进入行为的车辆是否还在运动,即是否还可以造成运动框的产生,如果车辆还在运动,下一帧继续判断;否则,跳转至步骤4.4.2;
[0071]
步骤4.4.2获取触发进入行为的这辆车的所有历史轮廓框信息,根据轮廓框计算出不同时刻下和车位区域的重叠度,计算出不同时刻下车辆底边所处车位区域的位置。通过观察计算出来的结果以及其变化趋势,判断车辆是终止停车还是依然停车。
[0072]
其中,终止停车和依然停车判断方法为:
[0073]
和停车和路过判断方法相似,如果5次的重叠度变化符合一辆离开停车区域的车该有的趋势,即判断这5次中是否具有三个呈递减状态的重叠度(无需连续的三个数值,比如第123呈递增,第135呈递增,第125呈递增等等均可),并且如果车辆下底边的位置趋向于朝远离停车区域的方向变化,则可以认为这辆车有终止停车的意图。否则则为依然停车。
[0074]
本实施例中,帧差法运动检测运算量小且速度快,可以提取运动目标的轮廓,但轮廓不精准,由于依赖运动物体和停车位重叠程度的变化判断是否为进出场运动,这一不精确特性对会产生很大影响。比如帧差法画出的马路上直行驶过的一辆车的轮廓会比这辆车真实的轮廓大很多,导致会和马路边的停车位造成重叠,这样重叠度队列中会产生不真实重叠度,导致误判;因此当帧差法运动检测得到的运动框与车位框有一定的重合之后,再采用yolov3模型获得物体的真实轮廓,利用真实轮廓计算出的重叠度,不仅不用将每一帧图像均送入yolov3模型进行识别,降低了整个方法的功耗,还极大的提高了重合度的准确率。
[0075]
本实施例通过帧差法运动检测,筛除掉一些相对于汽车面积更小的物体,比如树叶和行人;进一步使用yolov3模型,筛除掉所有非车物体,消除了所有非车物体对模型算法的影响;再将yolov3返回的车辆真实轮廓坐标与追踪器配合,消除掉与这次运动无关的车辆的影响。
[0076]
本实施例在确认车辆行为意图的阶段设置了时间阈值,一定程度上避免了车辆还没停稳时的提前判断所带来的车辆意图判断不准确和车位定位错误等,这样无论这辆车在车位区域做了什么,本实施例都可以忽略,只判断这辆车在停止运动之后是处于什么状态,比如停止运动是因为车停稳了还是离开了。若是停稳了,再判断具体停在哪个车位上。
[0077]
本实施例利用追踪器保留了车辆在运动过程中的多帧图像,其中包含了触发进入行为之前和触发离场行为之后的图片,可以用这些图像去搜索车牌,和停车区域重叠度低的时刻的车辆图片车牌不被遮挡的概率是很高的。
[0078]
由于摄像头有角度,一辆车的运动覆盖了多个车位的情况是很常见的,因此我们
只使用一个大框来代表停车区域,如图3所示,停车区域里面再具体划分车位框,如图2所示。如果画面中停车位区域附近有两辆车同时在移动或者一前一后运动,一辆车先动,另外一辆车紧接着做出了运动,交替进行,追踪器也可以将它们进行区分,不会造成误判。本实施例中使用的检测器为yolov3,追踪器为sort追踪算法,可以换用别的可能更好的检测/追踪器来获得更好的效果
[0079]
本实施例解决了丢帧现象,若分析时间超出了一秒,则会发生丢帧现象。因此本发明提升处理每一帧图片的速度,采用tensorrt和fpga进行模型的推断(inference)加速;创建一个buffer存储从摄像头返回的图片,按照一秒为时间间隔将摄像头的图片填充至buffer中,主程序直接从buffer中获取图片,当一张图片处理完毕后主程序会立刻从这个buffer中获取下一张图片来进行处理。假设当需要运行深度学习模型的时候处理一张图片所需要的时间是1.5秒,不需要运行的时候需要0.2秒,在需要模型的时候buffer的图片会堆积,但不需要运行的时候buffer就会被消耗,所以这个buffer不会处于一个永久增长的过程,也能有效的解决丢帧的问题。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1