ITS中基于斑块处理的车流长度检测算法
2008-07-03
作者:方晓莹,刘富强
摘 要: 通过对图像中的斑块进行分析,获得斑块在图像中的信息,由非线性校正算法将其恢复为实际道路中信息。依据一定的条件将斑块聚合为车辆以提取车辆信息,进而判断是否有车辆队列,得到较为准确的车流长度" title="车流长度">车流长度。实验结果表明,该检测算法有较高的准确性,且能满足监控的实时性。
关键词: 车流长度,斑块处理" title="斑块处理">斑块处理,车辆聚合,非线性形变
近年来,随着计算机技术的不断发展和高分辨率成像技术的运用,数字图像处理分析技术在车辆自动监视系统中的应用越来越广泛。道路上车辆运行状况与车流长度的实时检测是智能交通管理的重要功能之一。参考文献[1]中提出了基于FFT的队列检测方法,根据图像上检测区域内有车与无车对应频谱的不同,检测车道上是否存在车辆,但该算法不能定量地给出车辆的排队长度。参考文献[2]中利用图像的点特征与线特征来检测队列的长度,当图像中存在阴影或遮挡时,角点检测的鲁棒性不够。本文通过对单目图像序列的斑块分析、图像非线性形变" title="非线性形变">非线性形变校正等,提出了一种有效的车辆排队长度检测算法。该算法具有较高的检测精度与较强的鲁棒性。
1 系统概述
在视频监控系统中,由摄像机获取交通视频图像,通过前景与背景作差法可将运动目标从背景中提取出来;然后经过自适应的图像阈值选择,将前景图像二值化后,可以看到车辆目标以一个个连通区域的形式表现在图像上,称这些连通区域为斑块(Blob),如图1所示。
从图1中可以看到,这些斑块在分布上并没有什么规律,非常随机地分布在图像的各个位置,其中有一些是车辆前景的斑块,另一些则是具有干扰性的噪声斑点。本文介绍的系统中,利用基本的斑块分析算法提取目标图像中所有斑块的基本参数(包括斑块的位置信息" title="位置信息">位置信息、周长和面积信息、斑块的外接矩形的各个参数),然后根据斑块的大小和位置信息,滤除噪声点斑块,将属于同一辆车的斑块进行聚合,实现从斑块到车辆的提取。由于排队车辆间的距离是比较小的,因此利用各车辆斑块的位置与距离关系确定队列的起始与终止点,从而可确定车流的长度或排队车辆数等信息。
由于单目摄像机位置所处的高度和角度的不同会导致图像不同程度的非线性形变,使得图像中的长度与位置信息不能正确反映实际的情况。本文提出基于图像网格的非线性形变校正算法,对图像进行形变校正,以获得较为准确的队列长度。
2 斑块分析算法
2.1 斑块边缘检测
由于斑块在图像上的分布是杂乱且没有规律的,这对于斑块处理程序的鲁棒性提出了较高的要求,尤其是斑块会呈现出各种形态,包括斑块中间会有空洞也会有孤立的点等。因此,斑块处理程序必然要求有足够的适应性[3],能处理各种形状的斑块,并记录它们的信息。斑块边缘检测" title="边缘检测">边缘检测的具体步骤如下:
(1)保存原图像
由于在后续的斑块操作中,需要对找到的斑块进行填充,会破坏原图,所以要将原图像存入一个缓冲区,实际处理的是原图像的一个镜像。这样原图像的斑块仍可以作为源进行后续跟踪处理。
(2)寻找斑块起始点
经过二值化处理后的图像,斑块处的像素点是白色的(像素值为1),其余像素点均为黑色(像素值为0)。从图像的左下角开始,按自下而上,自左而右的方向进行搜索,当遇到第一个白色的像素点时,该点就作为第一个斑块的边缘起点,并记下该点的坐标,且在斑块计数值上加1。
(3)斑块边缘信息分析
斑块边缘信息分析是指从起始点开始搜索斑块的边缘,绕边缘一圈,将整个斑块的边界信息提取出来。本文采取顺时针方向的检测准则。由于每个像素点都有八个相邻的像素点,根据该像素点与可能的相邻点之间的相位关系确定了八个不同方向的向量,如图2所示,按顺时针方向依次搜索边界点。
搜索过程从确定的起始点开始,首先判断第一个方向向量上相邻点的像素值是否为1,若是,则为下一个边缘点,记下该点的像素坐标;否则在该方向向量基础上顺转45°,即检测下一方向向量上的相邻点,直到找到下一个边界点。为了提高检测的速度,同时又要保证检测的准确性,考虑到有可能存在比较孤立的边界点,将最近找到的边界点到上一边界点的方向向量逆转90°,定为搜索下一边界点的初始向量(并非每次都从第一方向向量开始搜索)。重复上面的操作,依次寻找像素值为1的下个边界点,并保存这些点的像素坐标,同时判断找到的点是否为初始起点,若是,则表示该斑块的边缘检测过程结束。图3为斑块边缘检测的具体过程,图中“1”代表白色像素点,即斑块所在位置,其余的为“0”(省略),代表黑色像素点。
根据斑块边缘检测过程中记录的各边界点的坐标值,可以得到该斑块的面积、周长、中心位置、外接矩形等信息。
2.2 斑块填充
斑块填充就是在起始点的基础上将整个斑块填为黑色,实现将斑块从图像中移除的效果[4]。由于斑块的分布极为散乱,对图像上所有斑块进行分析时,需要将已经找到且已得到基本信息的斑块从图像中除去,以不影响其他斑块的分析。因此斑块填充过程是不可或缺的一步。
考虑到斑块形状的复杂性,如中空的斑块中间可能还有小斑块等,因此不能仅依靠边界点来填充,需要探求其中的每一个像素点。同时填充过程的耗时在整个斑块处理过程中所占的比重也是最大的,因此斑块填充算法需要有较高的鲁棒性与实时性。本文研究了两种填充算法:点处理方法与线处理方法。
点处理就是在斑块的填充过程中采用逐点处理的方法,又称为漫水法。该算法实现简单,没有考虑斑块内部各个像素点之间的相关性,而是孤立地对各个像素进行测试,所以实现起来比较费时。如果考虑像素点间的相关性,在一个连通的像素段上进行扫描,则采用线处理的方法。即先取出一个种子像素,以此为中心向左和向右进行填充,直到斑块的边界点。线处理的具体实现过程如图4所示。其步骤如下:
(1)将斑块的第一个边界点作为种子像素,将其进行填充。
(2)沿线扫描,对种子的左、右像素进行填充,直到遇到像素值为0的点,即斑块的边界处,记下这个填充的边界坐标X。由于斑块可能是中空的,所以填充边界并非斑块分析阶段得到的左右边界极值Xl或Xr。
(3)当Xl
(4)从堆栈中取种子像素,重复(2)、(3)步骤,直到堆栈为空,整个斑块的填充过程结束。
由于考虑了像素点之间的连通性与相关性,该算法在递归和堆栈的深度上远远低于点处理,特别是堆栈深度不会大于三层,在很大程度上解决了时间和空间复杂度的问题。实践证明,这种方法可以实现实时的斑块分析操作。
经斑块分析算法找到并提取斑块的边缘信息,再由斑块填充算法将该斑块从图像中移去后,在留下的图像中仍采用自下而上,自左至右的方向寻找白色的像素点,即搜索新的斑块,直到得到所有斑块的信息。
2.3 斑块聚合
经过斑块边缘检测得到了图像中单个斑块的信息,需要根据各个斑块的特性将属于同一辆车的斑块聚合起来,实现对一辆整车的信息提取。根据聚合后车辆斑块的位置信息,将排队车辆进一步聚合,以得到图像中的队列信息。本文主要依据斑块之间的距离与斑块的面积信息来判定多个斑块目标是否属于同一个区域,对符合条件的斑块进行合并。
在聚合过程中,首先对搜索区域内的斑块进行初步筛选,将面积小于一定门限的斑块置于考虑范围之外,从而滤除这些噪声点斑块的干扰,从而在区域合并过程中进一步剔除了噪声。区域合并主要依据斑块的中心位置与外接矩形的边界条件等,将满足条件的、具有相似性的多个斑块进行聚合。在该过程中,不断将聚合后的斑块信息来更新目标信息。
3 非线性校正算法
在斑块聚合中需要以各斑块的大小与位置信息为依据,但由于摄像机所处位置的高度与角度的不同,会导致图像不同程度的非线性形变,图像中的斑块信息不能正确反映实际的信息,需要由校正算法对其进行参数恢复[5]。本文提出一种基于图像网格的非线性校正算法。
在所摄取的图像上建立坐标系,规定图像的左上角顶点为坐标原点。根据如图5所示的道路的交通标志线设定图像中的网格线,对应到如图6所示的实际道路中的网格线和坐标系。通过在图像上取点获取像素坐标即可以计算出图像网格中每条直线的方程,从而得到各线交点的坐标。在实际道路中,由道路的宽度和交通标志线得到实际网格的交点坐标,这两类交点坐标有一一对应的关系。根据这些点坐标的对应,可以找到一个函数关系来反映图像中所有点的坐标到实际坐标的映射。
由于图像上不同位置的点,其非线性形变的程度不同,所有点都对应同一个映射关系不能保证校正的准确性。为了使坐标的变换更为准确,可以建立小网格模型。在图像中的每一个网格上取若干个点,分别对应到实际网格的若干个点上,由这些点的坐标对应关系建立每个网格的坐标映射函数。这样在进行非线性坐标变换时,首先判断被计算点所处的网格位置,再选择相应的映射函数进行变换。
当确切的函数难以求得时,通常采用近似的方法来尽可能地逼近所求函数。这里采用曲线拟合的最小二乘法[6]来求映射函数。取基底为:
则所求的映射函数用矩阵表示为:
式中,(x,y)为图像中的像素坐标,(X,Y)为转换后标准坐标。
将得到的斑块边界点的像素坐标,经非线性算法校正后得到边界点的实际坐标值,从而可以计算实际斑块的大小和面积、斑块间的距离等。根据这些恢复后的参数来对斑块进行聚合,得到车辆的排队长度。
4 实验结果
将上述斑块处理算法与非线性校正算法相结合的车流检测算法应用于实际的交通检测中,以检验算法的有效性。
以上海龙阳路段为检测对象,对图像进行二值化且经斑块处理后,得到某时刻的车辆队列斑块如图7所示(已除噪处理)。聚合后的队列斑块的外接四边形在图像中的信息如表1前两列所示;经非线性校正后得到的该斑块实际信息如表1后两列所示。由上下两条边的平均纵坐标值可计算得到实际道路中的队列长度为111.2米,检测的平均误差为1.4%。
该斑块处理算法只对车道范围进行分析处理,而不是对整个图像进行处理,所以其实现速度较快,能满足视频监控系统的实时性要求。
本文通过对二值图像中的斑块进行分析,将不规则的斑块按一定的条件聚合为整车,再根据车辆间的信息关系聚合为队列斑块,提出了基于斑块分析的车辆排队检测算法。考虑到图像的非线性形变,提出了基于图像网格的校正算法,对参数进行恢复,使测得的队列长度更为准确。实验结果表明,该算法有较高的检测精度,其处理速度能满足实时性要求,能很好地应用于智能交通管理中。
参考文献
[1] ROURKE A,BELL M G H.Quene detection and congestion monitoring using image processing[J].Traffic Eng.& Control,1991:411-421.
[2] 李岩,张学工.应用图像处理方法自动检测路口车辆排队长度[J].计算机应用与软件,2003,(12):47-49.
[3] KOLLER D.Moving object recognition and classification based on recursive shape parameter estimation[J].in Proc.12th Israel Conf.Artificial Intelligence,Computer Vision,Dec.1993:27-28.
[4] BEYMER D,MCLAUCHLAN P,COIFMAN B,et al.A real-time computer vision system for measuring traffic parameters[J].IEEE Conf.Computer Vision and Pattern Recognition,Puerto Rico,June 1997:496-501.
[5] 韩凤磊,庞其昌.一种图像非线性形变的恢复方法[J].光学技术,2003,(5).
[6] 沈剑华.数值计算基础[M].上海:同济大学出版社,1999.