摘 要:提出一種基于光流特征與序列比對的行為識別算法。首先利用分層光流提取視頻序列中的運動信息;然后用光流場的方向直方圖構造相應行為的模板庫和索引序列庫;最后用序列比對方法實現行為識別。實驗結果表明,該算法可在線進行人的典型行為識別,對目標尺度變化、小角度傾斜和旋轉具有一定程度的魯棒性。目前以該算法為核心的行為識別實驗系統對圖像尺寸為320×240的序列平均處理速度達到10 fps。
關鍵詞:行為識別;分層光流; 序列比對
中圖分類號:TP242文獻標志碼:A
文章編號:1001—3695(2007)03—0194—03
人的行為分析和識別正逐漸成為計算機視覺領域中研究的熱點[1,2]。由于人體運動是一個復雜的運動系統,具有很大的自由度和高度的非線性特點,以及關于行為、事件的定義有著不同的概念,如何選擇充分有效的表達方式來描述場景中人的行為是非常困難的。
行為分類可以簡單地被認為是時變數據的分類問題。J. K. Aggarwal和Sangho Park[3]綜述了高層視覺處理中的四個主要方面:①人體建模;②理解人的行為所需的各種層次的細節元素;③人的行為識別方法;④用相關領域的知識來理解場景。并介紹了上述四個方面一些具有代表性的方法,最后總結了不同的應用背景應該采用不同的方法。Fatih Porikli和Tetsuji Haga[4]開發了一個事件檢測框架,提取運動目標大量的動力學特征和形狀特征。首先使用譜聚類來自動獲得模型個數,然后訓練相應HMM(Hidden Markov Model)模型,實現行為識別及異常行為檢測。該算法的優點是自動聚類,但是生成模型并不具有實際的語義信息。Alexei A.Efros等人[5]提出了一種新的描述運動的時空模板。該算法先通過計算前景目標的光流場,然后將光流場映射到四個通道中,通過多次高斯濾波來泛化這四個通道以生成模板,最后用得到的時空模板來進行在線行為識別。以上算法的計算量均會隨著類別數的增加而急劇增大,很難實現在線實時行為識別。
本文提出了一種基于光流特征和序列比對的行為識別算法。首先把輸入的序列圖像映射成模板庫中對應的模板序號的序列,再通過序列比對的方式計算該序號序列與索引序列庫中序列的相似度,從而實現行為分類。當分類的類別數增加時,算法的計算復雜度并不會隨之顯著增加。整個算法的框架如圖1所示。
1 運動特征的提取
行為識別中一個重要的問題就是該提取什么樣的特征。序列圖像中可選取的特征是多種多樣的,如目標形狀特征:大小、顏色、輪廓等;動力學特征:速度、方向、加速度等。由于動力學特征在行為識別中比目標的形狀特征具有更好的魯棒性,算法選擇提取序列圖像中的光流特征。光流法不需要預先獲取圖像背景,而且計算結果僅僅依靠連續幀的相對運動,不受復雜環境的影響,因而在基于對象的運動估計、運動檢測和跟蹤等領域都有廣闊的應用前景。
1.1 輸入視頻的預處理
光流的計算具有較高的時間復雜度,且對噪聲比較敏感,所以需要對輸入圖像進行預處理,以便減少光流計算量并提高光流計算的準確性。
首先對輸入視頻采用時間差分法來確定目標的運動區域。由于面積濾波器通過標記二值圖像來濾波,可以去除隨機噪聲并很好地保留運動目標的輪廓,選用速度較快的四連通域的面積濾波器來對所得到的二值圖像進行去噪,以確定出運動區域,作為以后光流計算的掩模,以減少計算量。最后用中值濾波對原圖像進行去噪處理,以提高光流計算的準確性。
1.2 光流特征的計算
光流的基本計算式(1)的建立是以兩幀圖像亮度是恒定的為前提,用Taylor級數一階展開;式(2)中的 一階差分,使得光流計算受限于兩幀圖像間的運動不能大于一個像素。所以只有當相鄰兩幀間的運動不大于一個像素時,標準光流算法才比較可靠。
但是很多實際情況并不滿足這個條件,這樣計算得到的光流場精度比較低。引入金字塔式多分辨率結構由粗糙到精確來計算光流場[6]可以解決這個問題,它是目前光流計算發展的主要趨勢。算法的框圖如圖2所示。
圖像均是其前級圖像低通濾波所得到的。G0表示輸入原圖像,作為Gaussian金字塔的底層;Gi表示第i層圖像,其每一像素值均可用高斯窗口函數w對第i-1級矩陣進行加權平均而得到,依此類推,圖像大小以1/4倍率減小。設圖像元素的橫縱坐標分別用x、y表示,則層間的運算可以表示為:
在計算得出金字塔圖像后,就可以用多分辨結構的光流來計算光流場了。其計算流程如下[6]:
根據實際需要,本文選用了三層金字塔圖像來計算相鄰兩幀間的光流場。當相鄰兩幀圖像間的運動不超過五個像素時,算法能獲得較好的精度。
1.3 光流矢量的量化
眾所周知,一個矢量包括了幅值和方向兩種信息。由于本文的時空模板是由按時間順序排列索引號組成的序列構成,序列的長短間接體現了運動速度的大小,在矢量量化時只考慮了矢量方向。將對應每個圖像像素的光流矢量方向的特征按照坐標平面360°逆時針方向等間隔地分為16等分,而在光流矢量為0的像素量化編碼仍然為0,整個光流場矢量量化為0—16(圖3)。再對量化后的光流場進行中值濾波,以消除一些光流計算中產生的誤差(圖4)。
2 公共模板庫和索引序列庫的生成以及序列比對
2.1 公共模板庫和索引序列庫的生成
一個有意義的動作通常存在于一個視頻序列中。對于該片段的每一個相鄰幀,采用前述方法得到幀間量化的光流場。為了更精確地描述量化后的光流場,把量化后的光流場按運動目標的中垂線切割成兩塊,分別計算各個分塊的方向直方圖。如圖3所示的零矢量不包含運動信息,所以將兩個分塊方向直方圖的零矢量進行合并,形成了維數為33=16×2+1的數組a[33]。一個視頻序列就可以得到一個有序的分塊方向直方圖序列,包含了這個視頻序列運動信息的統計特征。
訓練時,模塊庫的更新和典型行為的索引序列生成步驟如下:
(1)輸入某種典型行為的序列圖像。
(2)計算得到第i幀的光流場,生成對應的分塊方向直方圖ai[33]。
(5)重復(2)—(4)直至結束,最終得到典型行為的序列圖像所對應模板庫中的索引序列。將此索引序列加入到索引序列庫中。
(6)重復(1)—(5),生成最終的公共模板庫和索引序列庫。
2.2 在線序列比對
在訓練中生成了公共模板庫和對應典型行為的索引序列庫。在線識別時,通過計算輸入圖像序列的相鄰兩幀間光流場得到分塊方向直方圖ai[33];按照式(6)在模板庫中找出該分塊方向直方圖最為相似的模板來進行標志。
輸出對應公共模板庫的在線子序列。借用生物信息學中序列比對的方法來計算在線子序列和索引序列在長度不同時的相似度。
兩條序列的比對是指這兩條序列中各個字符的一種一一對應關系。序列的比對是一種關于序列相似性的定性描述。最優比對揭示兩條序列的最大相似程度,指出序列間的根本差異。為了解決字符插入和刪除問題,引入字符編輯操作(Edit Operation)的概念[8],通過編輯操作將一個序列轉換為一個新序列。用一個新的字符“—”代表空位(或空缺,Space),并定義下述精簡的字符編輯操作:
如圖5所示,參考序列5154225在進行字符編輯操作后被變為—515—4225;找出兩個序列的最大公共子序列5154225。最大公共子序列長度等于參考序列的長度,所以它們的相似度為1。
3 仿真實驗結果分析
由于行為識別算法是建立在前面的環境建模、運動檢測、分割、人體跟蹤、姿態恢復等步驟結果基礎之上的,各個步驟結果誤差都會影響識別精度。為了單純驗證本算法的有效性,回避前端處理的一些難題,實驗系統選擇在簡單場景中驗證本算法。算法是在VC++ 6.0下實現的,通過DirectShow進行視頻的編/解碼。計算機配置為P4 3.0GHz,512MB內存,視頻大小為320×240(Pixels)。實驗選擇了四種典型動作序列(圖6),生成了一個模板庫和四個參考序列。
在生成了公共模板庫和索引序列庫后,用一段600 f的視頻測試本系統。由于實驗系統的計算速度并沒有達到視頻格式的幀速,DirectShow會自動進行跳幀處理,計算次數與視頻幀號并不對應,只是具有時間的先后順序。圖7為行為識別系統界面,四個進度條對應了四種典型動作,進度條的長短表明了當前輸入圖像序列與參考序列之
間的相似度。很明顯從圖7看出系統正確地識別出了當時(對應圖8的第125計算次數)目標的行為是舉左手。輸入圖像序列與索引模板庫中的四個參考序列之間的相似度如圖8所示。實驗系統輸出的判別結果與手工標定比較如圖9所示??梢钥闯鲈跍y試這段視頻時,實驗系統只是在第50次計算到第100次計算時由于目標的運動速度與參考序列的差別比較大,且下蹲與跳起這兩個動作在局部的相似性,造成識別結果與實際不相符。
換了一段不同人的視頻測試,本實驗系統仍然獲得了較好的效果。所以本算法對于小角度傾斜和旋轉具有一定程度的魯棒性。由于實驗系統采用基于光流特征和序列比對的方式進行行為識別,算法的計算復雜度大大降低,實現了在線行為識別。
4 結束語
本文提出了一種基于光流特征和序列比對的行為識別算法。通過提取序列圖像中相鄰兩幀的光流場,用量化光流場得到的分塊方向直方圖來構造出一個公共的模板庫和對應模板庫的索引序列庫,借助與生物信息學中的序列比對方式來比較測試序列與模板索引序列的相似程度,從而判斷兩個視頻片段在運動內容上的相關性。實驗證明了該算法的快速性和有效性。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。