摘 要: 針對視頻中運動行人遮擋問題,提出了一種基于區域特征的頂視運動行人檢測算法。首先結合三幀差分和背景減除算法檢測出所有可能的行人運動區域,然后找出運動區域的輪廓以及區域的外接矩形,并計算運動區域的面積,最后根據外接矩形的長寬比以及運動區域面積進行區域篩選,找出有效的運動區域,從而檢測出行人。實驗結果表明,該方法能夠快速準確地檢測出視頻中的行人。
關鍵詞: 區域特征; 運動行人檢測; 區域篩選; 頂視視頻
運動目標檢測與跟蹤是計算機視覺領域的一個重要課題,在視頻監控、交通監測、機器人導航和軍事等領域都有廣泛的應用[1]。目前國內外研究者進行了大量的運動目標檢測研究工作[1-3]。行人檢測在商業、國防、金融等多個領域發揮了重要作用,是行人跟蹤及行為理解等技術的基礎工作,近些年來對視頻序列中的人體行為分析已經成了計算機視覺研究的一個熱點和難點,因此對運動行人的檢測具有特殊的意義。
常用的運動區域檢測的算法主要有幀間差分、背景減除以及光流法[4]。光流法由于運算較復雜而不利于運動目標的實時檢測。背景減除算法因其快速簡捷而成為運動目標檢測的主要方法,但是對光照變化敏感,對室外的復雜場景檢測也是一個難題[5],因此該方法適用于背景較穩定情況下的運動目標的檢測。幀間差分根據連續兩幀圖像的差值得到中間幀運動目標的輪廓,能夠去除因為運動而顯露的背景影響,從而得到準確的運動目標輪廓,且對光照的適應性強。改進的幀間差分——三幀差分(對稱差分)將中間幀和前后幀的二值幀差圖像灰度邊緣重合部分作為中間幀運動目標輪廓,可有效消除運動目標遮擋和重現的紋理背景。
本文首先采用背景減除和三幀差分在行人頂視視頻序列檢測出運動區域,然后對參考文獻[2]中非剛性物體運動區域篩選方法進行改進,運用運動區域外接矩形的長寬比以及運動區域的面積特征進行區域篩選,實現了運動行人的快速檢測。
1 算法原理
頂視視頻的運動行人檢測可以解決運動行人的遮擋問題,且便于行人運動區域的分析,頭部和肩部作為主要的運動行人特征。通常情況下,采集的原始視頻序列圖像往往存在很嚴重的噪聲,因此先對原始圖像進行濾波處理。直接從采集到的彩色視頻幀中檢測運動目標運算量過大,而且運動目標檢測的目的是對運動目標定位、跟蹤以及計數,因此首先進行灰度變換,提高檢測的實時性。本文算法的整體流程如圖1所示。

1.1運動區域檢測
1.1.1背景減除
背景減除算法的基本思想是將當前視頻圖像與事先存儲或實時更新得到的背景圖像相減,根據一定的閾值來判斷背景和運動前景,從而得到運動區域,步驟為:
(1) 首先選取第一幀為背景幀Bk,此時k=1。采用如圖2所示的背景累積差分算法[2]更新背景圖像Bk。其中a∈{0,1}表示用當前幀更新背景的速率,a=0時,不更新背景;a=1時,背景被當前幀Ii代替。一般情況下a=0.006。


(4)重復步驟(2)、步驟(3)可得到一系列二值背景減除圖像BWi。
1.1.2 三幀差分
幀間差分是根據連續兩幀圖像的差值來判斷有無運動物體:

其中,T是用來對幀間差分圖像進行二值處理的閾值,相鄰幀差值大于該值時認為是運動前景,反之則認為是背景點。
由于相鄰幀間的時間間隔很短,可以克服光照變化、天氣變化等外界干擾,能夠去除因為運動而顯露的背景的影響,從而得到運動目標輪廓。對非剛性物體(如人)而言,不是物體的各個部分都同時發生移動,相鄰幀之間必然有重疊的部分,與重疊部分對應的幀差圖像中將出現“空洞”。
通常幀間差分檢測出來的運動區域比實際的運動區域大,通過對幀間差分進行改進得到三幀差分法,即選擇連續的三幀視頻序列Ii-1、Ii+1進行幀差處理[4]。具體過程為:首先按照式(4)分別計算Ii-1、Ii和Ii+1的二值幀間差分圖像,分別記為Ii,i-1和Ii+1,i,然后將Ii,i-1和Ii+1,i作與運算,兩者的公共部分即為中間幀Ii的運動輪廓:

