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