吳 晟, 葛萬成
(同濟大學 中德學院,上海 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.