基于OpenCV的公交客流计数方法

张震+李进钢



摘 要: 公交车客流统计是计算机视觉领域的重要研究方向,然而由于阴影、光照变化等动态纹理因素的影响使得构建一个实时精确的客流统计算法变得较为困难。针对以上难题,提出一种基于OpenCV实现单目视觉下的客流统计方法。首先对取得的实时图像进行预处理;然后运用Codebook和形态学滤波相结合的方法建立背景模型,消除动态纹理对前景的影响;最后采用改进的Hough变换提取乘客的头部区域,进行跟踪计数。实验结果表明,乘车环境中该方法的检测准确率达88.6%以上,可应用于实时的客流计数系统。
关键词: 客流计数; Codebook; 背景模型; 形态学滤波; 霍夫变换
中图分类号: TN911?34; TP391.41 文献标识码: A 文章编号: 1004?373X(2017)02?0016?05
Abstract: The bus passenger flow statistics is an important research direction in computer vision field. However, the influence of dynamic texture factors such as shadow and illumination variation makes the construction of a real?time accurate bus passenger flow statistic algorithm difficult. To solve this problem, a bus passenger counting method based on OpenCV is presented. The obtained real?time image is preprocessed. The method of combining Codebook background model with morphological filtering is adopted to build the the background model to eliminate the influence of dynamic texture on the foreground. The improved Hough transform is used to extract the head region of the passengers for tracking counting. The experiment results show that the calculation accuracy of the algorithm can reach more than 88.6%, so it can be applied to the real?time passenger counting system.
Keywords: passenger counting; Codebook; background model; morphological filtering; Hough transform
0 引 言
快速、精确地统计公共区域人流量,对商业应用和公共安全有着重要的意义。公交车作为一种载客量大和周转率高的公共交通工具,其智能化管理水平直接关系着城市的交通运行情况。根据实时客流情况,合理安排公交车辆调度,可以有效解决出行难问题。由于乘车环境光线的剧烈变化和较高的实時性要求,公交车的客流统计技术成为研究的难点。
目前,机器视觉领域已经成为客流统计研究的重点,文献[1?2]采用在 DSP 上实现双向通道和出入口的视频人数统计方法,运算量较大,无法满足实时性的要求。文献[3]利用双目立体摄像机,只对感兴趣的区域进行跟踪并计数,该方法需要在公交车上安装相应的双目摄像系统,成本较高且不实际。文献[4?5]利用人头颜色和背景的差异进行人数统计,易在白发老人上下车的场景中出现较大误差。针对以上方法的不足,本文提出一种基于Codebook[6?7]和Hough[8]变换实现单目视觉下的客流统计方法。该方法充分利用公交车内已有的监控系统,提取乘客头部特征,实现乘客上下车方向判别和自动计数的功能。系统整体框架如图1所示。
1 图像预处理
图像预处理作为公交乘客检测算法的基础,其处理效果直接影响到后期的运动检测等一系列操作。在公交车视频监控环境下,由于不可避免地受到噪声干扰,影响到后续的目标检测。在研究经典背景提取算法的基础上,本文选取全局阈值法对采集得到的CCD彩色图像进行预处理,将目标和背景简单的分开,得到乘客轮廓信息,处理结果如图2所示。
2 运动目标检测
公交车在行进过程中,车内光线、阴影一直在发生变化,这最终都将反映到摄像头摄取的实时图像中。为了能够对变化的场景进行背景建模,本文选取了Codebook和形态学滤波相结合的算法。
2.1 建立背景模型
Codebook算法基本思想是为图像中每一个像素点匹配一个包含多个码元的码本。其中,每个码元包含背景学习、检测时的最大、最小阈值成员。在背景建模期间,对每个像素点进行码本匹配,检测像素点的观察值是否在码元的学习阈值范围之内,如果在码本中某个码元的阈值范围内,则认为它是扰动的;如果不在码本中某个码元的阈值范围内,则背景是动态的,需要建立新的码元并设置相应的阈值。因此,在建立背景模型的过程中,不断进行码本匹配,最终得到动态的背景模型。
处理时,对每一像素建立对应的Codebook,捕捉背景中相关变化的图像,在进行足够多帧的图像学习后,训练一个基本的背景模型。通过不断更新有移动前景条件下的背景,从而保持背景能定期得到更新。
2.2 运动检测
比较对应像素的Codebook是否出现在码元中,输出比较的结果:某个像素在该像素的编码组的某个码元的范围之内,则判断该点是背景点,输出值为0,否则判断是前景点,输出值为1,运动前景被提取出来。
2.3 形态学滤波
Codebook区分出的前景序列不可避免地受到光照、阴影等动态纹理因素的影响,这样有可能导致下一步目标分割不成功。本文采用形态学腐蚀滤除动态纹理带来的干扰,腐蚀公式如下:
由于动态纹理在前景图像上会造成“斑点”,与运动前景中的人体相比,这些斑点面积很小,并不连贯,呈离散分布状态。运用图像腐蚀可以较好地消除“斑点”。图3(a)表示视频序列中的某帧前景,图3(b)则为腐蚀处理过的该帧前景。
经过形态学腐蚀处理之后,影响前景的“斑点”被消除掉,图像内的较大运动区域依然存在,运动乘客形态特性更为明显,为后续的目标分割以及跟踪计数创造了良好的前提条件。
3 运动目标特征提取
运动目标分割是对目标检测算法输出的二值化后的前景图进行分割提取,得到用以追踪的矩形框。考虑到可能出现乘客随身携带物品的场景,本文使用一种基于改进Hough变换的目标分割算法。该分割算法能够精确识别乘客头部在前景图像上生成的圆形轮廓。
3.1 Hough变换原理
考虑到公交车的实际情况,监控摄像头安装在上下车门正上方垂直90°的位置。分析整个过程,发现只有乘客的头部能保存完整的信息。当车厢内较为拥挤时,乘客身体其他部位遮挡严重,只有头部信息能够清晰地反映到图像中。乘客的头部是刚体,大小形状不会发生变化,容易区分出与其他特征部位的差距,经过摄像头时,乘客头部只会出现一次。基于以上考虑,本文采用乘客头部作为追踪的对象。
在图像平面中,任意一个圆的方程式表示如下:
式中:为圆的半径;为圆心的坐标。Hough变换的圆检测在变换过程中,构建一个三维的累加数组,然后对图像中的边缘点作Hough变换,计算出该点在三维空间上的对应曲线,在相应的累加数组上进行加1操作,即:
通过累加可以观测到累加数组上的局部最大值的点,这个最大值对应的点就表示图像平面上圆的圆心以及半径参数。
传统的基于Hough变换的圆检测需要消耗大量的时间和存储空间,产生无效累积,使得Hough变换仅仅在理论分析上是可行的,而几乎不可能进行实际应用。
在实际计算中,像素点梯度方向角可在边缘检测中利用边缘检测算子得到,此时梯度方向角可由梯度向量在x方向上的分量和在y方向上的分量求取,即:
如图4所示,表示圓心坐标,是边缘点的梯度方向,指向圆心。可得出下列计算圆心的方程:
本文采用一种基于梯度方向的Hough变换检测算法。该方法利用边缘像素点的局部梯度信息减少计算量,可以获得较为精准的圆心位置。
(1) 运用Canny算法对前景图像进行边缘提取,获取边缘点的灰度变化梯度。
(2) 对像元进行赋值:灰度梯度值大于阈值的像元赋值1,标记其梯度方向,并在相应的二维累加数组各单元上进行加1操作;灰度梯度值小于阈值的像元赋值0。
(3) 经过步骤1,步骤2处理后,累加数组中会出现一个局部最大值,这个值就表示圆心的位置坐标。
经过以上步骤,累加数组从三维空间降低为二维空间,一对多映射修改为一对一映射,在节约存储空间的同时也降低了计算量。
3.2 Hough变换的改进
Hough变换并不计算所有的边缘点,而是随机采样3点,将结果映射到圆参数空间中,采样到达要求时,参数空间中所有值不为0的点都是假定存在的圆。由于Hough变换鲁棒性较强,即使检测到一小段圆弧,仍将形成目标圆,造成干扰。此外,目标圆在前景区域可能被分割成若干段连通的圆弧,Hough变换将检测出多个重叠圆。
经过实验观察发现,检测出的真圆上边缘点的数量和圆的周长存在简单的正比例关系,即:半径越大,其边缘点的数量愈多。虚假圆上边缘点集中分布在某段圆弧处,数量较少。
为了解决上述问题,本文设定极限匹配值。计算累加器数值与半径的比值大小,若:
认为该圆是假圆,直接排除,若:
则将该圆作为候选圆,求取半径r,本文中取值0.12。
乘客携带的随身物品也会出现在前景区域,会造成较大干扰。为了避免误检,考虑到乘客头部反映到摄像机中成像的大小,设置最大圆半径max_radius和最小圆半径min_radius,用以限制区分成圆的半径大小。只有当求得的半径r在max_radius和min_radius之间,即:
认为该候选圆是真圆,进行成圆;如果不在二者之间,不进行成圆。本文中max_radius设为150,min_radius设为90。
为了去除重合圆,经过多次实验验证,可以粗略地认为两个圆的圆心之间的距离不能小于两个圆的半径之和的否则认为是同一个圆。假设两个圆,如果满足式(9),则认为这两个圆是重合的,只保留其中一个,如图5所示。
图6(a)表示未改进情况下的检测到的圆, 图6(b)表示改进之后检测到的圆。通过对比可以看出,改进后,Hough变换正确避开假圆,在前景内提取头部区域。
考虑到下一步系统对目标的追踪和计数,矩形框效果更好。本文对上一步获得的圆求取外接正方形,作为用于追踪的矩形框。在运动检测阶段,形态学腐蚀在消除“斑点”的同时,也造成头部边缘区域的缩小。为此,选取的矩形框应稍大一些,用以补偿。
4 运动目标跟踪及计数
4.1 运动目标跟踪
考虑到公交车的人流特殊性,乘客之间距离较小且移动缓慢,实时摄取的图像中相邻两帧时间差只有数十ms,运动目标基本未发生变化,相邻两帧图像同一乘客形成的阴影有很大一部分的区域是重合的。基于上述特点,本文采用了一种基于目标区域动态更新的跟踪方法[9]。
本算法的思想是:以第k帧为目标帧检测到运动区域,分割出来,建立初始模板并进行编号。在第k+1帧中遍历上一帧目标位置的周围区域,通过图像匹配和最小成本估算为目标区域关联最佳模板[10]。这样,关联的模板和目标区域得到更新。最终通过不断更新模板位置,记录坐标,完成对运动目标的追踪。追踪流程图如图7所示。
4.2 运动目标计数
本文在上下车门处设置计数线位置,通过记录跟踪矩形框上下边框与计数线的接触情况,程序判断是否启动计数系统以及记录运动目标当前状态,效果如图8所示。
5 实验结果
由于尚未在公交车上装载,因此系统的测试由计算机模拟的方式完成。本文设计的硬件开发平台为SBS3730开发板,软件开发平台为Qt,采用OpenCV算法库中的图像数据结构和封装函数图像进行处理。
系统测试界面图如图9所示。
实验的测试素材由6段乘客上下车视频片段组成,这些视频均由现有公交车监控设备摄取,基本涵盖同时上下车、拥挤、携带行李、光照变化等常见状况,程序的测试结果如表1所示。
测试结果表明,系统算法的计数精度达到88.6%以上,基本上达到了公交车实际应用的要求。分析出现错误计数的原因为高人流密度下乘客过于集中,较难分割紧密依靠在一起的目标,容易出现漏检。
6 结 语
公交车是一种复杂的计数场所,为了满足计数的实时性、准确性要求,本文提出一种基于OpenCV的公交客流计数方法。Codebook背景模型与形态学滤波相结合的人体检测方法,减少光照、阴影等因素的影响,分割出前景。改进后的Hough变换能够准确识别乘客头部区域并进行提取。实验结果表明,该方法的计数准确性可以满足实际应用的需求。但是文中依然存在一些问题,如Hough变换提取乘客头部信息的算法还有待进一步改进,以提高系统在高人流密度下的准确率;由于条件所限,本算法目前仍处于试验阶段,如果在现实乘车环境中应用,必然会碰到很多未知的问题。因此提高算法的准确率并将其应用在实际的客流计数系统中,将是本文后续研究的重点。
参考文献
[1] 高传莹.基于DSP的视频人数统计研究[D].合肥:合肥工业大学,2010:17?26.
[2] ZHU Q Y, TANG L, JIANG Y P, et al. A novel approach of counting people based on stereovision and DSP [C]// 2010 The 2nd International Confe?rence on Computer and Automation Engineering. Singapore: ICCAE, 2010: 81?84.
[3] TERADA K, YOSHIDA D, OE S, et al. A Method of counting the passing people by using the stereo images [C]// Proceedings of IEEE International Conference on Image Processing. Tokushima, Japan: The University of Tokushima, 2009, 2: 338?342.
[4] LIN Shcngfu, CHEN Jawych, CHAO Hungxin. Estimation of number of people in crowded scenes using per?spcctivc transform ation [J]. IEEE transac?tions on systems, man and cybernetics (Part A), 2010,31(6): 645?654.
[5] 王强,冯燕.基于颜色和形状信息的快速人数统计方法[J].计算机测量与控制,2010,18(9):2157?2159.
[6] 李伟生,汪钊.基于时空背景模型的自适应运动目标检测方法[J].计算机应用,2014,34(12):3515?3520.
[7] 霍东海,杨丹,张小洪,等.一种基于主成分分析的Codebook背景建模算法[J].自动化学报,2012,38(4):591?600.
[8] 蒋晓峰.基于视频图像处理的公交车人流量统计系统的研究[D].广州:华南理工大学,2013:45?67.
[9] 尹俊超,刘直芳.基于OpenCV的运动目标检测与跟踪[J].计算机工程与设计,2011,32(8):2817?2820.
[10] 余旺盛,田孝华,侯志强,等.基于关键区域特征匹配的视觉跟踪算法[J].电子学报,2014,42(11):2150?2156.
[11] 王爱丽,董宝田,王泽胜,等.融合光流速度场与背景差分的自适应背景更新方法[J].中国铁道科学,2014,35(6):131?137.
[12] 吴桐,王玲.基于帧差分块的混合高斯背景模型[J].计算机工程与应用,2014,50(23):176?180.
[13] 周灿,余仲秋,张晖.畸变校正与帧差法相结合的运动目标检测[J].光学技术,2014,40(6):531?534.
[14] 崔莫磊.公交视频人数统计系统的设计与开发[D].郑州:郑州大学,2013:28?32.