摘 要: 提出一種基于MPEG-4的運(yùn)動(dòng)目標(biāo)檢測(cè)跟蹤的方法,通過(guò)對(duì)MPEG-4編碼中的運(yùn)動(dòng)矢量進(jìn)行閾值分割、形態(tài)濾波等,實(shí)現(xiàn)運(yùn)動(dòng)物體的檢測(cè),并在ADSP-BF533上進(jìn)行實(shí)現(xiàn),給出實(shí)驗(yàn)結(jié)果。
關(guān)鍵詞: 視頻監(jiān)控 運(yùn)動(dòng)檢測(cè) ADSP-BF533 MPEG-4
1 研究現(xiàn)狀
目前國(guó)內(nèi)數(shù)字化視頻監(jiān)控系統(tǒng)發(fā)展迅速,嵌入式系統(tǒng)更是由于其成本低、穩(wěn)定性高、可維護(hù)性強(qiáng)等優(yōu)勢(shì)而成為新的發(fā)展方向。就壓縮技術(shù)來(lái)看,主要采用MJPEG、MPEG-1和MPEG-4,其中MPEG-4在壓縮方法上遠(yuǎn)遠(yuǎn)優(yōu)于其他2種,在錄像存儲(chǔ)容量、清晰度、幀率可調(diào)及網(wǎng)絡(luò)傳輸上都有大幅度的提高,因此已成為目前發(fā)展的熱點(diǎn)。
運(yùn)動(dòng)目標(biāo)的檢測(cè)和跟蹤是視頻監(jiān)控中的重要技術(shù),現(xiàn)在的運(yùn)動(dòng)目標(biāo)檢測(cè)和跟蹤技術(shù)包括幀差法、光流法、統(tǒng)計(jì)學(xué)方法和貝葉斯分割法等,在視頻監(jiān)控中主要應(yīng)用的是幀差法。這些方法都是基于象素進(jìn)行處理的,而且脫離了壓縮技術(shù),運(yùn)算量和復(fù)雜度都比較大,不適合嵌入式視頻監(jiān)控系統(tǒng)。
本文提出一種基于MPEG-4編解碼系統(tǒng)的運(yùn)動(dòng)目標(biāo)檢測(cè)的方法,并在ADI公司的ADSP-BF533上進(jìn)行實(shí)現(xiàn),測(cè)試結(jié)果驗(yàn)證了算法的正確性和可行性。
由于MPEG-4將對(duì)象按運(yùn)動(dòng)、形狀、紋理三類(lèi)信息進(jìn)行編碼,運(yùn)動(dòng)信息編碼主要是通過(guò)運(yùn)動(dòng)估計(jì)和補(bǔ)償來(lái)完成。其中運(yùn)動(dòng)估計(jì)就是在參考畫(huà)面上搜尋最相似的方塊,并確定二塊相對(duì)位置的變化,即確定運(yùn)動(dòng)矢量MV的過(guò)程。而運(yùn)動(dòng)目標(biāo)的檢測(cè)就是要將運(yùn)動(dòng)的物體與背景進(jìn)行區(qū)分。所以可以充分利用二者的聯(lián)系,將MPEG-4編碼中運(yùn)動(dòng)估計(jì)所得到的運(yùn)動(dòng)矢量信息作為檢測(cè)依據(jù)的基本信息,這樣無(wú)須再增加額外的運(yùn)算和存儲(chǔ)就能獲取整幀圖像的所有運(yùn)動(dòng)信息。
本文提出的檢測(cè)運(yùn)動(dòng)物體的方法就是在編碼端,對(duì)提取的運(yùn)動(dòng)信息進(jìn)行分析,濾除噪聲區(qū)域,以準(zhǔn)確分割運(yùn)動(dòng)物體,將目標(biāo)塊聚類(lèi)在最小的外接矩形框內(nèi)。并且將此時(shí)劃分出來(lái)的運(yùn)動(dòng)目標(biāo)塊進(jìn)行標(biāo)記,隨編碼流輸出。在解碼端,從碼流中讀取相應(yīng)運(yùn)動(dòng)塊標(biāo)志信息,判斷邊緣塊,在解碼圖像上疊加邊框后輸出顯示。對(duì)運(yùn)動(dòng)物體的跟蹤則主要通過(guò)將每幀識(shí)別出的運(yùn)動(dòng)圖像質(zhì)心相連來(lái)實(shí)現(xiàn),所以跟蹤相對(duì)比較容易,重點(diǎn)還是單幀的運(yùn)動(dòng)目標(biāo)檢測(cè)。
2 運(yùn)動(dòng)目標(biāo)檢測(cè)與跟蹤
2.1 編碼端實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)分割
編碼部分主要是檢測(cè)分割出運(yùn)動(dòng)物體,并對(duì)物體包含的所有運(yùn)動(dòng)塊進(jìn)行標(biāo)記,隨碼流輸出。為便于監(jiān)測(cè)觀看,檢測(cè)出的運(yùn)動(dòng)物體要聚類(lèi)成矩形。編碼端實(shí)現(xiàn)框圖如圖1所示。
MPEG-4的運(yùn)動(dòng)信息編碼有多種算法,本文采用的運(yùn)動(dòng)估計(jì)算法是塊匹配方法,既可以基于宏塊(16*16),也可以基于塊(8*8)。匹配準(zhǔn)則用的是絕對(duì)誤差和(SAD)準(zhǔn)則。在尋找最佳匹配點(diǎn)的搜索算法中則采用先整象素再半象素的搜索。整象素用的是菱形而半象素用的則是方形。運(yùn)動(dòng)估計(jì)后輸出的運(yùn)動(dòng)矢量以宏塊和塊為單元。由于宏塊的運(yùn)動(dòng)矢量已體現(xiàn)了各塊運(yùn)動(dòng)的大致信息,所以運(yùn)動(dòng)物體檢測(cè)算法提取的運(yùn)動(dòng)矢量以宏塊為基本單元。
運(yùn)動(dòng)檢測(cè)就是通過(guò)對(duì)提取的運(yùn)動(dòng)矢量所形成的二維圖進(jìn)行分割。運(yùn)動(dòng)物體分割框圖如圖2所示。
由于運(yùn)動(dòng)矢量包括x和y二個(gè)分量,為便于后面分析處理,先通過(guò)下式對(duì)其進(jìn)行降維:
式(1)中,I(x,y)是一維運(yùn)動(dòng)信息變量,其中x和y分別代表宏塊位置的水平和垂直坐標(biāo),MVx和MVy是該位置運(yùn)動(dòng)矢量的2分量。然后將I(x,y)進(jìn)行閾值分割得二值函數(shù)B(x,y),即:
式(2)中,Thresh為分割的閾值。閾值分割可以大致確定運(yùn)動(dòng)區(qū)域。由于太微小的變化多半是噪聲,所以忽略不計(jì)。其中閾值的選取可根據(jù)需要按監(jiān)控對(duì)象來(lái)定:對(duì)于劇烈運(yùn)動(dòng)的可選取范圍大些,如監(jiān)視人員的出入,這樣可使最后框定的物體更精確;反之,對(duì)于細(xì)微運(yùn)動(dòng)的則選取小閾值,以免漏報(bào)。
通過(guò)閾值分割得到的二值圖只是標(biāo)識(shí)了運(yùn)動(dòng)的大致區(qū)域,要想準(zhǔn)確地確定運(yùn)動(dòng)物體,還需從二方面進(jìn)行濾波處理。(1)對(duì)于本不屬于運(yùn)動(dòng)物體但被標(biāo)識(shí)為運(yùn)動(dòng)塊的區(qū)域進(jìn)行處理,即除噪。這里的噪聲主要是指由于物體運(yùn)動(dòng)而帶來(lái)的陰影和周邊光線(xiàn)的變化。噪聲的連通區(qū)域一般很小或?yàn)楣铝⒑陦K。(2)對(duì)屬于運(yùn)動(dòng)物體但未進(jìn)行標(biāo)識(shí)的塊進(jìn)行處理,即填補(bǔ)。這里所要填補(bǔ)的是由于該宏塊運(yùn)動(dòng)前后的屬性相差不大經(jīng)過(guò)閾值分割后錯(cuò)判而造成的。這種情況一般表現(xiàn)為運(yùn)動(dòng)區(qū)域中的空洞或區(qū)域邊緣凹槽。這二部分的處理采用形態(tài)濾波,其實(shí)現(xiàn)框圖如圖3所示。
形態(tài)濾波包括邊緣除噪、中心除噪和中心填補(bǔ)三部分。形態(tài)濾波中,B表示二值圖像,S表示結(jié)構(gòu)元素,Sxy表示一個(gè)結(jié)構(gòu)元素的原點(diǎn)平移到點(diǎn)(x,y)。邊緣除噪運(yùn)算如下:
式(3)中的A表示結(jié)構(gòu)元素與二值圖像的交集,式(4)中COUNT(A)表示計(jì)算集合A中的元素個(gè)數(shù)。根據(jù)邊緣位置不同,選取的結(jié)構(gòu)元素為不同類(lèi)型的全1三鄰域。
中心除噪與邊緣除噪類(lèi)似,在具體實(shí)現(xiàn)過(guò)程中為減少計(jì)算量,將除噪和填補(bǔ)同時(shí)進(jìn)行,運(yùn)算過(guò)程如下:
其中,COUNT(A)<thresh_noise為中心除噪過(guò)程,而COUNT(A)>thresh_padding為中心填補(bǔ)過(guò)程。結(jié)構(gòu)元素Sxy取全1八連通域。
形態(tài)濾波包含多種算法,考慮到該算法要應(yīng)用于DSP中,編程時(shí)判斷語(yǔ)句會(huì)大大增加運(yùn)算時(shí)間。所以在是否屬于運(yùn)動(dòng)塊的判定上,沒(méi)對(duì)鄰域運(yùn)動(dòng)信息分布采用復(fù)雜的判斷,而是通過(guò)計(jì)算其中包含運(yùn)動(dòng)塊的個(gè)數(shù)來(lái)判定。形態(tài)濾波前后的效果圖如圖4所示。
圖4中疊加在原圖像上的陰影就是對(duì)運(yùn)動(dòng)宏塊作的標(biāo)記。從圖中可以看出,由于物體運(yùn)動(dòng)產(chǎn)生的陰影噪聲已得到很好的消除,即左圖中最下邊的標(biāo)記塊,而運(yùn)動(dòng)物體左邊的零散標(biāo)記塊,是由于運(yùn)動(dòng)造成的背景變化,也基本濾除了。此時(shí)運(yùn)動(dòng)物體已基本被標(biāo)志出。
形態(tài)濾波參數(shù)變化的效果圖如圖5所示,它對(duì)分割運(yùn)動(dòng)區(qū)域會(huì)產(chǎn)生影響。左圖中thresh_noise=4、thresh_padding=5;右圖中thresh_noise=2、thresh_padding=7,從圖中可看出左邊的形態(tài)濾波效果更好。
經(jīng)過(guò)除噪和填補(bǔ)的形態(tài)濾波,基本分割出運(yùn)動(dòng)物體。最后將運(yùn)動(dòng)物體聚類(lèi)到最小矩形區(qū)域內(nèi),并對(duì)所有矩形區(qū)域內(nèi)的塊進(jìn)行標(biāo)記并輸出到碼流。
2.2 解碼端實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)的檢測(cè)
解碼部分主要就是在解碼圖像上為已經(jīng)標(biāo)記好的運(yùn)動(dòng)物體矩形區(qū)域加上框,以顯示輸出。具體實(shí)現(xiàn)方法是:從碼流中提取各宏塊運(yùn)動(dòng)標(biāo)志信息,對(duì)于運(yùn)動(dòng)塊,判斷其是否為矩形區(qū)域邊緣,若是邊緣則根據(jù)類(lèi)型繪出相應(yīng)框。解碼端實(shí)現(xiàn)框圖如圖6所示。
判斷運(yùn)動(dòng)宏塊是否在矩形框邊緣時(shí),采用模板匹配法。模板使用四連通標(biāo)準(zhǔn),將垂直和水平方向鄰點(diǎn)作為鄰域。宏塊與模板匹配后,根據(jù)判定的邊緣類(lèi)型再加邊。邊緣四模板如圖7所示。
2.3 運(yùn)動(dòng)目標(biāo)的跟蹤
MPEG-4將圖像幀分為I、P、B三種類(lèi)型。P、B屬于預(yù)測(cè)幀,需要用到運(yùn)動(dòng)編碼。而I是幀內(nèi)編碼,沒(méi)有運(yùn)動(dòng)估計(jì)。前面都是針對(duì)預(yù)測(cè)幀而做的運(yùn)動(dòng)物體檢測(cè),將每幀圖像確定的運(yùn)動(dòng)區(qū)域質(zhì)心提取,整個(gè)視頻序列連接而成的軌跡就實(shí)現(xiàn)了對(duì)運(yùn)動(dòng)物體的跟蹤。其中I幀并沒(méi)有識(shí)別運(yùn)動(dòng)物體,但由于I幀出現(xiàn)間隔一般在十幀或幾十幀,所以對(duì)于整個(gè)物體運(yùn)動(dòng)的跟蹤沒(méi)有什么影響。
3 算法的DSP實(shí)現(xiàn)結(jié)果和結(jié)論
本文提出的運(yùn)動(dòng)目標(biāo)檢測(cè)算法應(yīng)用于嵌入式視頻監(jiān)控系統(tǒng),而在嵌入式監(jiān)控系統(tǒng)中對(duì)于視頻壓縮處理部分都采用DSP芯片來(lái)完成,所以需要使用DSP芯片來(lái)對(duì)算法進(jìn)行測(cè)試和驗(yàn)證。Blackfin是ADI推出的一系列高性能16位定點(diǎn)處理器,專(zhuān)為滿(mǎn)足當(dāng)今嵌入式音頻、視頻和通信的計(jì)算需要與功率限制而設(shè)計(jì)。本文選用目前該系列中性能最好的處理器BF533。Visual DSP++是Blackfin的編譯器,它支持C語(yǔ)言編譯,還提供了很好的性能評(píng)估工具statistical profiling,可以方便地對(duì)C代碼進(jìn)行評(píng)估和優(yōu)化。測(cè)試環(huán)境:硬件為BF533的EZ-KIT,軟件為Visual DSP++ 3.5。測(cè)試對(duì)象:(1)用攝像頭采集的30幀灰度視頻序列,序列為在純色背景下晃動(dòng)U盤(pán)形成的,采集過(guò)程中攝像頭位置不變,處理格式為CIF(352*288)。前面采用的效果圖均出自此序列。(2)針對(duì)實(shí)際監(jiān)控場(chǎng)景采集的100幀序列,處理格式為352*240。
U盤(pán)運(yùn)動(dòng)序列檢測(cè)結(jié)果圖像和人運(yùn)動(dòng)監(jiān)控監(jiān)測(cè)結(jié)果圖像分別如圖8和圖9所示??梢钥闯霰疚奶岢龅倪\(yùn)動(dòng)檢測(cè)算法能正確檢測(cè)出運(yùn)動(dòng)圖像。從圖9的檢測(cè)圖像還可以看出該算法能檢測(cè)出多于一個(gè)的運(yùn)動(dòng)目標(biāo)。第30和60幀圖像中,能檢測(cè)出2個(gè)人同時(shí)運(yùn)動(dòng)。
對(duì)于算法的可行性主要從輸出碼率和DSP運(yùn)行的周期數(shù)二方面來(lái)評(píng)估。輸出碼率:每個(gè)運(yùn)動(dòng)標(biāo)志按4位輸出到碼流,以352*288圖像為例,每幀增加了352*288/(16*16)*0.5=198字節(jié),碼流的增加量非常小,對(duì)于網(wǎng)絡(luò)傳輸不會(huì)造成任何影響。運(yùn)行周期:用Blackfin 實(shí)現(xiàn)MPEG-4編碼每幀需要約10M周期,而每幀用于檢測(cè)標(biāo)志運(yùn)動(dòng)區(qū)域的計(jì)算只占用不足0.4M周期,不會(huì)影響編碼的實(shí)時(shí)性。
由此可見(jiàn),本文提出的基于MPEG-4的運(yùn)動(dòng)檢測(cè)跟蹤方法正確可行,完全可用DSP來(lái)實(shí)現(xiàn),并可應(yīng)用于嵌入式視頻監(jiān)控系統(tǒng)中。
參考文獻(xiàn)
1 International Organization for Standardization ISO/IEC JTC1/SC29/WG11 N3342.Overview of the MPEG-4 Standard,2000
2 詹翊強(qiáng),戚飛虎,劉天明.基于MPEG-2視頻流的目標(biāo)跟蹤快速算法.上海交通大學(xué)學(xué)報(bào),2001;35(9)
3 袁潮,黃曉偉,李川.基于ADI公司Blackfin處理器的MPEG-4視頻編碼器的設(shè)計(jì).電子產(chǎn)品世界,2003;(9)
4 李在銘.數(shù)字圖像處理壓縮與識(shí)別技術(shù).成都:電子科技大學(xué)出版社,2000