摘 要: 設計了一種基于TMS320DM6437的數(shù)字視頻采集系統(tǒng),以適應現(xiàn)代采集系統(tǒng)高性能、快速性以及數(shù)字化的需要。該設計方法分為CCD傳感器、達芬奇系列DSP上集成的視頻處理子系統(tǒng)組件(VPSS)和顯示器3部分,不需要外接編解碼芯片,直接連接數(shù)字攝像頭(CCD)。實驗結果表明,該視頻采集系統(tǒng)采集的圖像色彩均勻,畫面清晰,采集速度快,具有良好的擴展性。
關鍵詞: 數(shù)字攝像機;VPSS;VPFE;VPBE;TMS320DM6437
視頻技術在日常生活中的地位顯得越來越重要。視頻圖像不清晰、噪聲污染、分辨率低等原因導致視頻質量低。針對這個問題,提出了用CCD傳感器獲取外部的圖像,因為CCD傳感器在靈敏度、分辨率、噪聲控制等方面都優(yōu)于CMOS傳感器,可以獲取高質量的圖像產品。選用TMS320DM6437作為處理器,它是一款高性能的多媒體處理器,有利于在交通、生活小區(qū)、金融、工廠、校園等領域發(fā)揮更好的作用。
1 系統(tǒng)組成及其原理
系統(tǒng)由CCD傳感器模塊、處理器和顯示器模塊組成,系統(tǒng)的整體框圖如圖1所示。TMS320DM6437處理器是TI公司專為低成本、高性能視頻應用開發(fā)的32位定點DSP達芬奇技術處理器。該器件采用TI第2代超長指令字(VLIW)結構的TMS320C64X+DSP內核,主頻可達700 MHz,支持8個8位或4個16位并行MAC(Multiply-Accumulates)運算,峰值處理能力高達5 600 MIPS。針對視頻應用,TMS320DM6437還提供了強大的視頻處理子系統(tǒng)VPSS(Video Processing Sub Systern),其包括一個視頻處理前端VPFE(Video Processing Front End)和一個視頻處理后端VPBE(Video Processing Back End),在控制方面提高了其配置和使用的簡易性。這一子系統(tǒng)提供的各種接口為視頻的采集和顯示處理提供了極大的便利。
CCD傳感器實時采集視頻圖像并將之轉換成模擬視頻信號,通過視頻電纜把模擬視頻信號送給TVP5146視頻A/D轉換芯片轉成數(shù)字視頻信號,通過TMS320DM6437的硬件連線傳送輸入VPFE,應用程序接收到一幅完整的視頻幀后,將它傳送給VPBE,VPBE將此數(shù)字視頻信號編碼輸出,通過TMS320DM6437系統(tǒng)的視頻輸出接口電路將此視頻信號轉換成模擬信號輸出,通過視頻電纜,信號最終傳送顯示器進行顯示。
2 視頻處理子系統(tǒng)硬件結構
VPFE用于輸入數(shù)字視頻數(shù)據(jù),為多種標準的數(shù)字視頻輸入提供接口,并為輸入的數(shù)字視頻數(shù)據(jù)作必要的預處理;VPBE用于輸出視頻數(shù)據(jù),以驅動顯示器顯示視頻圖像。VPFE和VPBE統(tǒng)稱為視頻處理子系統(tǒng),結構如圖2所示。
2.1 VPFE
VPFE提供了一個豐富和強大的視頻輸入接口,系統(tǒng)包括CCD控制(CCDC)、預覽器、縮放器、H3A和直方圖模塊。
2.1.1 CCD控制器
CCDC接收從傳感器傳送來的原始圖像/視頻數(shù)據(jù)或從視頻解碼器設備接收各種格式的YUV數(shù)據(jù),為圖像傳感器和數(shù)字視頻提供了一個接口。CCD控制器的輸出需要另外處理,這種處理在預覽器或圖像處理的軟件算法中實現(xiàn),才能把原始圖像轉化成最終處理的圖像。同時,原始數(shù)據(jù)輸入到CCD控制器,可以用于計算各種統(tǒng)計數(shù)據(jù)(H3A和直方圖)以控制圖像/視頻的調節(jié)參數(shù)。
2.1.2 預覽器
預覽器是一個圖像處理模塊,用來配置各種傳感器類型、圖像質量和視頻幀速率。預覽器把從傳感器(CMOS或CCD)傳送來的未經處理的圖像/視頻轉換為YCbCr4:2:2數(shù)據(jù)。預覽器的輸出用于視頻壓縮和外部顯示,如一個NTSC/PAL模擬編碼器或者一個數(shù)字液晶顯示器。
2.1.3 縮放器
縮放器用來實現(xiàn)圖像和視頻的縮放,縮放范圍為1/4~4倍,它可以接收來自預覽器和DDR2的圖像/視頻。
2.1.4 H3A
H3A為自動對焦(Auto Focus)、自動白平衡(Auto WhiteBlance)和自動曝光(Auto Exposure)的控制環(huán)路。它包含兩個主要模塊:自動對焦(AF)引擎裝置和自動曝光(AE)與自動白平衡(AWB)引擎裝置。
2.1.5 直方圖
直方圖模塊處理彩色像素獲取統(tǒng)計信息,提供給H3A模塊實現(xiàn)各種3A算法,以平滑最終的輸出圖像/視頻。
2.2 VPBE
VPBE用于實現(xiàn)視頻圖像的輸出顯示,它包括OSD模塊、VENC模塊。
2.2.1 OSD模塊
OSD的主要功能就是把視頻數(shù)據(jù)和位圖數(shù)據(jù)混合集成給視頻解碼器以YCbCr格式輸出到VENC中,視頻和顯示數(shù)據(jù)從外部存儲器讀入,一般為DDR2。OSD通過控制器和參數(shù)寄存器編程實現(xiàn)其功能。
2.2.2 VENC模塊
VENC包含數(shù)字LCD(DLCD)和模擬(DAC等)接口。視頻編碼器產生模擬的視頻輸出。DLCD控制器產生數(shù)字的RGB/YCbCr數(shù)據(jù)輸出和時鐘信號。
3 視頻處理子系統(tǒng)程序設計
如圖3所示,一個CCD傳感器與TVP5146解碼器連接在一起,把模擬復合信號變成數(shù)字YUV4:2:2數(shù)據(jù)。該數(shù)據(jù)通過8位數(shù)據(jù)總線被送到TMS320DM6437處理器。在解碼器與TMS320DM6437之間有一個I2C總線,使TMS320DM6437充當主配置TVP5416。
使用VPFE驅動程序配置TVP5146解碼器和捕獲視頻輸入數(shù)據(jù)且在顯示器上顯示出捕獲數(shù)據(jù)。CCD傳感器輸出的數(shù)據(jù)是NTSC D1分辨率,而在VPFE,CCD控制器模塊已足夠靈活來獲取任何不大于D1的幀。可以通過以下步驟配置VPFE驅動來獲取并顯示數(shù)據(jù):
?。?)通過調用FVID_create()和傳遞參數(shù)ccdcParams()來創(chuàng)建ccdcHandle作為CCDC的通道。在傳遞函數(shù)ccdcParams(),數(shù)據(jù)流(dateflow)被設置為PSP_VPFE_CCDC_ YCBCR_8,ffMode設置為PSP_VPSS_FRAME_MODE,高度和寬度設置為480和720,這樣CCDC模塊就能配置來捕獲交錯NTSC D1幀。在傳遞函數(shù)ccdcParams()中,有3個函數(shù)與TVP5146解碼器有關,分別為:
?、貾SP_VPFE_TVP5146_Open()被調用:當CCDC通道被創(chuàng)建并初始化I2C總線;
?、赑SP_VPFE_TVP5146_Close()被調用:當CCDC通道被刪除并重新初始化I2C總線;
③PSP_VPFE_TVP5146_Control()被調用:當一個特定的控制命令來配置TVP5416。
?。?)通過調用FVID_control()和傳遞參數(shù)TVP5146Params()來配置TVP5146。在自動模式下,TVP5146譯碼器配置為捕獲復合信號,因為在默認情況下大多數(shù)TVP5146的配置參數(shù)設置為最佳的典型用法。
?。?)通過調用FVID_alloc()為CCDC模塊分配一些幀緩沖。隊列緩沖區(qū)到驅動程序通過調用FVID_queue()。
?。?)在VPBE中,創(chuàng)建vid0Handle作為VIDWIN0通道。通過調用FVID_creat()和傳遞參數(shù)vid0Params()來配置VIDWIN0顯示YUV4:2:2捕獲的數(shù)據(jù)格式和NTSC D1分辨率。
?。?)通過調用FVID_alloc()為VIDWIN0模塊分配一些幀緩沖。隊列緩沖區(qū)到驅動程序通過調用FVID_queue()。
?。?)在VPBE中創(chuàng)建vencHandle作為VENC通道,通過調用FVID_creat()和傳遞參數(shù)vencParams()來配置VENC模塊顯示復合信號。
?。?)按指定的次數(shù)開始循環(huán),獲取并顯示輸入的視頻信號:
?、僬{用FVID_exchange()得到一個捕獲視頻幀并傳遞一個空的幀緩沖到CCDC通道。當CCDC模塊已經捕獲了一個新的幀后,函數(shù)返回;
②調用FVID_exchange()傳輸已捕獲數(shù)據(jù)的幀緩沖到VIDWIN0和接收一個新的幀緩沖被顯示之后,函數(shù)返回;
?。?)一旦程序退出循環(huán),釋放所有通道和幀緩沖區(qū):
①調用FVID_free()釋放VIDWIN0幀緩沖,調用FVID_delete()釋放VIDWIN0通道;
?、谡{用FVID_free()釋放CCDC幀緩沖,調用FVID_delete()釋放CCDC通道;
?、壅{用FVID_delete()釋放VENC通道。
4 結果測試
使用復合電纜把顯示器、CCD傳感器與TMS320DM6437相連,啟動板上電源,啟動CCS,打開項目文件(.jpt);通過點擊CCS菜單File→Load Program,加載文件;點擊CCS菜單Debug→Reset CPU,然后點擊CCS菜單Debug→Restart,最后選擇F5鍵運行程序,捕獲的視頻在顯示器上顯示出來,如圖4所示。
在視頻采集系統(tǒng)中將攝像頭的分辨率設置為720×480,圖像傳感器輸出的原始圖像信號送入視頻解碼器TVP5146進行視頻解碼,然后輸出進入TMS320DM6437處理器組成的DSP系統(tǒng),在DSP系統(tǒng)中主要進行必要的圖像預處理以獲得良好的圖像質量。采集到的視頻圖像色彩均衡、畫面清晰,圖像采集速度快且具有良好的擴展性。當需要對視頻進行處理(如灰度變換、黑白圖像變換等)時,進一步為圖像的提取和識別作好準備,只需要添加相應的程序即可,無需改變硬件,降低了開發(fā)成本。
參考文獻
[1] Texas Instruments Incorporated.SPRU977D.TMS320DM643x DMP Video Processing Front End (VPFE)User′s Guide[S].2010.
[2] Texas Instruments Incorporated.SPRU952A .TMS320DM643x DMP Video Processing Back End (VPBE) User′s Guide[S].2007.
[3] Texas Instruments Incorporated.SPRU983A.TMS320DM643x DMP Peripherals Overview Refe- rence Guide[S].2007.
[4] BAYER B E. Color imaging array:US.3971065[P]. 1976:56-60.
[5] 米本和也.CCD/COMS圖像傳感器基礎與應用[M].北京:科學出版社,2006.
[6] 張德剛,陳文藝,陳瑞.基于DM6437的數(shù)字攝影機[J].電子設計工程,2011,19(8):130.