基于DM642的運動目標檢測系統設計與實現
此硬件平臺從攝像機獲取模擬圖像,經過SAA7115解碼得到標準的。BT.656格式的YUV4:2:2數字圖像碼流,然后通過DM642的EDMA功能將碼流暫存到SDRAM,再用算法進行處理后,然后通過DM642的EDMA功能送入到SAA7105進行解碼,經過CVBS引腳輸出,這樣系統的處理結果就可以在顯示器上實時地顯示。
2.2 算法的DM642實現
系統的軟件在TI提供的集成開發環境CCS完成,編程用C語言和匯編語言實現,軟件采用TI推薦的RF-5架構,采用了三個線程tsk_inpu-t、tsk_process、tsk_output。
軟件的執行流程如下:
(1)TMS320DM642的初始化。包括初始化BIOS、CSL、設置CACKE;
(2)初始化RF-5模塊。用CHAN_init,ICC_init,SCOM_init分別初始化CHAN模塊、ICC模塊、SCOM模塊;
(3)DSP/BIOS根據操作系統的調度規則環調度執行tsk_input、tsk_process、tsk_output三個線程。其中tsk_inpufi通過按照順序調用FVID_create、FVID_control、FVID_aUoc函數實現對FVID驅動的調用,打開輸入通道,實現得到SAA7ll5獲取的BT.656格式的YUV422數字視頻碼流。tsk_process負責對tsk_input線程獲取的數字圖像進行運動圖像檢測算法的處理,其中要調用到上一節所述的算法函數,經過處理,運動目標被分割出來。tsk-output負責調用FVID_create、FVID_control、FVID_alloc函數,打開輸出通道實現對已經分割處理的數字視頻流通過SAA7105輸出,在顯示器上予以顯示。這三個線程在DSP/BIOS的調度下循環并行運行,三個線程之間的數據交換通過SCOM模塊實現。
上述程序中,核心程序為tsk_process線程,其主要代碼如下:
While(1)
{……
Background()://獲取背景并根據條件更新
Diff_picture()://背景與當前圖像差分
Otsu_binary(): //由改進的大津法進行閥值分割并二值化
Filter_obitct()://對二值化圖像進行濾波得到運動的物體,即為檢測的結果。
……
}
2.3 軟件優化
應用TMS320DM6425開發運動目標檢測系統時,為保證檢測結果的高效、實時,軟件代碼的優化顯得尤為重要。基于TMS320DM642編程時,我們參照該芯片的特點在編寫算法時進行了如下的優化:
(1)使用流水線技術。采用編譯選項-o2、-o3,充分利用軟件流水線方式提高運行效率。
(2)對寄存器進行優化,通過CCS自帶的性能分析工具Profiler對調用頻率高的C語言代碼采用匯編語言改寫,并采用匯編優化器進行優化,使代碼的執行效率得到最大限度提升。
2.4 實驗結果
基于DM642的運動目標檢測系統實驗結果如圖3所示。本文引用地址:http://www.104case.com/article/166355.htm
3 結論
本文采用TI的專用圖像處理芯片TMS320DM642構建硬件平臺,采用背景差分法來檢測運動物體,采用大津法獲取自適應閥值,并按閥值取值來判斷是否有物體運動,這樣簡化了后續的形態學處理,然后再對差分圖像進行二值化處理,最后用形態學處理消除孤立的點,經過試驗,本文的運動檢測系統有很強的適應能力,能避免背景死鎖情況,并能最大程度抑制拖影和空洞現象的產生。
評論