背景技术
行人流量统计就是统计某个时间段内进出某一通道的人数。从不同的角度分类,行人流量统计***有多种类型。按照所选硬件平台的不同,可分为接触式(如旋转门),传感器式(如激光束),和基于视觉式(如摄像机)***。按照摄像机安放位置的不同,可分为基于垂直摄像和基于倾斜摄像的***。按照摄像机是否被标定,可分为相机标定式和相机未标定式***。接触式和传感器式***容易造成出入口的拥堵,且计数精度较差;基于垂直摄像的***虽然计数精度高,算法简单,但它只能从顶之下获取行人的部分信息,出于安全监控考虑,我们需要保留行人的其它信息(如面部特征,衣着特征等),而且当今监控摄像头以倾斜摄像为主;相机标定式***需要寻求相机本身的标定系数,不具有普适性。因此,综合考虑各方面因素,当今多数行人流量统计***是相机未标定、基于倾斜摄像的。
近年来,已有一些研究工作在这方面开展,可参考Chan等人的文献(A. B. Chan, Z. S. J. Liang, and N. Vasconcelos, “Privacy Preserving Crowd Monitoring: Counting People without People Models or Tracking,” In IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Anchorage, June 2008)。总的来说,可将所采用的算法大体分为三类。
基于行人检测跟踪的方法。首先分割前景,然后采用匹配搜索的方法检测行人或行人的一部分(人脸,人头,头肩,上身等),最后对检测的结果进行跟踪,一条有效的跟踪轨迹代表一个行人。此类方法中的两个核心技术——行人检测和运动目标跟踪,在视频监控领域本身就是两类技术难题,算法的复杂度较高,这为计数***的实时性能带来了考验。
基于特征点轨迹聚类的方法。首先提取某些利于跟踪的特征点,例如角点,然后对这些特征点逐帧跟踪,形成特征轨迹,最后将具有相似性特征的轨迹聚类,一个类代表一个行人。此类方法要求统计的运动目标需具同一性,且需要寻求一种较好的聚类方法。
基于低层特征回归的方法。首先分割前景,然后提取前景区域中的低层特征(面积,周长,边缘,边缘方向,纹理等),形成一个若干维的特征向量,最后通过某种回归函数来确定特征向量与人数之间的对应关系。此类方法无需进行行人检测和跟踪,但是对前景分割结果的依赖性较大,且一般情况下需要对大量特定场景的样本进行标注训练,缺乏通用性。
发明内容
本发明的目的主要是针对现有的行人流量统计***很难在满足计数精度的前提下,达到较好的实时性,而提供一种算法复杂度低、有较好精度的方法,实现对一般场景中的行人流量统计。
本发明方法步骤如下:
步骤(1)获取输入视频的第一帧图像,在该图像任意位置设定一个虚拟门。
步骤(2)采用混合高斯背景建模方法,将前景区域从背景中分割出来,并对得到的前景区域进行后处理,后处理主要包括以下步骤:
1) 采用形态学腐蚀和膨胀方法去除噪声;
2) 分析前景点的连通性,去除小于某个阈值的连通区域。
步骤(3)将原图转换到HSV空间后,去除前景区域的阴影部分。
步骤(4)学习阶段。包括以下步骤:
1) 采用基于梯度方向直方图的方法进行行人检测;
2) 利用检测出的行人的外接矩形中心的纵坐标和矩形框内的前景点象素总数来构成行人模型,并将若干个行人模型通过最小二乘法拟合成直线,形成启发信息;
3) 通过启发信息,确定虚拟门上各点与其所在位置行人模型中的前景点象素总数的比值,来为每个点赋予权重。
步骤(5)计数阶段。包括以下步骤:
1)采用稀疏光流LK算法对门上的点进行运动补偿。包括如下步骤:
a由稀疏光流LK算法确定的相角与虚拟门方向之间的夹角确定运动矢量方向;
b由稀疏光流LK算法确定的幅值与运动矢量方向的正弦值确定运动矢量大小。
2)统计门上各个前景点的个数并获得其信息,包括权重、运动矢量的大小和方向。通过补偿后的前景点的加权和来统计行人流量。
本发明是基于低层特征回归方法的一个变种,不同于传统依赖检测、跟踪或是特征点聚类方法具有较高的算法复杂度,本发明主要复杂度集中在行人检测,学习阶段完成后,在计数阶段即可达到实时计数的效果。对来自CAVIAR Test Case Scenarios公开数据库中的几个视频进行测试,能够达到85%以上的计数精度。
具体实施方式
以下将参考附图详细介绍本发明的实施例。
图1是一个流程框图,表示了本发明基于启发信息的行人流量统计***方法的流程图。
本方法处理的视频可以针对多种视频编码格式,例如:MPG、FLV等,只要能将该格式的视频转换为XviD编码的AVI格式视频即可。在此实施例中假定输入的视频已经是XviD编码后的AVI格式了。
虚拟门设置是计数***运行前必不可少的一步。首先获取输入视频的第一帧图像,在该图像任意位置设定一个虚拟门。这里所谓的虚拟门实际上是人为确定的、处于图像任意位置的一条直线。在画虚拟门时,用户只需要确定其两个端点,***将会自动采用Bresenham算法绘制直线。虚拟门可以认为是手工设置的一个感兴趣区域,后续步骤都将围绕它展开。虚拟门的长短和方向设定是任意的,但是在一般情况下,为了计数的准确性,在设置虚拟门时,应使其落在视觉的地平面上并且与行人大体运动方向垂直。虚拟门示例图如图2。两个端点坐标值分别为:(70,178)和(290,178)。
前景分割(即运动区域检测)结果的好坏直接影响到最终的统计结果,因为人流的数量是通过累加虚拟门上的前景点而获得的。本实施例采用Stauffer等人设计的混合高斯背景模型(C. Stauffer, W. E. L. Grimson. "Adaptive background mixture models for real-time tracking," Computer Vision and Pattern Recognition, IEEE Computer Society Conference on, Vol. 2 (06 August 1999), pp. 246-252)来获取前景。此方法用N个高斯分布模型来一同描述背景像素的分布规律。实施例中几个关键变量设置为:高斯分布个数N=4,背景比例T=0.7,学习速率Alpha=max(0.001,1/frameIndex)(frameIndex为帧的索引值),学习速率Beta=max(Alpha, 1/frameIndex),匹配阈值Lambda=2.5,初始权重InitWeight=0.05,初始方差InitDelta=320。为了使结果更精确,需要进行后处理。首先利用形态学方法,先腐蚀后膨胀,去除前景及背景中的噪声点,然后分析连通性(这里的连通性指的是某个象素点的8连通域),去除面积小于某个阈值的噪声块。这个阈值初始化时被赋予较小值(实施例中取经验值200),在计数阶段,可以根据学习阶段获取的行人模型的大小,将该阈值自适应调整到一个合适的值。附图3(b)是图3(a)利用上述背景建模以及后处理方法后提取运动区域的一幅示例图。
阴影去除部分是在运动目标检测之后,对一些与运动目标有着相同运动特征的阴影进行消除的过程。在获取前景时,由于光照的影响,行人运动时产生的阴影也被当成了运动像素,这无疑会使最终的统计结果偏大。为此,去除阴影也是必不可少的一个步骤。本实施例采用文献(R. Cucchiara, C. Grana, M. Piccardi, and A. Prati. "Detecting moving objects, ghosts, and shadows in video streams," IEEE Transactions on Pattern Analysis and Machine Intelligence, 2003, Vol. 25(10): 1337-1342.)的方法,将原图转换到HSV空间,检测并去除阴影。可以根据式(1)的方法判断HSV空间中的某个前景点是否为阴影。
其中,IC(x,y)和BC(x,y)分别为当前图和背景图某点的值,
。alpha,beta,tauS,tauH为各条件的阈值,实施例中分别选为0.60,0.90,0.1和2.0。若某个前景点的SP值为1,表明该点为阴影象素;否则,为非阴影象素。在采用此方法判别以后,也要采用后处理方法,包括连通性分析和膨胀,以降低误检率。一幅去除阴影后的示例图如附图3(c)。
在学习阶段,首先采用基于HOG,即梯度方向直方图(N. Dalai and B. Triggs. "Histograms of oriented gradients for human detection," Coference on Computer Vision and Pattern Recognition (CVPR), 2005.)的行人检测方法检测行人。实施例中使用HOG方法的参数设置为:3×3细胞/区间,6×6像素/细胞,9个直方图通道,构成一个3780维的向量。检测结果中以矩形框描述行人的中心位置和大小,示例图如图4所示。中心坐标为:CenterX=RectX+RectWidth/2,CenterY=RectY+RectHeight/2;大小为:RectWidth和RectHeight。其中,CenterX和CenterY分别为中心位置的横坐标和纵坐标,RectX、RectY、RectWidth、RectHeight分别为检测出的行人的外接矩形框的起始位置横、纵坐标,以及矩形框的宽度和高度。统计当前帧某个矩形框内前景点个数,可以得到一个行人模型,其包括两个参数:中心纵坐标CenterY和前景点个数AreaCount。用同样的方法得到N个行人模型(实施例中N=6),这N个模型两两之间须满足:CenterY[i]-Center[j]≧5象素,i≠j且i,j=1,2,…N。通过这N个模型,可以自适应调整运动目标检测后处理中连通性分析的阈值T=min(AreaCount[i])/2,i=1,2,…N。
将这N个模型拟合成直线,并作为启发信息给虚拟门上的每个点赋予权重。由于透视作用的影响,离摄像机越近的物体看起来越大,反之,越远的物体看起来就越小。物体的大小与图像Y轴坐标值之间在整体上是呈线性关系的,因此可以以CenterY为横坐标,AreaCount为纵坐标,通过最小二乘法,将N个行人模型拟合成一条直线L,示例图如图5所示。将这种线性关系作为启发信息,为门上各点赋予权重,具体步骤如下:
1)统计门上点的个数,PointCount;
2)记录门上各个点的位置信息:PosX[i]和PosY[i],i=1,2,…,PointCount;
3)根据直线L和每个点各自的位置PosY,确定其在当前位置所表征的前景点象素个数AreaCount[i],i=1,2,…,PointCount;
4)每个点的权重可表示为:PointWeight[i]=1/AreaCount[i],i=1,2,…,PointCount。
在计数阶段,对门上的前景点进行运动补偿。行人在行走时的速度不一致,使得经过虚拟门的过程有快慢。因此,需要对门上的各个点进行运动补偿,以免在某一时刻扫描虚拟门时,因运动过快导致像素点漏检或者运动过慢而导致重复计数。采用稀疏光流LK算法确定运动矢量的大小和方向,窗口大小为5×5。在通过前后相邻两帧得到X方向的运动分量XMotionMap和Y方向的运动分量YMotionMap之后,计算MagMap和AngleMap,分别代表通过LK算法得到的幅值图和相角图。
通过累加前景点的方法达到行人计数的目的。这里的前景点是指虚拟门上的、赋予权重了的、运动补偿后的前景点。具体步骤如下:
1)计算虚拟门与X轴之间的夹角GateAngle;
2)逐帧扫描门上的PointCount个点;
3)若某个点为前景点,则获取该点的权重PointWeight,幅值PointMag及相角PointAngle;
4)通过式(2)计算行人的分量:
其中N为前景点个数,Alpha为调整因子,取经验值0.85;
6)P值到达某个整数时,该整数值表示的是当前时刻的累计人流数。为了提高统计精度,若5帧内虚拟门上的前景点数小于某个阈值时(取经验值10),将当前的P值四舍五入。
从上面的实施例中可以看出,本发明提出的启发式行人流量统计方法,算法简单,人机交互方便,在确保具有良好的精度的前提下,可以达到实时性的要求。