1.2 區域輪廓提取及外接矩形標記
通過背景減除和三幀差分結合的方法提取出了運動區域,采用OpenCV函數庫中的輪廓查找函數cvFindContours可以找出運動區域的輪廓。通過設置method參數可以選擇提取的輪廓類型,本文選取method=CV_RETR_EXTERNAL,從而查找出區域的最外層輪廓。然后采用cvBoundingRect 函數計算輪廓點集最外面的矩形邊界并返回運動區域的外接矩形。
1.3 區域篩選
本文針對頂視視頻序列進行運動行人檢測,行人大部分都是上下(進出)行走,各個運動區域的面積(像素值為255的像素點的個數)也不相等,面積較小的運動區域可能是手、腳等部位的運動帶來的,而肩部(包含背部)的運動區域面積很大,而且肩部區域的外接矩形長寬比均小于1。因此,本文對參考文獻[2]中標記區域外接矩形算法進行改進,結合外接矩形的長寬比及運動區域面積篩選出具有代表性且更有效的肩部區域,從而檢測出運動行人。
2 實驗結果分析
本文算法在VC++6.0平臺上實現,結合OpenCV函數庫,對單目攝像機正上方采集的通道內的視頻序列進行處理[6],視頻畫面大小為320×240,視頻幀率為25幀/s。考慮到該環境下視頻背景簡單,光照變化也不大,結合觀察到的視頻信息特點,背景更新率取值為a=0.006,選擇固定閾值70和30分別對背景減除圖像和幀間差分圖像進行二值化。針對二值背景減除圖像,采用形態學開運算去除雜散的點和小的運動區域,同時平滑了運動區域的邊界。由于二值三幀差分圖像的內容是運動目標的輪廓,因此采用形態學閉運算進行處理,填充小的空洞,搭接鄰近的輪廓,提高運動輪廓的完整性。以視頻序列第72幀為例,運動區域檢測的實驗結果如圖3所示。

圖3(a)是更新后的背景幀,圖3(b)、圖3(c)和圖3(d)分別是視頻序列中的第71、72和73幀的灰度圖像,圖3(e)是幀間差分法得到的第72幀的運動輪廓,圖3(f)是三幀差分得到的第72幀的運動輪廓圖,較圖3(e)輪廓更細,且圖3(e)中的小的區域被去除了,因此圖3(f)表示的第72幀的運動輪廓更加精確。圖3(g)是通過背景減除法得到的二值圖像,圖3(h)是圖3(f)和圖3(g)相或得到的前景圖像,即背景減除和三幀差分算法相結合檢測到的運動區域。相比于圖3(g),圖3(h)區域面積更大,更具有代表性。對視頻序列中其他幀進行實驗分析亦可得到同樣的結論。
運動區域檢測出來后,再進行區域輪廓查找以及外接矩形標記。肩部運動區域外接矩形的長寬比應不大于1。對包含單一行人進出(單進單出)的視頻序列中前后各幀運動區域進行面積統計,統計結果如圖4所示。

當行人從剛進入監控范圍到監控區域中心時,運動區域面積將增至最大,表示有運動物體,當行人到達攝像機正下方時區域面積最大;然后區域面積減小至0,表示運動物體消失或靜止。根據面積統計結果和實際觀察的運動區域的情況,本文選擇700個像素點為面積閾值,對小于該值的區域不再作標記。結合外接矩形長寬比小于1的特征,對第72幀運動區域進行檢測,結果如圖5所示。

由圖5可以看出,圖5(a)中對手腳運動出現的較小運動區域也進行了標記,影響運動行人的跟蹤計數,圖5(b)中只對較大的肩部運動區域進行了標記。由此可以看出,本文對參考文獻[2]中區域查找和外接矩形標記算法改進后,篩選出了更有效的運動區域。對視頻序列中含有兩個行人(一進一出,同進同出)的情況進行實驗,結果表明本文算法也能準確檢測出運動行人,其中一幀的檢測結果如圖6所示。

本文通過背景累積差分更新背景減除法克服了光線微弱變化帶來的干擾,利用三幀差分檢測出更有效的運動區域輪廓,通過背景減除和三幀差分相結合的算法檢測出了運動區域,利用運動區域外接矩形的長寬比特征以及運動區域面積特征對檢測出的運動區域進行篩選,準確找出了代表行人的肩部運動區域,從而檢測出了運動行人。實驗結果表明,本文算法能快速準確地檢測出含有單一行人(單進單出)、含有兩個行人(一進一出,同進同出)視頻序列中的運動行人,為行人跟蹤及計數工作奠定了基礎。
參考文獻
[1] 余靜, 游志勝. 自動目標識別與跟蹤技術研究綜述[J].計算機應用研究, 2005,22(1):12-14.
[2] 吳曉陽.基于OpenCV的運動目標檢測與跟蹤[D].杭州:浙江大學,2008.
[3] 張建榮,姜昱明. 基于逆運動學的人體步態特征提取[J].計算機仿真,2005,22(5):172-175.
[4] 莫林, 廖鵬,劉勛. 一種基于背景減除與三幀差分的運動目標檢測算法[J]. 微計算機信息, 2009,25(4-3):
274-276.
[5] POWER P W, SCHOONEES J A. Understanding background mixture models for foreground segmentation[C].Proceedings Image and Vision Computing, New Zealand,2002:266-271.
[6] LEFLOCH D. Real time people counting system using video camera[D]. University of Bourgogne, 2007.
