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