汽车超载监测系统-精选文档

汽车超载监测系统

Monitoring system for overload vehicles

JIANG Shi?ming, XU Wei, WU Zhi?liang, LIN Shu?xiong (School of Physics & Electronic Engineering,Guangzhou University, Guangzhou 510006, China): This system based on the open source computer vision library (OpenCV) is used to execute the real?time identification of overloading vehicles with different vehicle models. A vehicle model classifier is established according to the vehicle photo library, and then the vehicles entering the monitored area are recorded by a digital camera. The vehicle models are identified in video recognition by the classifier. The rated load of a vehicle model is obtained by querying the database, and then the actual load of the vehicle running across the monitoring area is measured by the dynamic weighing technology for judging if the vehicle is overloaded immediately. This approach can avoid the demerit of the previous one that uses the unified weight to estimate whether vehicles with different models are overloaded or not. In addition, it can also avoid the coil measurement of speed. Testing

results show that the system can quickly and accurately identify a vehicle model, and can promptly determine whether the vehicle is overloaded by means of dynamic weighing system. It has considerable practical value for road maintenance and road traffic safety.

Keywords: overload monitoring; video identification;OpenCV; dynamic weighing

超载车辆的危害很大,主要表现在加速道路损坏和危害道路交通安全,人们都深知其危害性,所以治理超载一直是公路监管部门的工作重点。传统的自动超载信息系统都是使用统一标准,对所有车辆都应用同一个整车重量划分是否超载,这样会遗漏部分实际上已经超过该车型核载的超载车辆。实际上,这部分车辆对道路交通同样造成严重影响。鉴于此,本系统首先识别出车辆的车型,再查询得到该车型的核载重量,对比实测重量,便得知是否超载。理论上能够适用于所有车型。

利用摄像机较长的视域,附加设计了一个测速系统,能方便地得出超速数据,以便作为超速监测和供给动态称重系统作参考。

1 系统构成

1.1 系统方案

系统主要工作过程为:车辆驶入摄像机监视范围,视频流通过以太网传输到后台处理系统,处理系统通过处理视频识别出车

辆的车型,然后根据车型从数据库中查出相应的核载重量;同时,安装在地面的动态称重设备测出车辆的实际载重。两个数据对比即可得出车辆是否超载。系统流程如图1所示。

为了加快处理速率,在程序设计过程中多处使用了多线程并行处理。

1.2 OpenCV及其分类器介绍

传统的图像处理软件大多为Matlab,用于开发算法最为快捷,但是其处理速度慢,难以跟上视频处理的需求,所以选用了Intel牵头开发的开源计算机视觉库(OpenCV)。新版的OpenCV 已经在易用性上已经接近Matlab,再加上其开源性,很多算法均已公开,加快了开发进程。另外,目前OpenCV已经提供C,C++,Python等语言接口,且支持Windows,Linux,Android和IOS等主流平台,资源相当丰富。对于计算机平台,OpenCV支持多线程并行计算和图形处理器(GPU)计算,这将能大大加快计算速率,用其开发本系统的demo是首选。

图1 系统流程图

为了从视频流中识别出车型,需要使用分类器[1]。所谓分类器,是利用样本的特征进行训练,得到一个级联分类器。分类器训练完成后,就可以应用于目标检测。分类器的级联是指最终的分类器是有几个简单分类器级联组成。每个特定的分类器所使用的特征用形状、感兴趣区域中的位置以及比例系数来定义(如图2所示)。

图2 特征分类

首先使用弱分类器分出货车和客车等车型,然后再分出大中小型货车,最后再精确分类,获得准确的车型。新版本的OpenCV 已经支持多种特征的分类器,如SVM,LBP,PBM等。因为系统实时性要求较高,这里选取训练和分类速率都较高的LBP特征分类器。

1.3 训练分类器

