一種基于圖像信息的客流量識別統計方法
【技術領域】
[0001]本發明涉及圖像識別技術領域,尤其涉及一種基于圖像信息的客流量識別統計方法。
【背景技術】
[0002]客流量一直都是商場、機場、公交車站、地鐵站等公共場所進行管理和決策不可或缺的重要數據,隨著我國經濟與科技的發展,許多行業對客流量統計的需求也日益見長。傳統的人工統計方法費時費力,且時效性不強,后續數據處理繁瑣,不能提供實時的統計數據,因此開發出一種實時的客流量智能統計系統具有十分重要的意義。
[0003]傳統的紅外光電檢測客流量統計系統原理簡單,應用比較廣泛,但有明顯的缺陷:主動式受溫度、光照等自然條件影響較大,可靠性較差;被動式可靠性較強,但價格昂貴,且受場地限制。基于圖像信息的客流量識別統計具有成本低、安裝維護簡單等優點,還能與原有的監控系統相連接,不需另購設備。
[0004]該系統設計主要解決動態圖像中多目標的識別與跟蹤計數問題,目前已提出多種基于動態圖像的客流量統計計數方法,具有代表性的主要有以下三種方法:
[0005](I)建立行人真實軌跡的數學統計模型。如結合利用背景建模方法和先驗假設算法得到前景模塊,再對軌跡模型濾波以排除非行人軌跡。該算法比直接檢測行人節省了時間,但對軌跡數學模型要求較高,且依賴于前景塊識別的準確度。
[0006](2)基于遺傳算法。如“基于遺傳算法的客流量分析系統研宄”通過將遺傳算法引入到了客流量的統計系統中提高了客流量的準確性,但是由于是通過人體識別,當客流量較大時遮擋面積的增多導致識別難度增大。
[0007](3)數學形態學算法。如“基于改進特征跟蹤的客流量統計”提出了一種基于數學形態學的客流量統計方法,首先對進行數學形態學處理后的目標連通域進行分析,采用向前搜索原則確定目標的新位置,通過劃定計數線進行計數。該方法實現簡單,但是容易與其它非人運動目標混淆,影響統計的準確性。
【發明內容】
[0008]本發明要解決的技術問題在于針對現有技術中的缺陷,提供一種基于圖像信息的客流量識別統計方法。
[0009]本發明解決其技術問題所采用的技術方案是:一種基于圖像信息的客流量識別統計方法,包括以下步驟:
[0010]I)確定目標檢測區域;設置目標圖像檢測區域ROI的四個參數:RO1.X代表檢測區域ROI左上角點的X軸坐標,RO1.Y代表檢測區域ROI左上角點的y軸坐標,RO1.Width代表檢測區域ROI的寬度,RO1.Height代表檢測區域ROI的高度;
[0011]2)確定目標檢測區域沒有待檢測目標存在時的背景圖像;采用多幅圖像平均法,對10?20幀原始圖像疊加求取平均值,獲取目標不存在時視頻圖像的背景圖像,記為I。;
[0012]3)對采集的視頻圖像的每幀圖像進行處理,將存在運動目標圖像幀按順序存入數組中;
[0013]將采集到的視頻圖像的第i幀圖像進行分塊處理,記為當前幀圖像,然后選定目標圖像檢測區域ROI ;
[0014]對當前幀圖像進行二值化后、距離變換后,再通過均值濾波或亞取樣,得到當前幀圖像的增強圖像;然后與經過I)?3)步處理過的第1-ι幀圖像進行差分,將選定的目標圖像檢測區域ROI的差值記為NZ ;
[0015]將運動檢測差值NZ與設定的報警最小元素數量限定值NO作比較:若NZ < NO,則沒有運動存在,自動采集第i+Ι幀原始圖像,返回第3)步;若NZ多NO,則保存當前幀圖像,記為Il ;
[0016]對當前幀圖像和背景圖像^進行差分,將選定的目標圖像檢測區域ROI的差值記為Nb;
[0017]將目標檢測差值Nb與設定的報警最小元素數量限定值N ^ ’作比較:若Nb< Nc/,則沒有待檢測目標存在;若NB> N ^,則報警存在運動的目標,然后將存在運動目標的當前幀圖像存入數組MovingImages [i] [j]中;
[0018]4)根據圖像幀是否連續,對數組中的圖像幀進行分塊;
[0019](I)將目標圖像檢測區域ROI的橫坐標的最小值和最大值分別保存到對應的變量xin和xout中,然后讀取數組MovingImages [i] [j]中的第一幀原始圖像序列,記為多目標跟蹤統計計數的當前幀目標圖像;
[0020](2)定義計數變量PersonIn和PersonOut,分別記錄進入和離開的目標數量,初始化設置為0,并規定沿X方向為進,逆X方向為出;
[0021](3)對當前幀目標圖像進行基于差分法的自適應背景分割,將獲得的運動區域圖像進行二值化,用(與頭部大小相稱的)2 X 2結構算子對目標圖像的二值圖像進行形態學腐蝕,以去除偽目標(即非頭部圖像),再通過形態學膨脹還原實際目標的大小,獲得只含有運動目標連通域的二值圖像;
[0022](4)遍歷只含有運動目標連通域的二值圖像,獲取各個目標連通域Area[n] [i]的特征值,存入相應的鏈表中,其參數包括:圖像索引Num,目標索引Index,目標質心的橫坐標X和縱坐標Y,對應原圖像目標區域的灰度平均值Gray,目標區域矩形包圍窗口的長度Length和寬度Width,目標區域的面積大小Space ;
[0023](5)根據獲得的目標連通域Area[n] [i]的特征值,用Kalman濾波來預測下一幀圖像中目標連通域Area[n+1] [i]的質心運動位置p (xi,yi)的搜索區域;
[0024](6)采集下一幀圖像,對其進行步驟(2)的操作;
[0025](7)同步驟(3);
[0026](8)根據改進的代價函數,在當前幀圖像的Kalman預測搜素區域匹配下一幀圖像各目標連通域,計算當前幀目標連通域Area[n][i]與下一幀圖像對應搜索區域內所有目標連通域的代價函數值,并找出其中最小值(假設與下一幀目標Area[n+1] [j]代價函數值最小);
[0027](9)計算目標連通域Area[n] [i]和Area[n+1] [j]的質心距離d,并與質心距離限定值d0作比較。若d < d0,則目標連通域Area[n+1] [j]為目標連通域Area[n] [i]的后續,用目標連通域Area[n+1] [j]的特征值替代目標連通域Area[n] [i]的值,并對目標連通域Area[n+1] [j]做標記,建立目標鏈;
[0028](10)若d > d0,則目標連通域Area[n] [i]在下一幀中沒有后續,目標連通域Area[n] [i]可能離開圖像觀測窗口或者暫時靜止,需判斷目標連通域Area[n] [i]的質心坐標X的位置:
[0029]5)對分塊后的圖像幀進行統計計數;
[0030]具體如下:
[0031]5.1)將目標圖像檢測區域ROI的橫坐標的最小值和最大值分別保存到對應的變量xin和xout中,然后讀取數組MovingImages [i] [j]中的第一幀原始圖像序列,記為多目標跟蹤統計計數的當前幀目標圖像;
[0032]5.2)定義計數變量PersonIn和PersonOut,分別記錄進入和離開的目標數量,初始化設置為0,并規定沿X軸正方向為進,逆X軸正方向為出;
[0033]5.3)對目標連通域Area [n] [i]的質心坐標X的位置:
[0034]當X < xin時,如果目標連通域Area[n] [i]的運動軌跡的第一個質心橫坐標Xl ( xin,則說明該目標一直在預留區內徘徊,任何計數器不動作;如果Xl>xin,則說明目標離開跟蹤窗口,方向為出,出計數器PersonOut加I,并清除目標連通域Area [n] [i]的目標鏈;
[0035]當X>xout時,如果目標連通域Area[n] [i]的運動軌跡第一個質心坐標橫坐標Xl ^ xout,則說明該目標一直在預留區內徘徊,任何計數器不動作;如果XKxout,則說明目標進入跟蹤窗口,方向為進,進計數器PersonIn加1,并清除目標連通域Area[n] [i]的目標鏈;
[0036]當xin〈X〈xout,則說明目標連通域Area[n] [i]在檢測區內運動,其最后的運動方向不明,保留其特征值,等待下一幀中該目標的跟蹤;若下一幀中有匹配目標,則按上述步驟建立目標鏈,否則作為干擾,丟棄;
[0037]5.4)跟蹤窗口中的所有目標連通域進行匹配后,驗證當前幀中所有目標是否被跟蹤;若存在未被跟蹤的目標,則判斷其質心橫坐標是否滿足X < Xin和X>xout中的任意一個,滿足則表示有新目標出現,為其建立新的目標鏈,獲取并記錄特征值,轉入步驟4中的
(3);不滿足則判斷為干擾,丟棄;
[0038]5.5)當前幀圖像中所有目標識別計數結束后,計算當前進計數器PersonIn和出計數器的差值PersonOut的差值,記為當前客流量CustomCounting,當前幀圖像的目標識別計數結束;
[0039]5.6)依次對圖像數組MovingImages [i] [j]中每幀圖像的目標連通域進行識別和自動計數,直到圖像數組MovingImages [i] [j]中的圖像序列全部處理完畢,則整個目標識別計數結束。
[0040]按上述方案,所述采用目標鏈代價函數對多目標進行跟蹤匹配,步驟是:
[0041]I)獲取第k幀圖像中多個目標的三個特征值:目標質心坐標、平均灰度和目標區域的面積,其中目標i的特征值分別記為:Point[k] [i]、Gray[k] [i]和Space[k] [i];
[0042]2)利用Kalman濾波預測第k幀圖像中目標i在第k+Ι幀圖像中的搜索區域,遍歷目標i在第k+Ι幀圖像中的搜索區域,發現η個目標對象,獲取他們的特征值,其中目標j 的特征值分別記為:Point[k+l] [j]、Gray[k+l] [j]和 Space[k+1] [j];
[0043]3)分別求取第t+1幀圖像目標i的搜索區域中η個目標對象與第t幀圖像中目標i的3個特征值的變化程度,求取最大值分別記為MaxPoint、MaxGray和MaxSpace,具體計算公式如下:
[0044]MaxPoint [i] = Max (sqrt ((Point [k] [i].χ-Point [k+1] [m].x) * (Point [k] [i].χ-Point[k+1][m].x) + (Point[k][i].y-Point[k+1][m].y)*(Point[k][i].y-Point[k+1][m].y)))
[0045]MaxGray[i] =