摘 要: 目前使用的圖像傳感器主要有CMOS和CCD兩類。CMOS器件功耗低、集成度高,但成像質量不如CCD器件好。因此該多攝像頭視頻采集系統采用了CCD和CMOS兩種器件,以滿足多種需求。提出了一種基于TI公司TMS320DM365處理芯片、采用CCD和CMOS器件的攝像頭軟硬件切換設計方案。
關鍵詞: 視頻采集;TMS320DM365;攝像頭切換
0 引言
近年來,隨著移動終端的快速發展,計算能力增強,移動網絡傳輸速度大幅提高,移動視頻監控技術發展迅速。目前國內外視頻監控業務主要應用在公共領域、行業用戶和個人用戶。特別是在公共場所,國外設置了眾多監控設備,以加強對公共領域安全的控制能力[1]。嵌入式視頻采集系統具有高效、體積小、實時穩定、低成本等優點[2],自然而然地成為了視頻監控設備的良好載體。
目前使用的圖像傳感器有CMOS(互補金屬氧化物半導體)和CCD(電荷耦合器件)兩類。與CCD相比,CMOS器件具有功耗低、集成度高等優點,但是在噪點和成像質量方面不如CCD器件[3]。而CCD器件則剛好相反。所以在本設計中,采用了CCD與CMOS搭配的設計。其中CCD器件搭配TVP5151視頻解碼芯片,外置的CCD攝像頭能夠提供更靈活、更清晰的視頻圖像。CMOS則是采用了OV5640的模組,利用其集成度高、體積小的特點,作為內置的視頻采集攝像頭,滿足視頻聊天等一般成像需求。
1 硬件框架設計
整個視頻采集系統終端以TMS320DM365芯片作為處理器芯片,基本模塊有DDR2、SDRAM、NAND Flash、網口、串口以及負責進行信令和視頻數據傳輸的3G模塊等。TI公司的基于DaVinci技術的TMS320DM365芯片,集成了一顆ARM926EJ-S內核,一個圖像處理子系統(VPSS),一個H.264高清編碼器協處理器HDVICP和一個MPEG-4/JPEG高清編碼器協處理器MJCP,支持多格式編解碼[4],所以特別適用于圖像處理。視頻采集部分主要由DM365的VPFE(視頻處理前端)、一個多路轉換器和兩個視頻數據采集芯片(OV5640和TVP5151)組成。攝像頭硬件切換由DM365的GPIO口對多路轉換器進行控制,選擇輸入到VPFE的數據源。
系統硬件框架設計圖如圖1所示。
DM365的VPFE采集驅動是一個V4L2設備驅動,可以對RGB和YUV數據進行采集。VPFE的簡單框架如圖2所示[5]。
視頻采集前端在接收到原始的YUV視頻數據后,可以對數據進行存儲,同時又將視頻數據通過內部的數據總線傳輸到圖像處理模塊。此時可對圖像數據進行裁剪、縮放等,以適應本地存儲或者網絡上傳的需求。
視頻采集前端在接收到原始的YUV視頻數據后,可以對數據進行存儲,同時又將視頻數據通過內部的數據總線傳輸到圖像處理模塊。此時可對圖像數據進行裁剪、縮放等,以適應本地存儲或者是網絡上傳的需求。
2 軟件設計
2.1 VPFE模塊驅動
TMS320DM365數字多媒體芯片包含一個視頻處理模塊用來處理視頻數據,減輕主處理器的負擔。它支持大多數主流的外置視頻采集設備。而與外置視頻采集設備直接相連的就是視頻處理前端子系統(VPFE)。
VPFE采集驅動通過標準的V4L2接口將底層硬件的功能暴露給了上層應用程序,在應用程序和設備驅動之間建立起了橋梁[6]。VPFE驅動初始化開始后,首先通過imp_get_hw_if()函數和ccdc_get_hw_interface()函數綁定imp和CCDC的接口函數組,隨后對CCDC模塊進行初始化。初始化CCDC模塊之后,驅動會分配需要的內存用來存儲采集上來的視頻數據。最后,便是調用driver_register(&vpfe_driver)函數和platform_device_register(&_vpfe_device)函數注冊驅動和平臺設備。系統啟動時,檢測到其驅動和設備都存在后,就會調用vpfe_prob()函數,這個函數做的最重要的事情就是調用video_register_device()函數綁定了file_operations結構體,提供給應用程序訪問內核與設備驅動的接口。同時生成一個設備文件節點(/dev/Video0),這樣,應用程序就能通過訪問/dev/Video0設備文件節點,配合Ioctl函數調用VPFE驅動中file_operations結構體成員函數來進行視頻的采集。
VPFE初始化流程圖如圖3所示。在此設計中采用了兩種視頻采集芯片,分別為德州儀器的TVP5151和豪威科技的OV5640。這兩種芯片的驅動程序中,在完成標準的I2C設備注冊的工作后,都會調用vpif_register_decoder(&ov5640_dev[i])或是vpif_register_decoder(&TVP5151 _dev[i])函數將采集芯片的各種操作函數接口封裝成一個struct decoder_device結構體注冊到前面提到的VPFE模塊中。這樣,應用程序就可以通過VPFE的設備文件節點(/dev/Video0)來調用VPFE的操作函數,進而再間接地調用采集設備的操作函數,完成視頻采集芯片的配置工作,使得其能夠正常工作。
2.2 攝像頭軟切換
此設計中使用了兩種視頻采集芯片TVP5151與OV5640,因此會有兩個decoder_device結構體注冊到VPFE模塊中。攝像頭的軟切換,也就是對VPFE模塊中注冊的decodor_device結構體進行重新選擇,決定該調用哪個采集芯片,并對CCDC模塊進行相應的配置。于此同時,對多路選擇器也要進行相應的配置,使其選擇正確的通路。攝像頭切換流程如圖4所示。
首先自然是通過3個GPIO口來配置多路選擇器選擇正確的通路,使得DM365可以獲取到來自正確的采集芯片的視頻數據。VIDIOC_ENUMINPUT命令會通過VPFE模塊調用到注冊到VPFE模塊中的采集芯片驅動的操作函數enuminput,從而依次檢索注冊到VPFE中的各個decoder_device結構體中是否有需要的input_info,并返回對應的decoder_device的序號。所以只需要在調用VIDIOC_ENUMINPUT命令時傳入與所需要采集芯片驅動中相同的input類型,便可以找到對應的decoder_device,從而切換到對應的攝像頭。得到正確的decoder_device序號后,即可用VIDIOC_S_INPUT命令,調用到采集芯片驅動中的initialize函數,完成其初始化。
切換到正確的視頻數據源以后,還要對CCDC模塊進行對應的設置。這時需要調用命令VIDIOC_S_STD:ioctl(fd,VIDIOC_S_STD,&std),它會調用到視頻采集芯片驅動中的setstd函數,進而對驅動中的struct v4l2_standard結構體數組進行便利,找到其中數據成員ID與VIDIOC_S_STD命令傳入參數std相同的項,返回其name成員,并將其作為ccdc_hw_if->setstd()函數的參數執行,便可以對CCDC模塊的分辨率、幀率等信息進行設置。例如,當檢索到的name值為“VGA-30”時,CCDC模塊分辨率便會被設置成640×480,幀率為30 FPS。
2.3 掃描方式的切換
此設計方案中用到的兩種視頻采集芯片的掃描方式是不同的。TVP5151是隔行掃描,一幀分為奇偶兩場,而OV5640是逐行掃描。VPFE模塊對于這兩種掃描方式的處理方式是不同的,所以完成攝像頭的切換后,還要把CCDC模塊掃描方式設定成與對應的視頻采集芯片一致。在VPFE驅動中,有一個標志位frame_format就是用來表示掃描方式的,frame_format為0時表示隔行掃描,即使用TVP5151;為1時就表示逐行掃描,即使用OV5640。原本ccdc_hw_if->setstd()函數還可以對掃描方式進行設定,但是由于本設計所使用的內核版本的缺陷,設定無法生效,所以添加了一個小補丁:在內核VOFE驅動中聲明了一個變量scanmode,并使用EXP ORT_SYMBOL(scanmode)使之成為內核全局變量。然后分別在TVP5151和OV5640驅動的intialize函數中對其進行賦值。TVP5151為隔行掃描,故對其賦0,OV5640則相反。這樣,每次切換攝像頭后,在初始化采集芯片的同時也會對CCDC的掃描方式進行選擇。
3 測試結果
測試在實驗室的單兵設備上進行。在后置的OV5640攝像頭模組和外置的TVP5151攝像頭模組之間進行了切換,外置攝像頭更清晰,也更靈活。而內置的則勝在方便、小巧。設計達到了預期目標。測試效果圖如圖5所示。
4 結論
嵌入式芯片技術的快速發展,使其在視頻監控設備總的應用越來越廣泛。同樣發展迅速的還有視頻采集芯片。本文設計實現了基于TMS320DM365硬件平臺的多攝像頭軟硬件切換方案,采用了CMOS和CCD兩種器件,實現了不同廠家型號、不同掃描方式的視頻采集芯片模組之間的順暢切換。這在視頻采集芯片發展越來越多樣化的今天,有一定的意義。
參考文獻
[1] 苗潤生.3G移動視頻監控業務的應用與發展[D].北京:北京郵電大學,2010.
[2] 李佳林,劉永春.基于S3C2440網絡視頻采集系統的設計與實現[J].電腦知識與技術,2014(6):1314-1316, 1325.
[3] 王旭東,葉玉堂.CMOS與CCD圖像傳感器的比較研究和發展趨勢[J].電子設計工程,2010(11):178-181.
[4] 徐凱,錢燕,魏宗群,等.基于TMS320DM365的3G實時視頻傳輸系統設計與實現[J].浙江農業科學,2012(7):1056-1059.
[5] Texas Instruments. Davinci Linux VPFE Capture Driver [EB/OL]. [2015-07-15]. http://www.ti.com/lit/an/sprs566a/ sprs566a. pdf.2015.2.
[6] 潘力策,孟利民.基于DM365的雙碼流視頻監控設備的設計與實現[J].微型機與應用,2015,34(10):41-43,47.