吴 晟, 葛万成
(同济大学 中德学院,上海 200092)
随着社会经济繁荣发展,各种公共场所包括地铁、火车站、商业街、旅游景点等常常是行人络绎不绝。在这些场所容易因为突发事件造成踩踏或群死群伤事故,因此有必要对这些场所进行监控。智能视频场景监控系统就是针对这一需求而出现的。它利用数字图像处理技术对监控摄像头采集的视频进行处理和分析,提取出有用的信息,并进行分析和理解,从而实现人群密度的自动估计和预警等功能。它能代替人来进行监控,很好地避免了人为失误影响,又能够提供较为精确的统计数据。
本文提出的基于可变矩形框的人群密度估计算法源于经典的基于像素数的人群密度估计算法,但又有所改进,克服了原有算法因行人与摄像头距离不同造成的估计误差。
Davies等人1995年提出了基于像素数的人群密度估计方法[2]。该方法主要基于视频中人数与像素数成正比的关系。具体步骤如下:
①分别将连续的i-1帧和i帧2幅视频图像转化为单通道灰度图像。
②分别对连续的两帧灰度图像进行 3×3高斯滤波和Canny边缘检测处理,其中Canny边缘检测的高低阈值分别为80和240。
③将二者的边缘图像相减,得到边缘差。
④再经过 3×3高斯滤波去除噪声,然后用形态学腐蚀和膨胀运算消除干扰噪声。
⑤最后以上一步得到图像为遮罩对第 i帧图像进行二值化。
⑥对二值化的图像统计灰度值不为0的点的个数。
使用该方法对一个大小为大小为 768×576像素的测试视频进行试验。对得到的试验结果进行最小二乘法直线拟合,得到像素数与行人数之间的线性关系[1],最后结果的平均相对误差为7.19%。
基于边缘像素数的方法的缺点是当行人在视频中的大小随距离镜头的远近变化而变化时,像素数与行人数之间将不再符合线性关系。距离镜头近的行人的像素点可能是距离远的行人的好几倍[4]。从这个思路出发,本文提出了一种改进的人群密度估计算法。
首先我们分析视频中的行人大小的变化规律,如图 1所示,我们在视频中跟踪其中一个行人的大小变化,矩形框的长宽比不变,得出最大的矩形框为40×108像素,最小的为 23×66像素。由于视频在纵向行人大小变化不大,因此我们只考虑横坐标与矩形框大小的关系,确定矩形框的宽度width=0.0215×x+24.3369 像素。
图1 行人大小变化
图2 可变矩形框的算法流程
基于可变矩形框的人群密度估计算法具体算法如图2所示,首先采用与像素统计方法一样的移动边缘检测,接着用大小随x坐标变化的子窗口扫描整个移动边缘图像,子窗口移动的距离从最左侧(x=0)的每 8个像素,逐渐增加到最右侧(x=728)的每10个像素。对于每个选定的子窗口,首先选择感兴趣区域(ROI,Region Of Interest),对边缘进行采样。然后统计矩形框中的采样点数,与阈值进行比较。这里的阈值我们选择实验验证的最佳值:0.05×矩形宽度×矩形高度。若采样点数高于阈值则计数加一。
最终每一幅图像都通过上述算法得到一个矩形框总数。矩形框检测结果如图3所示。
图 3 固定和可变矩形框检测结果对比
从结果中可以看出由于矩形框的大小随着行人大小变化而改变,所以较好的保证了数据的线性。为了更好的对比,图3展示了固定大小的矩形框和可变大小的矩形框的检测差别。矩形框大小固定时,较小的行人周围的矩形框数量也较少。而较大的行人周围的矩形框比较小的行人的矩形框多 1到2倍。而可变矩形框检测则较好的解决了这个问题。另一方面,矩形框的使用还消除了噪声点的影响。
改进算法实验中仍然采用了同一视频,并对实验数据进行最小二乘法直线拟合,得到的最终线性关系为:矩形框数=24.4648×行人数-22.4636。已知矩形框数,估计行人数的值为:0.0385×矩形框数+1.7765。得到的直线拟合的平均相对误差为6.56%。
我们仍然用原视频来测试,视频大小为768×576像素,共220帧。我们的测试平台为Pentium M 1.60 GHz,代码为vc++实现。表1列出了2种方法在第100-112帧的检测结果。
表1 两种方法检测结果(部分)
基于像素数的检测方法平均相对误差为 13.53%,本文提出的改进算法的平均相对误差为5.35%。可见本文提出的方法能有效地减小由于行人大小变化造成的误差。
图4显示了实际人数、像素数方法的估计人数和矩形框方法的估计人数随帧数的变化情况。100帧以前这种方法与实际人数间的误差都较小。100帧之后,边缘点数方法的估计人数的误差逐渐增大,而矩形框方法的依然保持较高的估计准确度。
图 4 两种方法的估计人数与实际人数的变化情况
本文在基于像素数的人群密度估计算法的基础之上提出一种根据可变大小的矩形框数来估计人群密度的算法,并在Visual Studio .Net上进行了编程实现[5]。该经的算法中,矩形框的长宽比例不变,大小随着视频中的行人的大小的变化而改变。用大小可变的矩形框对一帧图像进行扫描,若矩形框中的像素数超过一个阈值,计数就加 1。这样对每帧图像采用该算法就可以得到一个矩形框数。再用这个数与行人数进行最小二乘法直线拟合,得到的直线就可以用来进行人群密度的估计了。通过实验数据的分析,可以得到基于像素数的检测方法平均相对误差为13.53%,而改进算法的平均相对误差为5.35%,明显优于原始算法。这个结果表明该算法不仅克服了经典的基于像素数的人群密度估计算法的局限性,而且消除了噪声点的影响,所以具有更高的准确度和更普遍的适应性。
[1]SAAD A, MUBARAK S. A Lagrangian Particle Dynamics Approach for Crowd Flow Segmentation and Stability Analysis[C]//IEEE.CVPR.Minneapolis: IEEE Publication, 2007: 130-142.
[2]EVANS A N, LIU X U. A Morphological Gradient Approach to Color Edge Detection[J]. IEEE Transactions on Image Processing,2006, 15(06): 1454-1463.
[3]THEODORIDIS Sergios. Pattern recognition[M]. 北京: 电子工业出版社,2010: 523-582.
[4]WEI Qiao. Crowd Target Extraction and Density Analysis Based on FTLE and GLCM[J]. Image and Signal Processing, 2009, 19(10):51-85.
[5]孙燮华. Visual C#. NET编程与实验[M]. 北京:机械工业出版社,2010.