使用分类器的需要首先训练,即让分类器“认识”目标,为了训练分类器,需要准备样本,样本包括正样本和负样本。正样本即包含目标的灰度图片,而且每张图片都要归一化大小,负样本则不要求归一化,只需要比正样本大即可(使得可以在负样本中滑动窗口检索)。

OpenCV提供了专门的工具opencv_createsample.exe用以整理训练样本的原始数据,只需准备好正、负样本,归一化然后转成灰度图,再使用两个描述文件分别记录这些样本集合,然后输入opencv_createsample.exe程序即可整理出原始数据。为了准备正样本,借助OpenCV提供的HighGUI模块,在此专门编写了一个GUI截图工具,界面如图3所示。为了能从不同角度识别车辆,准本正样本时需要准备从一定角度范围描述车辆的样本。

图3 GUI截图工具界面

接下来就是训练分类器,这部分工作直接关系到系统的鲁棒性。同样,OpenCV提供了专门工具训练分类器,既有旧版也有

新版,为了有更多特性,在此选择新版本的训练程序

opencv_traincascades.exe。

由于这是基于统计的方法,要对大量数据进行处理,如果选择Haar特性,训练周期会比较长,不利于系统的搭建,所以选择用LBP特性训练分类器。从机器性能方面考虑训练时间,使用英特尔线程构建模块(TBB)重新编译OpenCV,就能得到多核加速,且有利于接下来的程序性能。分类器分为三级,分别为:货车、客车分类器,大、中、小型货车分类器和具体车型分类器。由于客车按载客数区分是否超载,车辆总重不会对公路造成严重损坏,所以本系统无需对客车作出具体车型区分。但若然具体管理部门需要统计车型信息,可以进一步加上客车车型分类器。实际使用时,由于要应对车辆车身的喷漆变化或者小范围合法改装等情况,分类器的分类除了在系统筹建的时候大规模训练外,在系统运行时也应继续训练分类器,增加统计数据,使得识别结果更加精确。

1.4 识别车型及获得核定载重

训练好分类器后,最直观的测试方法是直接输入测试视频,检查识别效果。新版本OpenCV提供一个C++类CascadeClassifier,该类封装了基本的目标识别操作,使得只需要使用该类的实例加载训练好的XML文件,然后逐帧检测即可。若发现目标,结果将会存放在C++标准模板库(STL)容器vector中。但直接对每帧图像使用CascadeClassifier::

detectMultiScale方法将会大大加重系统的工作量并且在多车辆的情况下无法区分开各车辆,为此,首先需要发现车辆,然后区分不同的车辆目标,再对每一个目标单独进行分类识别。

具体的主要操作的顺序为:

(1)系列的图像预处理操作,降低图像噪音。

(2)图像差分,发现车辆轮廓[2],得到运动掩码。图像差分有两种主要方式,分别是帧间差分和背景差分。帧间差分速度快,但容易产生空洞,且无法分离出缓慢运动的车辆;背景差分速度慢,但分离效果好。考虑到如果车辆是缓慢进入测速区,则称重数据可靠性高,而且没有超速,进入识别点的效果好,所以选择帧间差分,这里使用能有效减小前景空洞的三帧差分算法[2]。

(3)结合运动掩码更新历史运动图像、计算历史运动图像的梯度。

(4)分割运动目标,得到一辆一辆的车,并跟踪。为区分开图像中的每一辆车,需要对其进行标记,这里使用的方法为:[Mkx,y=ID ifMk-1x,y≠0&k-1≠10 ifMk-1x,y=0 ]

式中:Mk(x,y)为分割出来的单独车辆目标的第k帧感兴趣区域矩形。这种方法虽然鲁棒性较好,但是因为重复计算量大,运算速度有限,所以在确定每辆车的ID后,使用OpenCV提供的更为快速的Camshift算法[3]继续跟踪。

(5)计算每辆车的运动方向。这部分关系到运动目标筛选,

