引言
數(shù)字視頻系統(tǒng)在智能交通、圖像識(shí)別以及安防監(jiān)控等領(lǐng)域,,都得到了廣泛的應(yīng)用,,運(yùn)動(dòng)目標(biāo)檢測(cè)作為數(shù)字視頻系統(tǒng)的一個(gè)重要環(huán)節(jié),是后續(xù)目標(biāo)識(shí)別,、目標(biāo)跟蹤等應(yīng)用的基礎(chǔ),。本文提出了一個(gè)基于DM642的實(shí)時(shí)運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng)方案,依靠DM642芯片強(qiáng)大的運(yùn)算能力,,使目標(biāo)檢測(cè)的數(shù)據(jù)吞吐量及實(shí)時(shí)性得到保證,。本方案設(shè)計(jì)合理、可擴(kuò)展性強(qiáng),,具有實(shí)際應(yīng)用價(jià)值,。
1 運(yùn)動(dòng)目標(biāo)檢測(cè)算法
實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)檢測(cè)的算法很多,一般有光流法,、背景差分法,、相鄰幀間差分法等。光流法通過求解光流方程來實(shí)現(xiàn)運(yùn)動(dòng)檢測(cè),,其算法復(fù)雜,、計(jì)算量大,且較難滿足實(shí)時(shí)要求,;而相鄰幀間差分法雖然算法簡(jiǎn)單,、運(yùn)算量小,但抗干擾能力很差,,檢測(cè)效果不太理想,;而背景差分法算法簡(jiǎn)單、運(yùn)算量小,、且抗干擾能力強(qiáng),,因此本文采用該方法實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)檢測(cè)。具體步驟如下:首先獲取數(shù)字圖像進(jìn)行預(yù)處理,,之后采用背景差分法實(shí)現(xiàn)運(yùn)動(dòng)檢測(cè),,再對(duì)所得的圖像用大津法進(jìn)行自適應(yīng)閥值分割,,最后通過濾波得到檢測(cè)出的運(yùn)動(dòng)目標(biāo)。圖1是本文運(yùn)動(dòng)目標(biāo)檢測(cè)的流程圖,。
1.1 圖像獲取及預(yù)處理
在CCS中配置系統(tǒng)的視頻輸入以及視頻輸出FVID驅(qū)動(dòng),從TMS320DM642的VPORT口獲取到攝像頭采集的視頻流所對(duì)應(yīng)的數(shù)字YUV視頻流,,將其存放到緩存IMG_CURRENT,、IMG_PREVIOUS、IMG_BACKGROUND里面,,其中IMG CURRENT存放的是當(dāng)前的圖像,,IMG_PREVIOUS存放的是上一次存放的圖像,IMG BACKGROUND存放的圖像作為背景圖像,。圖像的分辨率為720×576,,每個(gè)分量為8比特。由于獲取的視頻圖像不可避免地含有噪聲,,必須對(duì)這些噪聲加以抑制,,本文采用高斯濾波對(duì)所得到的YUV視頻信息進(jìn)行高斯濾波處理。濾波后的圖像保存到IMG_CURRENT緩存中,。
1.2 背景差分法處理
視頻圖像經(jīng)過預(yù)處理后,,采用背景差分法檢測(cè)出運(yùn)動(dòng)圖像,步驟如下:
(1)獲取一幀圖像作為初始的背景Bg(x,y,tk),;
(2)間隔4幀再次獲取下一幅圖像,,作為當(dāng)前圖像Curr(x,y,tk);
(3)按照背景差分法得到差分圖像Sub(x,y,tk)=|Curr(x,y,tk,)-Bg(x,y,tk),;
(4)統(tǒng)計(jì)所有和值,,與設(shè)定的閥值FF相比較,如果小于閥值FF,,按下式進(jìn)行背景更新Bg(x,y,tk)=α*Curr(x,y,tk)+(1-α)*Bg(x,y,tk-1),;
(5)重復(fù)前面(2)到(3)的步驟。
上述背景差分法中,,可隨機(jī)獲取開機(jī)時(shí)刻的一幀圖像為初始背景圖像,。為了讓圖像之間的差異更加明顯,按每間隔4幀來獲取下一幅圖像作為當(dāng)前圖像,,進(jìn)行背景差分得到差分圖像,,將差分圖像灰度的和與設(shè)定閥值FF相比較,判定是否需要更新當(dāng)前背景,,閥值FF為經(jīng)驗(yàn)值,,本文取20000。背景更新公式中的系數(shù)a反映了背景更新快慢,,其取值范圍在[0,,1]之間,,a越大,背景更新速度越快,,a越小,,背景更新速度越慢。
1.3 差分圖像的二值化
對(duì)差分圖像按照下式二值化:
式中的閥值TR采用大津法獲取,。在實(shí)際測(cè)試時(shí)發(fā)現(xiàn),,直接采用大津法獲取的閥值TR對(duì)差分圖像二值化進(jìn)行處理時(shí),如果沒有物體運(yùn)動(dòng),,那么二值化得到的圖像為噪聲的二值化圖像,,這樣直接處理得到的二值化噪聲圖像在后續(xù)的形態(tài)學(xué)濾波中很難完全消除,通過分析差分圖像的直方圖,,發(fā)現(xiàn)當(dāng)沒有物體運(yùn)動(dòng)時(shí),,差分圖像的直方圖主要分布在0~10間,此時(shí)大津法獲取的閥值為1~6之間,;當(dāng)有物體運(yùn)動(dòng)時(shí),,差分圖像的直方圖分布在0~255之間,此時(shí)大津法獲取的閥值為20以上,。
基于以上的分析,,本文采用改進(jìn)的方法,如果大津法獲取的閥值小于10,,則說明沒有物體運(yùn)動(dòng),,否則說明有物體運(yùn)動(dòng),當(dāng)閥值小于10時(shí),,按照下式進(jìn)行二值化處理
f(x,,y,tk)=0 當(dāng)TR<10
即當(dāng)沒有物體運(yùn)動(dòng)時(shí),,獲取的二值化圖像應(yīng)為全黑,,這樣后續(xù)的形態(tài)學(xué)處理只需對(duì)有物體運(yùn)動(dòng)時(shí)的二值化圖像進(jìn)行處理即可。圖2分別為無物體運(yùn)動(dòng)時(shí)直接二值化和采用改進(jìn)方法二值化后的結(jié)果,。其中a)為直接采用大津法獲取的閥值分割沒有物體運(yùn)動(dòng)時(shí)的差分圖像的結(jié)果,,可以看出圖中布滿噪聲;b)為對(duì)大津法獲取的閥值進(jìn)行判斷后,,沒有物體運(yùn)動(dòng)時(shí)的差分圖像分割的結(jié)果,,可以看出此時(shí)圖像為全黑,也即沒有運(yùn)動(dòng)物體,,這與實(shí)際情況相符,,簡(jiǎn)化了后續(xù)的形態(tài)學(xué)處理。
2 算法的TMS320DM642實(shí)現(xiàn)
2.1 硬件平臺(tái)
硬件平臺(tái)采用TMS320DM642作為CPU,該芯片主頻600MHz,。視頻編解碼芯片采用SAA7115H和SAA7105H,。另外采用了兩片SDRAM(共4M×64bi-t)芯片作為存儲(chǔ)介質(zhì),用于圖像的暫時(shí)存儲(chǔ),,同時(shí)還采用一片F(xiàn)LASH用于實(shí)現(xiàn)自啟動(dòng),,硬件平臺(tái)框圖見圖3。
此硬件平臺(tái)從攝像機(jī)獲取模擬圖像,,經(jīng)過SAA7115解碼得到標(biāo)準(zhǔn)的,。BT.656格式的YUV4:2:2數(shù)字圖像碼流,然后通過DM642的EDMA功能將碼流暫存到SDRAM,,再用算法進(jìn)行處理后,然后通過DM642的EDMA功能送入到SAA7105進(jìn)行解碼,,經(jīng)過CVBS引腳輸出,,這樣系統(tǒng)的處理結(jié)果就可以在顯示器上實(shí)時(shí)地顯示。
2.2 算法的DM642實(shí)現(xiàn)
系統(tǒng)的軟件在TI提供的集成開發(fā)環(huán)境CCS完成,,編程用C語言和匯編語言實(shí)現(xiàn),,軟件采用TI推薦的RF-5架構(gòu),采用了三個(gè)線程tsk_inpu-t,、tsk_process,、tsk_output。
軟件的執(zhí)行流程如下:
(1)TMS320DM642的初始化,。包括初始化BIOS,、CSL、設(shè)置CACKE,;
(2)初始化RF-5模塊,。用CHAN_init,ICC_init,,SCOM_init分別初始化CHAN模塊,、ICC模塊、SCOM模塊,;
(3)DSP/BIOS根據(jù)操作系統(tǒng)的調(diào)度規(guī)則環(huán)調(diào)度執(zhí)行tsk_input,、tsk_process、tsk_output三個(gè)線程,。其中tsk_inpufi通過按照順序調(diào)用FVID_create,、FVID_control、FVID_aUoc函數(shù)實(shí)現(xiàn)對(duì)FVID驅(qū)動(dòng)的調(diào)用,,打開輸入通道,,實(shí)現(xiàn)得到SAA7ll5獲取的BT.656格式的YUV422數(shù)字視頻碼流。tsk_process負(fù)責(zé)對(duì)tsk_input線程獲取的數(shù)字圖像進(jìn)行運(yùn)動(dòng)圖像檢測(cè)算法的處理,其中要調(diào)用到上一節(jié)所述的算法函數(shù),,經(jīng)過處理,,運(yùn)動(dòng)目標(biāo)被分割出來。tsk-output負(fù)責(zé)調(diào)用FVID_create,、FVID_control,、FVID_alloc函數(shù),打開輸出通道實(shí)現(xiàn)對(duì)已經(jīng)分割處理的數(shù)字視頻流通過SAA7105輸出,,在顯示器上予以顯示,。這三個(gè)線程在DSP/BIOS的調(diào)度下循環(huán)并行運(yùn)行,三個(gè)線程之間的數(shù)據(jù)交換通過SCOM模塊實(shí)現(xiàn),。
上述程序中,,核心程序?yàn)閠sk_process線程,其主要代碼如下:
While(1)
{……
Background()://獲取背景并根據(jù)條件更新
Diff_picture()://背景與當(dāng)前圖像差分
Otsu_binary(): //由改進(jìn)的大津法進(jìn)行閥值分割并二值化
Filter_obitct()://對(duì)二值化圖像進(jìn)行濾波得到運(yùn)動(dòng)的物體,,即為檢測(cè)的結(jié)果,。
……
}
2.3 軟件優(yōu)化
應(yīng)用TMS320DM6425開發(fā)運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng)時(shí),為保證檢測(cè)結(jié)果的高效,、實(shí)時(shí),,軟件代碼的優(yōu)化顯得尤為重要?;赥MS320DM642編程時(shí),,我們參照該芯片的特點(diǎn)在編寫算法時(shí)進(jìn)行了如下的優(yōu)化:
(1)使用流水線技術(shù)。采用編譯選項(xiàng)-o2,、-o3,,充分利用軟件流水線方式提高運(yùn)行效率。
(2)對(duì)寄存器進(jìn)行優(yōu)化,,通過CCS自帶的性能分析工具Profiler對(duì)調(diào)用頻率高的C語言代碼采用匯編語言改寫,,并采用匯編優(yōu)化器進(jìn)行優(yōu)化,使代碼的執(zhí)行效率得到最大限度提升,。
2.4 實(shí)驗(yàn)結(jié)果
基于DM642的運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng)實(shí)驗(yàn)結(jié)果如圖3所示,。
3 結(jié)論
本文采用TI的專用圖像處理芯片TMS320DM642構(gòu)建硬件平臺(tái),采用背景差分法來檢測(cè)運(yùn)動(dòng)物體,,采用大津法獲取自適應(yīng)閥值,,并按閥值取值來判斷是否有物體運(yùn)動(dòng),這樣簡(jiǎn)化了后續(xù)的形態(tài)學(xué)處理,,然后再對(duì)差分圖像進(jìn)行二值化處理,,最后用形態(tài)學(xué)處理消除孤立的點(diǎn),經(jīng)過試驗(yàn),,本文的運(yùn)動(dòng)檢測(cè)系統(tǒng)有很強(qiáng)的適應(yīng)能力,,能避免背景死鎖情況,并能最大程度抑制拖影和空洞現(xiàn)象的產(chǎn)生。