摘 要: 提出一種基于MPEG-4的運(yùn)動(dòng)目標(biāo)檢測(cè)跟蹤的方法,通過對(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ù)來看,,主要采用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),、形狀、紋理三類信息進(jìn)行編碼,,運(yùn)動(dòng)信息編碼主要是通過運(yùn)動(dòng)估計(jì)和補(bǔ)償來完成,。其中運(yùn)動(dòng)估計(jì)就是在參考畫面上搜尋最相似的方塊,并確定二塊相對(duì)位置的變化,,即確定運(yùn)動(dòng)矢量MV的過程,。而運(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)塊聚類在最小的外接矩形框內(nèi),。并且將此時(shí)劃分出來的運(yùn)動(dòng)目標(biāo)塊進(jìn)行標(biāo)記,隨編碼流輸出,。在解碼端,從碼流中讀取相應(yīng)運(yùn)動(dòng)塊標(biāo)志信息,,判斷邊緣塊,,在解碼圖像上疊加邊框后輸出顯示。對(duì)運(yùn)動(dòng)物體的跟蹤則主要通過將每幀識(shí)別出的運(yùn)動(dòng)圖像質(zhì)心相連來實(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)物體要聚類成矩形,。編碼端實(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è)就是通過對(duì)提取的運(yùn)動(dòng)矢量所形成的二維圖進(jìn)行分割,。運(yùn)動(dòng)物體分割框圖如圖2所示,。
由于運(yùn)動(dòng)矢量包括x和y二個(gè)分量,為便于后面分析處理,,先通過下式對(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ì)象來定:對(duì)于劇烈運(yùn)動(dòng)的可選取范圍大些,如監(jiān)視人員的出入,,這樣可使最后框定的物體更精確,;反之,對(duì)于細(xì)微運(yùn)動(dòng)的則選取小閾值,,以免漏報(bào),。
通過閾值分割得到的二值圖只是標(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)而帶來的陰影和周邊光線的變化,。噪聲的連通區(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)過閾值分割后錯(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)元素為不同類型的全1三鄰域,。
中心除噪與邊緣除噪類似,,在具體實(shí)現(xiàn)過程中為減少計(jì)算量,將除噪和填補(bǔ)同時(shí)進(jìn)行,,運(yùn)算過程如下:
其中,,COUNT(A)<thresh_noise為中心除噪過程,而COUNT(A)>thresh_padding為中心填補(bǔ)過程,。結(jié)構(gòu)元素Sxy取全1八連通域,。
形態(tài)濾波包含多種算法,考慮到該算法要應(yīng)用于DSP中,,編程時(shí)判斷語(yǔ)句會(huì)大大增加運(yùn)算時(shí)間,。所以在是否屬于運(yùn)動(dòng)塊的判定上,沒對(duì)鄰域運(yùn)動(dòng)信息分布采用復(fù)雜的判斷,,而是通過計(jì)算其中包含運(yùn)動(dòng)塊的個(gè)數(shù)來判定,。形態(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)過除噪和填補(bǔ)的形態(tài)濾波,,基本分割出運(yùn)動(dòng)物體,。最后將運(yùn)動(dòng)物體聚類到最小矩形區(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ù)類型繪出相應(yīng)框,。解碼端實(shí)現(xiàn)框圖如圖6所示,。
判斷運(yùn)動(dòng)宏塊是否在矩形框邊緣時(shí),采用模板匹配法,。模板使用四連通標(biāo)準(zhǔn),,將垂直和水平方向鄰點(diǎn)作為鄰域。宏塊與模板匹配后,,根據(jù)判定的邊緣類型再加邊,。邊緣四模板如圖7所示。
2.3 運(yùn)動(dòng)目標(biāo)的跟蹤
MPEG-4將圖像幀分為I,、P,、B三種類型。P,、B屬于預(yù)測(cè)幀,,需要用到運(yùn)動(dòng)編碼。而I是幀內(nè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幀并沒有識(shí)別運(yùn)動(dòng)物體,但由于I幀出現(xiàn)間隔一般在十幀或幾十幀,,所以對(duì)于整個(gè)物體運(yùn)動(dòng)的跟蹤沒有什么影響,。
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芯片來完成,所以需要使用DSP芯片來對(duì)算法進(jìn)行測(cè)試和驗(yàn)證,。Blackfin是ADI推出的一系列高性能16位定點(diǎ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盤形成的,,采集過程中攝像頭位置不變,,處理格式為CIF(352*288)。前面采用的效果圖均出自此序列,。(2)針對(duì)實(shí)際監(jiān)控場(chǎng)景采集的100幀序列,,處理格式為352*240。
U盤運(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ù)二方面來評(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í)性。
由此可見,,本文提出的基于MPEG-4的運(yùn)動(dòng)檢測(cè)跟蹤方法正確可行,,完全可用DSP來實(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