基于OpenCV技术的视频车辆运动目标提取
2014-12-07唐练
唐练
(重庆市华驰交通科技有限公司,重庆 400060)
基于OpenCV技术的视频车辆运动目标提取
唐练
(重庆市华驰交通科技有限公司,重庆 400060)
本文使用Visual Studio 2008作为开发环境,并结合OpenCV提供的图像处理函数库,从开发者角度阐述了视频车辆运动目标提取的基本流程和实现方案。实验结果能够准确提取清晰的车辆轮廓图像,不仅为交通量统计提供可靠依据,也能提供公路的科学管理水平。
OpenCV 运动目标 交通检测
随着我国路网大规模建设与完善,智能交通系统(ITS)[1]也日益普及和迅速发展,并能有效提高路网通行能力和交通运输效率。实时采集交通信息(车流、车速、车型)是极其重要的一个环节,传统的检测技术包括磁频感应技术和波频(如红外、超声波、雷达)检测技术,但都存在工作寿命、可靠性等问题。近些年,结合图像处理和模式识别的视频交通检测技术[2]以检测范围大、灵活性强、检测精度高等优势被广泛研究与应用,对实现交通管理智能化具有重要意义。
在视频交通检测系统中,交通信息参数的获取依赖于车辆运动目标的识别与提取,本文从开发者实现角度,重点论述如何应用OpenCV技术有效检测与分割车辆运动目标,为最终数据获取提供根本的实现决策。
1 OpenCV技术与平台搭建
OpenCV是一个开源的计算机视觉库,最早由英特尔公司于1999年启动。它轻量级而且高效,包括500多个C/C++函数的跨平台的中、高层API,不依赖于其它的外部库。
本文的视频交通检测系统硬件平台由视频采集卡和嵌入式PC104主板组成,运行平台选用微软公司的Windows XP Embedded,开发环境采用Visual Studio 2008,并编译配置图像处理开源模块OpenCV。
交通视频可轻松通过调用采集卡配套的CGVideo库获取,开发者更专注于图像处理部分。每帧图像数据格式由OpenCV提供的IplImage结构表示,此结构作为车辆运动目标提取的基础数据,使用频率是非常高的。
图1 提取车辆运动目标基本流程
图2 基于虚拟检测线方法示意图
图3 原始图像
图4 背景图像
图5 车辆轮廓
2 车辆运动目标提取的基本流程与实现
车辆运动目标提取是整个系统核心,基本流程如图1所示。
(1)运动目标的背景提取。运动目标需要从多幅连续帧中实时将所在区域从背景(自然场景)中分割提取出来,即完成前景和背景的分离。本文通过自适应背景建模方法由当前帧不断加权更新背景帧,消除运动对象的随机扰动。当前帧和背景帧均为灰度图像,有效降低运算量。cvRunningAvg为OpenCv提供的更新移动平均的函数,并由参数alpha确定加权系数,表示占背景图像百分比。函数cvCvtColor用于图像颜色模型转换,即灰度化。
(2)背景差分。背景差分过程直接用当前帧的灰度图像减去背景图像,得到包含运动目标的差值图,调用OpenCv中的cvSub函数实现。
(3)差值图二值化。二值化能够有效将运动目标从多个复杂前景对象中分割出来,但二值化的阈值选取相当关键,显然,随着时间推移,固定阈值不现实,本文考虑了自适应双阈值法,每隔一定帧数,根据选取的一块背景均值作为阈值计算标准。差值图像若为正值,大于正阈值则视为是车辆运动目标;若为负值,小于负阈值则视为车辆运动目标。
(4)二值图去噪。由于车辆颜色比较复杂,二值化后得到的运动目标会出现部分缺失,这时选用合适的形态学掩模对运动目标进行闭运算,保证车辆为矩形或类似四边形,这就是行驶车辆轮廓。闭运算由OpenCv中的膨胀函数cvDilate及腐蚀函数cvErode先后实现。
(5)车辆轮廓提取。虽然可以通过函数cvFindContours很容易找到多个轮廓,但是车辆轮廓判断需要一定规则条件。本文采用一种基于虚拟检测线的方法[3]进行车辆发现及轮廓提取,如图2所示,仅虚拟检测范围内的运动轮廓才可能被认为所需运动目标。
3 实验与结论
图3为重庆一路段的车辆原始图像,经上述图像处理流程后,得到图4所示结果,为提取的二值化车辆轮廓。
可见,基于OpenCV技术的视频车辆运动目标提取能够有效实现与获取车辆轮廓,最终,可以由车辆轮廓得到车长、车宽、车型等多种特征参数。本文所述内容也可以根据不同时段、路段统计车流量,不仅给交通调控提供合理的统计依据,也能提高公路的科学管理水平。
[1]黄卫,陈里得.智能运输系统(ITS).北京:人民交通出版社,1999,20-25.
[2]王晓东,施海燕.城市道路交通信息监测系统.ITS通讯,2002(1).
[3]贺春林.一种基于视频的车辆检测算法.计算机科学,2005,32(5):243-245.