尹俊超, 劉直芳,2
(1.四川大學(xué)計(jì)算機(jī)學(xué)院,四川成都610064;2.四川大學(xué)視覺合成圖形圖像技術(shù)國防重點(diǎn)學(xué)科實(shí)驗(yàn)室,四川成都610064)
運(yùn)動目標(biāo)檢測跟蹤技術(shù)在航空航天遙感、生物醫(yī)學(xué)、工業(yè)自動化生產(chǎn)、軍事公安目標(biāo)偵查、智能機(jī)器人、多媒體電視制作、文化藝術(shù)等領(lǐng)域都有著非常廣泛的應(yīng)用,如由卡耐基梅隆大學(xué)(CMU)的機(jī)器人研究中心和Sarnoff公司歷時(shí)3年(1997--1999)共同開發(fā)完成的視頻檢測追蹤(VSAM)系統(tǒng),用于自動視頻檢測與追蹤,該系統(tǒng)既可以用到軍事上,也可以用在日常視頻監(jiān)控方面,這種系統(tǒng)的優(yōu)勢在于削減了人力資源的開銷,具有較大的商業(yè)價(jià)值。
近幾年,國內(nèi)外的學(xué)者在運(yùn)動目標(biāo)檢測跟蹤問題上,已經(jīng)提供了很多有效的方法,但是很多算法不能同時(shí)滿足實(shí)時(shí)性和精確性的要求,特別是在復(fù)雜場景下,當(dāng)多目標(biāo),遮擋,停走,光線變化的情況發(fā)生時(shí),目標(biāo)檢測和跟蹤實(shí)現(xiàn)起來會變得比較復(fù)。目前,常用的目標(biāo)檢測算法有背景差,幀間差,光流法,擴(kuò)展的EM算法,能量運(yùn)動檢測,基于數(shù)學(xué)形態(tài)學(xué)的檢測等[1];常用的目標(biāo)跟蹤算法有基于區(qū)域的跟蹤,基于運(yùn)動估計(jì)的跟蹤,基于目標(biāo)模型的跟蹤和基于主動輪廓的跟蹤等。
作者試圖基于現(xiàn)有的檢測和跟蹤算法,利用OpenCV圖形圖像開發(fā)庫,通過對各種算法的比較分析,針對不同環(huán)境條件,尋求一種解決多運(yùn)動目標(biāo)檢測跟蹤的方案,能夠克服目標(biāo)部分被遮擋,停停走走和光線變化等因素對實(shí)驗(yàn)結(jié)果的影響,假設(shè)在本文實(shí)驗(yàn)中攝像頭是標(biāo)定的。
本文主要實(shí)現(xiàn)的目標(biāo)是對場景中的多個(gè)運(yùn)動目標(biāo)進(jìn)行檢測并跟蹤,首先要提取出運(yùn)動的目標(biāo),其次提取運(yùn)動目標(biāo)特征(顏色,紋理,形狀),實(shí)施跟蹤算法,標(biāo)記出運(yùn)動目標(biāo)軌跡。
OpenCV是一個(gè)開源的計(jì)算機(jī)視覺庫[2],它采用C/C++語言編寫,可以運(yùn)行在Linux/Windows/Mac等操作系統(tǒng)上。Open-CV還提供了Python,Ruby,Matlab以及其它語言的接口。Open-CV的設(shè)計(jì)目標(biāo)是執(zhí)行速度盡量快,主要關(guān)注實(shí)時(shí)應(yīng)用。它采用優(yōu)化的C代編寫,能夠充分利用多核處理器的優(yōu)勢。
OpenCV主體分為5個(gè)模塊,CV模塊包含基本的圖形處理函數(shù)和高級的計(jì)算機(jī)視覺算法。MLL是機(jī)器學(xué)習(xí)庫,包含一些基于統(tǒng)計(jì)的分類和聚類工具。HighGUI包含圖像和視頻輸入/輸出的函數(shù)。CXCroe包含 OpenCV的一些基本數(shù)據(jù)結(jié)構(gòu)和相關(guān)函數(shù)[2]。
首先通過檢測算法從場景中檢測出運(yùn)動目標(biāo),提取目標(biāo)特征信息(如顏色信息),與之前檢測出的目標(biāo)做特征比對,如果是新目標(biāo)則加入到跟蹤序列中,如果是舊目標(biāo)則舍棄。目標(biāo)跟蹤階段,對跟蹤序列中的目標(biāo)采用跟蹤算法,獲得其運(yùn)動軌跡。關(guān)鍵點(diǎn)在于目標(biāo)的特征信息提取和匹配,這是決定目標(biāo)跟蹤效果的重大因素。系統(tǒng)整體框架如圖1所示。
圖1 系統(tǒng)整體框架
由于本實(shí)驗(yàn)是研究標(biāo)定攝像頭下的運(yùn)動目標(biāo)檢測,背景的變化不是很大,所以考慮采用幀間差法和背景差法。背景差是一種適合靜態(tài)場景的運(yùn)動目標(biāo)檢測方法,它首先通過前幾幀圖像重構(gòu)背景圖像 (如果已有純背景圖像則不需要此操作),再將當(dāng)前幀和背景圖像做差,再對差圖進(jìn)行處理。幀間差通過視頻序列中的相隔一幀或幾幀兩幅圖像做差運(yùn)算來檢測圖像中的運(yùn)動區(qū)域,這種方法適用于動態(tài)變化的場景。然而這種方法也有一定的局限性,高速運(yùn)動的目標(biāo)采用此方法會產(chǎn)生空洞或目標(biāo)被拉長,目標(biāo)靜止時(shí)無法檢測到目標(biāo)。圖2表示了采用這兩種方法獲取目標(biāo)的流程,圖(a)、圖(b)分別為背景差和幀間差提取目標(biāo)。
背景重構(gòu)就是采用圖像分割技術(shù)提取出不包含目標(biāo)對象的背景技術(shù),其關(guān)鍵是如何實(shí)時(shí)更新背景模型以適應(yīng)背景的變化。本文實(shí)驗(yàn)中采用混合高斯背景模型來重構(gòu)和更新背景。
根據(jù)文獻(xiàn)[3]介紹的方法,本文用K(3≤K≤5)個(gè)高斯分布函數(shù)來表示場景中的每一個(gè)像素點(diǎn)的分布,那么特定像素點(diǎn)在時(shí)間N的像素值可以被表示為
圖2 運(yùn)用減法提取目標(biāo)框架
通過以上方法得到背景圖像之后做差得到差圖像,然后對差圖進(jìn)行一系列的圖像處理,包括:平滑處理,形態(tài)學(xué)膨脹,腐蝕,二值化操作,輪廓提取。但是并不是所有的輪廓都是由目標(biāo)產(chǎn)生的,有些是目標(biāo)的子輪廓或者是噪聲產(chǎn)生的輪廓,因此必須對輪廓進(jìn)行篩選,淘汰偽目標(biāo)的輪廓,把目標(biāo)輪廓篩選出來后加入到跟蹤隊(duì)列。
目標(biāo)跟蹤是在已知目標(biāo)圖像或已知目標(biāo)特征信息(顏色,形狀,紋理等)的前提下,利用目標(biāo)有效特征值,使用適當(dāng)?shù)钠ヅ渌惴?,在序列圖中尋找與目標(biāo)模板相似圖像的位置。
MeanShift算法在一組數(shù)據(jù)的密度分布中尋找局部極值,對數(shù)據(jù)局部窗口中的點(diǎn)進(jìn)行處理,處理完成后再移動窗口,重復(fù)直到窗口的位置不能再移動過為止,如圖3所示。
圖3 MeanShift算法流程
CamShift(continuously apaptive mean-shift),與 MeanShift不同的是它的搜索窗口會自動調(diào)整尺寸[4],它對所有幀作Mean-Shift運(yùn)算,并將上一幀的結(jié)果(即窗口的中心和大小)作為下一幀MeanShift算法的窗口的初始值,如此迭代下去,就可以實(shí)現(xiàn)對目標(biāo)的跟蹤如果有一個(gè)易于分割的分布,此算法可以根據(jù)目標(biāo)在靠近或遠(yuǎn)離攝像機(jī)時(shí)目標(biāo)尺寸的變化自動調(diào)節(jié)窗口尺寸。
結(jié)合以上所述的運(yùn)動目標(biāo)檢測跟蹤算法,在OpenCV平臺下實(shí)現(xiàn)目標(biāo)的檢測跟蹤流程如圖4所示。
在OpenCV運(yùn)動目標(biāo)檢測算法的實(shí)現(xiàn)主要是調(diào)用現(xiàn)有的文件,本文主要的工作是將背景重構(gòu)模型函數(shù)增加在目標(biāo)檢測算法中,即定義了CvGaussBGModel類用于存放高斯混合模型的各個(gè)參數(shù),調(diào)用此函數(shù)構(gòu)造混合高斯背景模型。
圖4 實(shí)現(xiàn)目標(biāo)檢測跟蹤的流程
在運(yùn)動目標(biāo)跟蹤中,主要利用OpenCV中CamShift算法來實(shí)現(xiàn),跟蹤過程中的關(guān)鍵就是生成色彩概率分布圖,如圖5所示。用在cvCalcBackProject處理中的模板是目標(biāo)圖像色調(diào)(HUE)的直方圖,而直方圖可以看作是一種概率分布圖。在處理前,目標(biāo)圖像中的每一個(gè)像素的值描述的在這一點(diǎn)的顏色信息,而處理后,圖像中每一個(gè)像素的值就變成了這個(gè)顏色信息出現(xiàn)在此處的可能性的一種離散化的度量,出現(xiàn)的可能性大,像素值就大,反之則小。這樣就為后面的匹配和跟蹤提供了線索。
圖5 目標(biāo)色彩概率分布
本文實(shí)驗(yàn)的數(shù)據(jù)來源是攝像頭拍攝到的實(shí)驗(yàn)室固定場景視頻序列圖像和來自網(wǎng)上的PETS 2006 Benchmark Data[16]。背景差的關(guān)鍵步驟在于背景圖像的重構(gòu),通過CvGaussBGStat-ModelParams結(jié)構(gòu)體可以設(shè)置各個(gè)參數(shù)的值,本文實(shí)驗(yàn)采用的默認(rèn)參數(shù),如表1所示。
通過表1和圖6可發(fā)現(xiàn),混合高斯模型有方差和均值兩個(gè)參數(shù)決定,對均值和方差的學(xué)習(xí),采取不同的學(xué)習(xí)機(jī)制,將直接影響到模型的穩(wěn)定性、精確性和收斂性。由于場景可能是變化的,需要對高斯模型中方差和均值兩個(gè)參數(shù)實(shí)時(shí)更新。為提高模型的學(xué)習(xí)能力,改進(jìn)方法對均值和方差的更新采用不同的學(xué)習(xí)率;為提高在繁忙的場景下,大而慢的運(yùn)動目標(biāo)的檢測效果,引入權(quán)值均值的概念,建立背景圖像并實(shí)時(shí)更新,然后結(jié)合權(quán)值、權(quán)值均值和背景圖像對像素點(diǎn)進(jìn)行前景和背景的分類,這對背景的提取精度起很大的作用。
圖6 不同參數(shù)下重構(gòu)的背景圖像
通過圖7實(shí)驗(yàn)結(jié)果不難看出,背景差法的優(yōu)點(diǎn)是得到的目標(biāo)區(qū)域連通性好,缺點(diǎn)是它對背景變化比較敏感,細(xì)小的背景變化都會產(chǎn)生很大的噪聲,同時(shí)提取純背景圖像要花費(fèi)一定的時(shí)間。通過圖8可以發(fā)現(xiàn),幀間差的優(yōu)點(diǎn)是運(yùn)算簡單,算法效率高,實(shí)時(shí)性較好,可用于動態(tài)背景下的運(yùn)動目標(biāo)檢測,缺點(diǎn)是是不適用于運(yùn)動目標(biāo)走走停停的情況,當(dāng)運(yùn)動目標(biāo)速度較慢或較大時(shí),得到的目標(biāo)輪廓可能會不完整或沿著目標(biāo)的運(yùn)動方向被拉長。
圖7 背景差目標(biāo)檢測效果
圖8 幀間差目標(biāo)檢測效果
運(yùn)動目標(biāo)的跟蹤算法的種類有很多,不同的算法在不同的環(huán)境下精確度,魯棒性不同,CamShift算法可以適應(yīng)目標(biāo)大小的變化,前提是目標(biāo)的顏色特征比較明顯并且不會發(fā)生大的變化,圖9是跟蹤效果圖,綠色框里的目標(biāo)顏色單一,所以CamShift算法跟蹤不到,體現(xiàn)了這種算法的局限性。
圖9 跟蹤效果
當(dāng)然目標(biāo)運(yùn)動過程中可能會發(fā)生很多情況,如目標(biāo)被障礙物部分遮擋或者目標(biāo)之間相互遮擋,如圖9里面的目標(biāo)被柱子遮擋之后就失去了跟蹤。這些問題作者將繼續(xù)研究。
運(yùn)動目標(biāo)的檢測跟蹤算法的種類有很多,不同的算法在不同的環(huán)境下魯棒性不同,本實(shí)驗(yàn)中采用了幀間差和背景差作為目標(biāo)檢測的方法,主要難點(diǎn)在于當(dāng)多個(gè)目標(biāo)存在于場景中時(shí)如何判斷哪一個(gè)或一些是第一次出現(xiàn)的目標(biāo),本實(shí)驗(yàn)采用目標(biāo)面積,坐標(biāo)篩選法,認(rèn)為從場景最上面出現(xiàn)的目標(biāo)視為新目標(biāo),并加入到跟蹤隊(duì)列。檢測是跟蹤的前提,檢測結(jié)果的精確性直接影響到跟蹤的可靠性。CamShift算法可以適應(yīng)目標(biāo)大小的變化,前提是目標(biāo)的顏色未發(fā)生大的變化,當(dāng)然目標(biāo)運(yùn)動過程中可能會發(fā)生很多情況,如目標(biāo)被障礙物部分遮擋或者目標(biāo)之間相互遮擋,針對這些問題學(xué)者們在努力尋求解決辦法。本課題只是對目標(biāo)檢測跟蹤基本原理和方法的實(shí)驗(yàn)驗(yàn)證,并對其結(jié)果進(jìn)行了理論性和功能性上的分析。
表1 不同參數(shù)下重構(gòu)背景的效果比較
[1]王江濤.基于視頻的目標(biāo)檢測,跟蹤及行為識別研究[D].南京:南京理工大學(xué)模式識別與智能系統(tǒng),2008.
[2]Gary Bradski,Adrian Kaebler.學(xué)習(xí) OpenCV(中文版)[M].北京:清華大學(xué)出版社,2009:100-380.
[3]Stauffr C,Grimson W.Adaptive background mixture models for real-time tracking[C].Ft Collins,CO,USA:Proceeding of Computer Visio and Pattern Recognition,1999:246-252.
[4]BorgM,Thirde D,Ferryman J,et al.Videosurveillance for aircraft activity monitoring[C].IEEE Conference on Advanced Video and Signal Based Surveillance,2005.
[5]熊令,洪健.基于OpenCV的視頻對象的運(yùn)動檢測[J].電子測試,2009,25(9):91-93.
[6]黃鑫娟,周潔敏,劉伯揚(yáng).自適應(yīng)混合高斯背景模型的運(yùn)動目標(biāo)檢測方法[J].計(jì)算機(jī)應(yīng)用,2010,30(1):71-74.
[7]宋濤,馬宇峰,藺海峰.OpenCV在目標(biāo)跟蹤中的應(yīng)用及實(shí)現(xiàn)[J].計(jì)算機(jī)與網(wǎng)絡(luò),2009,24(2):52-56.
[8]岡薩雷斯.數(shù)字圖像處理[M].北京:電子工業(yè)出版社,2007.
[9]陳兆學(xué),鄭建立,施鵬飛.基于Mean Shift方法的視頻車輛檢測與分割[J].上海理工大學(xué)學(xué)報(bào),2007,29(2):195-199.
[10]朱虹.數(shù)字圖像處理基礎(chǔ)[M].北京:科學(xué)出版社,2005:168-171.
[11]張旭光,孫巍.復(fù)雜背景下運(yùn)動目標(biāo)的提取[J].光電工程,2006,33(4):10-131.
[12]覃劍.視頻序列中的運(yùn)動目標(biāo)檢測與跟蹤研究[D].重慶:重慶大學(xué)通信與信息系統(tǒng),2008.
[13]王爽,段紅,黃友銳.基于改進(jìn)的活動輪廓模型在圖像分割中的應(yīng)用[J].微計(jì)算機(jī)信息,2008,25(1):274-275.
[14]張宏志,張金換,岳卉,等.基于CamShift的目標(biāo)跟蹤算法[J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27(11):2012-2014.
[15]劉雪,常發(fā)亮,王華杰.基于改進(jìn)Camshift算法的視頻對象跟蹤方法[J].微計(jì)算機(jī)信息,2007,24(21):297-298.
[16]James M Ferryman.Ninth IEEE international workshop on performance evaluation of tracking and surveillance(PETS 2006)[OL].http://www.cvg.reading.ac.uk/PETS2006/data.html,2006.