王小鹏,渠燕红,马 鹏,张永芳
(兰州交通大学电子与信息工程学院,甘肃兰州 730070)
随着计算机视觉技术的发展,利用视频监控[1]和图像分析技术实现人流的智能统计分析已日渐成熟,并已逐步在车站、码头、机场和超市等公共场所得到应用,通过人流统计可以获取出入现场的人流密度,协助管理和决策者更好地进行资源管理和分配,科学合理地规划管理方案,同时也为人群密集场所提供安全预警。目前人数统计系统一般采用运动目标识别和跟踪相结合的方法,常见方法可以分为基于统计分类[2]和基于模板匹配[3]的人数统计,其中基于模板匹配的方法首先建立头部特征模型,利用该模型在视频图像中识别目标,然后通过跟踪实现统计。文献[4]提出了结合形状特征信息和多曲率尺度的物体轮廓检测方法,头部检测效果较好,但运算量较大;文献[5]利用头部几何轮廓和HSI颜色空间实现检测,有效抑制了光照变化和阴影的影响;文献[6]利用Kalman滤波对跟踪窗口位置进行预测,该方法在行人轨迹交叉的情况下依然能够连续跟踪。
要准确统计出入口人流,首先需要准确分割出帧图像中的单个人,剔除其他非人目标,这就需要选择一种或多种能够可靠表征单人的特征。由于人头部近似刚性,不存在形变,因此将头部作为人个体特征较为理想。同时摄像头垂直向下可以采集到较完整的头部特征,减少遮挡现象。因此本文使用竖直向下摄像头进行监控场景内的行人头部检测,进而进行人流统计。对采集的视频图像,首先根据混合高斯模型[7]检测出前景图像,分割出感兴趣的人流区域[8]并进行边缘检测;然后对边缘曲线进行分类,仅选取满足条件的独立曲线进行基于梯度方向的RHT圆检测[9],并利用初始化的头部筛选模型对圆形区域进行筛选;最后通过Kalman滤波器实现目标预测与跟踪,并依据目标反馈的特征参数更新筛选模型参数。由于该方法检测并处理的区域是感兴趣的人流区域,因此可以减少运算量,同时通过RHT圆检测消除了类圆非目标的干扰,提高统计准确率。
人流计数方法流程如图1所示。首先提取视频帧图像前景,根据前景图像分离出感兴趣区域并进行边缘检测;然后利用基于边缘分类和梯度信息的RHT变换方法检测出圆形目标,并依据基于面积和颜色信息的筛选模型对检测结果进行过滤,筛选出行人头部;最后采用基于Kalman滤波预测的跟踪对目标进行跟踪和计数,并将跟踪目标信息反馈给筛选模块。
图1 人数统计方法流程
混合高斯模型对光照变化有较强的适应能力,由于本文的目标识别与跟踪区域为前景部分(人流)而非背景,因此,将前景区域设置为感兴趣区域。首先采用混合高斯模型提取前景二值图像,以此作为掩模与原始帧图像做点乘运算,去除相对静止的背景区域,分割出感兴趣区域,然后再利用Canny算子提取感兴趣区域边缘。假设目标前景二值图像为h(x,y),原始彩色图像的RGB分量依次为R(x,y),G(x,y)和B(x,y),则感兴趣区域可表示为
( 1 )
感兴趣区域分割和边缘检测结果如图2所示,将前景图像设置为感兴趣区域,只对该区域进行边缘检测,一方面可减小后处理运算量,另一方面避免了背景中类似头部的类圆目标对后续特征检测的影响。
(a)原始图像 (b)感兴趣区域
(c)边缘检测结果图2 感兴趣区域边缘提取结果
通过感兴趣区域边缘提取获取行人等边缘后,需要进一步提取头部而剔除其他部分,由于头部在垂直拍摄时,其形状基本为圆形。因此,可以通过检测圆的方法进行头部检测。RHT是一种有效圆检测方法,通过随机抽取3个不在同一条直线上的点,映射成参数空间中的一个点,并根据参数累计结果确定真正的圆。RHT变换是多到一映射,减小了传统Hough变换一到多映射的计算量,这种优势在处理简单图像时明显有效,但对于视频中复杂场景的帧图像,由于无效积累过多,会导致计算量过大。为了降低无效累积的概率,文献[10]提出基于梯度信息的RHT变换改进算法,利用梯度方向信息对参数空间累积操作之前的采样点进行共圆判断,只有通过判断的点才能进行参数空间的累积操作,该算法虽然对采样点进行了筛选,但对于边缘点集较多的情况,计算量仍然较大。为此,提出一种基于边缘分类和梯度信息的RHT圆检测方法,基本思路是对检测出的边缘信息进行分类,选取满足一定条件的单独边缘曲线进行基于梯度信息的RHT圆变换,从而减小运算量。
Canny边缘检测后得到一些相互独立的边缘曲线,由于同一头部轮廓点必然位于同一条边缘上,而RHT变换采样是随机抽取3个不在一条直线上的点,像素总数小于3的边缘曲线不满足该条件。因此,本文方法获得的独立边缘曲线可以分为两类:一类是像素点数大于3;另一类是小于等于3。如果仅对像素点数大于3的独立边缘曲线进行基于梯度信息的RHT圆检测,便可以剔除部分无效的边缘曲线,减少无效的累积,从而减少运算时间。假设边缘图像中边缘点数大于3的独立曲线集为{D1,D2,D3,…,Dn},那么改进后的头部圆检测算法过程如下:
步骤1构造边缘曲线Di的点集Oi,记录各点梯度方向,初始化参数单元集P=NULL和循环次数k=0。
步骤2从Oi中随机抽取3个点:d1(x1,y1),d2(x2,y2),d3(x3,y3)。
步骤3计算这3个点的梯度方向直线α1和α2的交点c1(x4,y4),α2和α3的交点c2(x5,y5)。若满足|x4-x5|≤δ,|y4-y5|≤δ(也可计算α1和α3的交点,选取其中两个交点进行判断即可),则利用式( 2 )~式( 4 )计算这3个点所确定的圆参数(a,b,r),转至步骤4;否则,转至步骤7。
( 2 )
( 3 )
( 4 )
步骤4在P中寻找点pc(xc,yc),如果满足以下条件,则转至步骤6,否则转至步骤5。
( 5 )
步骤5将特征参数(a,b,r)作为新参数插入P,其对应计数值设置为1,转至步骤7。
步骤6将pc的计数值加1,如果小于指定阈值N,转至步骤7;否则转至步骤8。
步骤7令k=k+1,若k>Kmax,则结束,否则转至步骤2。
步骤8pc为候选圆特征参数,若该参数对应圆边缘点数m>Mmin,则转至步骤9;否则为虚假圆,从P中删除pc,转至步骤2。
步骤9pc为真实圆参数,将落在参数相对应特征上的点从Di中去掉,判断已检测到圆的数目是否达到规定值,或者检测一个圆循环次数是否达到最大值,如果是则结束;否则,重置P=NULL,k=0,转至步骤2。
上述步骤中,Kmax为设定检测一个圆所允许采样的最大循环次数;Mmin为圆所需的最小点数,一般设为2πRλ,λ为固定系数,取值范围为0~1;m为图像空间中落到候选圆上的点数。
在摄像头垂直拍摄条件下,行人具有类圆的头部轮廓,但不同行人头部大小之间存在差异,发色相对于周围环境有明显不同,因此采用头部面积和颜色[11]信息可以建立筛选模型。
筛选模型根据人体先验知识和实际场景头部特征初始化参数,模型参数为Smin,Smax,Rcb和Rcr,其中Smin和Smax是根据实际情况设置的头部面积最小和最大值。假设检测出的头部圆半径为r,那么头部区域面积S=πr2,如果Smin-δ≤S≤Smax+δ,则说明目标大小符合要求。头发颜色信息根据采集的发色样本,利用混合高斯模型对不同颜色分量概率分布进行描述,可以发现常见的黑色、棕色和金色等头发颜色在YCbCr颜色空间具有较好的聚类效果,因此,利用Rcb和Rcr分别表示YCbCr空间内的Cb和Cr通道值,且两者满足
( 6 )
根据颜色分量的聚类范围,对检测出的头部特征进行颜色信息筛选,进一步剔除不满足条件的圆形区域。
通过建立面积和颜色信息的筛选模型可以去除伪目标。图3(a)是仅进行圆检测的结果,图3(b)是加入筛选模型后的检测结果,可以看出图3(a)将垃圾桶检测出来,而图3(b)则剔除了垃圾桶,而将头部保留。
(a)圆检测结果 (b)加入筛选模型后图3 头部特征检测结果
人流属于实时移动目标,当头部检测出来后,可以通过跟踪头部实现每个行人的状态估计和位置预测,通过关联准则将视频序列中相同的单个人准确匹配,从而获得行人在连续视频中的运动轨迹。由于Kalman滤波[12]预测能够较为精准地预测目标运动轨迹,并且场景中运动头部在相邻几帧图像内的运动可以近似为匀速直线运动。因此,本文采用基于Kalman滤波预测的头部跟踪方法,利用Kalman滤波器对运动头部在下一帧的位置进行预测和更新,将预测出的头部目标与当前帧目标进行匹配,最后将匹配成功的目标反馈到筛选模型库,实现筛选信息的更新。
将头部外接矩形作为跟踪窗口,依次选取跟踪窗口中心点坐标、速度和头部区域的均值和方差作为状态模型参量,目标状态向量为
( 7 )
( 8 )
( 9 )
式中:pix(x,y)为半径为R,中心点位于(x,y)的头部区域内像素值;N为头部区域内像素总数。利用头部检测结果对状态模型初始化后,进行基于Kalman预测的跟踪与计数,具体过程如下:
(10)
(11)
(12)
步骤2状态更新,根据实际观测值和预测出的状态方程以及误差协方差对预测结果进行修正,获得系统状态的最佳估计值,更新过程如下
(13)
(14)
(15)
(16)
式中:Zk为系统观测向量;V为观测噪声,设为零均值高斯白噪声;H为设定观测矩阵;R为观测噪声协方差;I为单位矩阵;Kk为卡尔曼增益。
步骤3头部匹配,将当前检测的结果与之前检测目标进行匹配。
(17)
式中:Ud为目标之间距离的阈值。如果匹配成功,将目标信息反馈到筛选模型进行更新;否则,说明目标可能因为快速移动或者遮挡而产生假消失等现象,此时直接利用Kalman预测值更新参数,并将其标记为假消失对象。如果在规定时间段内仍然没有找到匹配的对象,则将其判为离场。
步骤4人数统计,进出口处人流自动统计采用双线法进行轨迹判断,即在视频图像中设定两条计数虚拟线,虚拟线之间区域视为计数区域。当跟踪窗口中心点进入两线之间区域,计数开始,如果中心点离开计数区域,则计数结束。
图4给出了基于Kalman预测的跟踪和计数过程结果,由于引入了Kalman预测,避免了行人运动过快或遮挡导致的跟踪丢失等情况。
(a)双向人流密集场景
(b)背景变化场景
(c)携带行李场景图4 跟踪计数过程
为了验证方法的有效性和计数性能,采用实际场景监控视频进行仿真测试,采用MATLAB和C++语言进行编程仿真。采用的评价指标为检测率DR和准确率AR,具体定义如下
(18)
(19)
式中:p为正确检测人数;q为误检人数;r为漏检人数。
首先选取不同场景的监控视频进行测试,分别为图4(a)的双向密集人流且存在相互遮挡,图4(b)背景环境发生突变以及图4(c)行人携带行李的场景。从表1数据可以看出,平均准确率在94%以上,由于设置感兴趣区域和头部筛选模型能够减弱背景中类圆物体的干扰,采用Kalman滤波跟踪减少了遮挡导致的漏检,使本文方法能够在不同场景下具有较高的计数准确率。但在人流密度较大的情况下,由于行人之间长时间遮挡和头部轮廓的严重缺失,计数准确率会出现降低。另外,当行人携带类似头部大小和颜色行李时,容易误判为行人,导致计数误差。
表1 不同场景检测率和准确率测试结果
为了进一步评估本文方法,对大小为320×240的视频序列与不同方法进行了实验数据对比。表2(其中AT表示运算时间)为不同方法计数之间的测试结果,其中基于HOG特征的Adaboost目标检测检测率较高,但漏计较为严重,降低了计数准确率;结合Hough变换检测与光流法跟踪的人流统计仅以Hough检测结果作为跟踪依据,不能有效排除类圆物体干扰,且光流法计算复杂度较大,使检测率和准确率降低。相比之下,本文设置的感兴趣区域和筛选模型,剔除了类圆物体的干扰,改进的RHT变换提高了圆检测的效率,因此,本文方法的总体检测率和准确率相对较高,计算复杂度较低。
表2 不同方法结果对比
本文提出一种利用视频图像中头部特征快速且较准确实现双向人流计数的方法,通过设置感兴趣区域和筛选模型,消除背景中类圆物体的干扰,提高检测的准确率;提出了基于边缘分类和梯度信息的RHT变换圆检测方法,提高头部检测的速度;根据跟踪匹配结果,将匹配成功目标信息反馈给筛选模型,实现了模型的更新,保证了筛选条件的准确性。