在部分场合,摄像机的视野可能会涉及逆向车道。在这种情况下,可以通过筛选符合主要行驶方向的车辆来排除其他车辆或无关

运动目标的干扰。

(6)车辆进入测速区,开始测速。

(7)车辆离开测速区,结束测速并计算速度。使用TBB进行并行分类识别车型。由于OpenCV新版矩阵结构Mat的所有操作使用原子操作,大大减轻了多线程编程的工作量,所以这里使用多线程并行操作是最佳选择。

(8)根据所安装动态称重系统的车速要求,判断是否需要引导车辆到检测站进行检查。

1.5 获得实际载重

在视频分析中发现车辆后,对比动态测重模块中测得的实际载重。这里需要把应用场合分为两种情况:高速测重和低速测重,至于高低速的阀值,这根据不同动态称重系统的性能而定[4],在系统安装时根据动态称重系统参数设置即可。由于目前高速测重技术的精度未达到作为证据的要求,所以在高速测重的场合,所得车重数据只能作为初步判断,若初步发现车辆超载,需要进一步引导车辆到大型地磅再次静态测量,并作其他处理。在低速测重场合,测得的动态数据可靠,可直接作为证据使用。所以系统的运行需要测速模块的配合。无论高速场合与低速场合,本系统都能实现视频测速功能,可以直接用作超速抓拍系统,降低了公路部门的重复投入成本。

1.6 测速方法

测速测量车辆通过测速区所用的时间,然后用测速区长度除以时间而粗略估计得到。考虑到摄像机视域限制,设定的测速区域并不长,只有20 m左右,而且速度是用于参考载重信息是否有效的,所以无需太精确,因而可认为车辆是直线经过测速区域的。测速区的长度需在系统安装时手工进行长度映射。另外,确定通过测速区域的时间差使用帧率和帧计数得出,这样在多线程处理的情况下,可以排除系统时钟和处理速率的干扰,得出准确时间差。

2 测量结果

为快速测试系统性能,直接使用测试视频替代摄像机输入。使用微软Visual Studio 2010 MFC + OpenCV 2.44 编写一个即时处理程序,界面如图4所示。

图4 运行在Windows平台上的系统

测试使用一台Intel Core i5M处理器(主频2.3 GHz+智能变频技术)、6 GB内存、操作系统为Windows 7 64 b的普通笔记本计算机,测试代码尚未使用图形处理器(GPU)计算,但代码在识别部分应用了TBB进行多核并行加速计算。

测试视频共两段,分别在两个不同的场景拍摄,第一段只有一辆公交车,场景较为简单;第二段则是多车多人环境,并且有车辆并行的情况,场景较为复杂,干扰较多。

第一段视频主要用于测试系统的极限性能,在测试开始前,

先用转码工具把同一段视频转成不同帧率和分辨率的几段视频,其中视频的宽高比不变。输入视频测试后的结果如表1所示。

视频原始长度为6 s,双斜线为该场景的称重和测速区域。

测试结果表明:系统能实时处理标清视频流,但对高清视频还需进一步优化。

第二段视频主要测试系统的车型识别能力,测试数据如图5所示。

表1 输入视频测试后结果

图5 多车并行时能够准确区分

第二段视频夹杂较多无关目标,如行人、抖动的树枝横向行驶的车辆等,其中双白线之间区域为本场景的称重测速区域。

通过测试,可以看出无关目标能被全部排除,体现了车辆筛选很好的鲁棒性。视频中共通过9辆汽车,所有车辆均本正确识别车型。

3 结语

通过测试数据可以看出,本系统提出的车型识别算法能适应不同场景和一定的环境变化,具有较高的效率和鲁棒性。随着计算机及其他数字信号处理(DSP)设备的信息处理能力不断提高,应用实时视频处理技术促进智能交通的能力将更大更稳定。若本系统能真正应用在智能交通系统上,有望对遏制道路超载超速现象做出贡献。

相关文档
最新文档