張曉宇 彭四偉
摘 要:介紹一種結(jié)合背景差分法和瞬時差分法的在視頻序列中識別運動目標(biāo)算法。該算法利用瞬時差分法得到當(dāng)前幀中運動目標(biāo)的輪廓信息,在更新背景模型時不更新運動目標(biāo)輪廓內(nèi)區(qū)域,避免了由運動目標(biāo)引起的背景模型更新誤差。給出用OpenCV實現(xiàn)算法的具體過程和關(guān)鍵代碼。實驗結(jié)果表明,該方法可以實現(xiàn)視頻序列中運動目標(biāo)的識別,具有實時性,并能得到較好的識別結(jié)果。
關(guān)鍵詞:運動目標(biāo)識別;背景差分法;瞬時差分法;OpenCV
中圖分類號:TP273
0 引 言
運動目標(biāo)的識別就是對包含運動信息的視頻序列運用適當(dāng)?shù)募夹g(shù)進(jìn)行處理,把與背景存在相對運動的前景區(qū)分開的過程。它是計算機(jī)視覺信息提取中的一個重要問題,也是更高層次視頻分析,如基于對象的視頻編碼、目標(biāo)跟蹤、運動分析基礎(chǔ)。目前,運動目標(biāo)識別主要有三種方法:背景差分法、瞬時差分法和光流法。背景差分法可以得到比較完整的運動目標(biāo)信息,但是背景模型的獲取和更新比較困難。瞬時差分法容易在目標(biāo)內(nèi)部產(chǎn)生空洞,不能得到完整的目標(biāo)信息。光流法計算比較復(fù)雜,且抗噪性能差,如果沒有特定的硬件支持,一般很難用于運動目標(biāo)識別的實時性操作。
在此介紹一種將背景差分法和瞬時差分法相結(jié)合的運動目標(biāo)識別算法,并給出基于OpenCV實現(xiàn)算法的過程和實驗結(jié)果。
1 算法思想
背景差分法是利用當(dāng)前圖像與背景圖像的差分來識別出運動目標(biāo)的方法。背景模型的獲取和更新是該方法中的關(guān)鍵技術(shù)。一種簡單的獲取背景圖像的方法是當(dāng)場景中無任何目標(biāo)出現(xiàn)時捕獲背景圖像,這種人工的非自適應(yīng)方法獲取的背景圖像僅適用于短時間內(nèi)的視頻監(jiān)控。目前大多數(shù)算法已經(jīng)放棄這種非自適應(yīng)的背景圖像估計方法。當(dāng)場景環(huán)境不是很復(fù)雜時,可以使用統(tǒng)計濾波完成場景中背景圖像的估計,大多數(shù)情況下都可以得到正確的背景估計圖像,但是當(dāng)場景中有個別部分做無規(guī)則運動時,會引起場景中像素值不斷變化,從而引起估計誤差?;诟咚菇y(tǒng)計模型的背景估計方法在有部分區(qū)域不斷變化的場景中也能比較準(zhǔn)確地估計出背景模型,但是它的計算比較復(fù)雜,加上識別過程中其他操作也可能無法滿足實時性需求。
瞬時差分法是在視頻序列中兩個相鄰幀間采用基于像素的時間差分,并且閾值化來提取出運動目標(biāo)的方法。即將相鄰的兩幀圖像做逐像素相減運算,并設(shè)定閾值,若相減的值大于閾值,則將其看作前景圖像(運動目標(biāo));否則看作是背景圖像。瞬時差分法對于動態(tài)環(huán)境的適應(yīng)性較強,不需要獲取背景圖像。當(dāng)相鄰兩幀圖像的紋理、灰度等信息比較接近時,這種方法通常不能完整地檢測到目標(biāo)的具體內(nèi)容,在物體內(nèi)部產(chǎn)生空洞。但是它可以較準(zhǔn)確地得到運動物體的外圍輪廓。
在此將使用一種背景差分法和瞬時差分法相結(jié)合的方法。首先根據(jù)一定數(shù)量的視頻序列,采用基于高斯統(tǒng)計模型的方法獲得背景圖像。在后續(xù)處理中,對于每一幀的視頻圖像,首先用瞬時差分法識別出運動目標(biāo)的輪廓,然后用這幀圖像運動目標(biāo)輪廓以外的區(qū)域?qū)Ρ尘澳P瓦M(jìn)行基于統(tǒng)計濾波的更新。這樣就可以減少場景中運動目標(biāo)對更新背景模型的影響,同時保證了系統(tǒng)運行時間的實時性,也可以得到較完整的目標(biāo)識別信息。
2 算法實現(xiàn)
根據(jù)前文的算法思想,可以得到系統(tǒng)的流程圖如┩1所示。
開放源代碼的計算機(jī)視覺類庫OpenCV(Open Source Computer Vision Library)是由英特爾公司位于俄羅斯的研究實驗室所開發(fā)的一套可免費獲得,并由┮恍┆狢函數(shù)和C++類所組成的庫,用來實現(xiàn)一些常用的圖像處理及計算機(jī)視覺算法[7[CD*2]10]。下面給出利用OpenCV實現(xiàn)算法的具體過程和關(guān)鍵部分的代碼:
(1) 捕獲視頻幀
定義捕捉源:
(2) 基于高斯統(tǒng)計估計背景模型
定義高斯背景模型:
將高斯背景模型的背景圖像復(fù)制到事先定義的背景圖像pBkImg 中:
(3) 使用瞬時差分法獲得不包含運動區(qū)域的當(dāng)前幀,并更新背景。當(dāng)前幀pFrame和前一幀pFrame0做差分,結(jié)果放在差分圖像diff中,并二值化:
接下來要做的操作是,找到差分圖像中的輪廓,得到他們的外接矩形。將面積小的矩形視為噪音拋棄,剩下的則視為運動目標(biāo)。同時設(shè)置當(dāng)前幀pFrame和背景pBkImg的ROI為運動目標(biāo)的外接矩形。先將當(dāng)前幀的ROI置0,再對當(dāng)前幀與背景的ROI進(jìn)行邏輯┗(or)運算。這樣,對于運動目標(biāo)所在區(qū)域,當(dāng)前幀和背景的圖像信息是一樣的,也就達(dá)到了消除運動目標(biāo)對背景更新的影響目的。
這段代碼如下所示:
用上述過程得到不包含運動目標(biāo)信息的當(dāng)前幀更新背景模型:
(4) 進(jìn)行背景差分,得到當(dāng)前幀運動目標(biāo)識別結(jié)果的二值圖像pFrImg:
3 實驗結(jié)果
根據(jù)上述算法思想和實現(xiàn)過程,使用VC++6.0和OpenCV 1.0實現(xiàn)運動目標(biāo)的識別。經(jīng)過計算,該算法處理每一幀圖像的時間大約是16 ms,可以滿足實時性系統(tǒng)的要求。使用該算法對一段交通監(jiān)控圖像進(jìn)行運動目標(biāo)的識別,結(jié)果如圖2所示。其中,圖2(a)是當(dāng)前幀圖像,圖2(b)是不包含運動信息的當(dāng)前幀圖像,用矩形框標(biāo)注出了由幀間差分檢測到運動目標(biāo)的位置,┩2(c)是當(dāng)前的背景模型,圖2(d)是背景差分的結(jié)果。オ
4 結(jié) 語
由上述實驗結(jié)果可以看出,本文介紹的算法可以較準(zhǔn)確地得到背景圖像,并且實現(xiàn)運動目標(biāo)的識別。
系統(tǒng)尚需改進(jìn)的地方有對運動目標(biāo)邊緣的檢測不夠清楚;如果可以加入陰影的檢測和去除,應(yīng)該會取得[LL]更好的識別效果。這些將是進(jìn)一步研究的工作。
參 考 文 獻(xiàn)
[1]劉雪.基于圖像序列的運動目標(biāo)檢測與跟蹤算法研究[D].山東:山東大學(xué),2007.
[2]許志良,周智恒,曹英烈,等.關(guān)于運動目標(biāo)檢測的發(fā)展現(xiàn)狀研究[J].移動通信,2008(6):35[CD*2]38.
[3]丁忠校.視頻監(jiān)控圖像的運動目標(biāo)檢測方法綜述[J].電視技術(shù),2008,32(5):72[CD*2]76.
[4]尹彥,耿兆豐.基于背景模型的運動目標(biāo)檢測與跟蹤[J].微計算機(jī)信息,2008,24(11):298[CD*2]300.
[5]趙占杰,林小竹,張金燕.基于背景重建的運動目標(biāo)檢測算法[J].北京石油化工學(xué)院學(xué)報,2008,16(2):27[CD*2]30.
[6]肖麗軍,于哲舟,周栩,等.基于對稱差分算法的視頻運動目標(biāo)分割[J].吉林大學(xué)學(xué)報:理學(xué)版,2008,46(4):691[CD*2]696.
[7]賈小軍,喻擎蒼.基于開源計算機(jī)視覺處理庫OpenCV的圖像處理[J].計算機(jī)應(yīng)用與軟件,2008,25(4):276[CD*2]278.
[8]馬桂珍,朱玲贊,段麗.基于OpenCV的視頻應(yīng)用程序的開發(fā)方法[J].現(xiàn)代電子技術(shù),2007,30(4):78[CD*2]80.
[9]李振偉,陳翀,趙有.基于OpenCV的運動目標(biāo)跟蹤及其實現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(20):128[CD*2]131.
[10]劉瑞禎,于仕琪.OpenCV教程基礎(chǔ)篇[M].北京:北京航空航天大學(xué)出版社,2007.
作者簡介 張曉宇 女,1983年出生,遼寧人,碩士研究生。研究方向為視頻運動目標(biāo)識別與跟蹤。
彭四偉 男,1970年出生,湖北人,副教授。研究方向為過程工業(yè)監(jiān)控、編譯技術(shù)應(yīng)用、并行計算。