陳 斌,彭 宏(1.浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 310023;2.浙江省通信網(wǎng)技術(shù)應(yīng)用研究重點(diǎn)實(shí)驗(yàn)室,浙江 杭州 310023)
多攝像頭視頻采集系統(tǒng)中攝像頭切換方案的設(shè)計(jì)與實(shí)現(xiàn)
陳 斌1,2,彭 宏1,2
(1.浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 310023;2.浙江省通信網(wǎng)技術(shù)應(yīng)用研究重點(diǎn)實(shí)驗(yàn)室,浙江 杭州 310023)
目前使用的圖像傳感器主要有CMOS和CCD兩類。CMOS器件功耗低、集成度高,但成像質(zhì)量不如CCD器件好。因此該多攝像頭視頻采集系統(tǒng)采用了CCD和CMOS兩種器件,以滿足多種需求。提出了一種基于TI公司TMS320DM365處理芯片、采用CCD和CMOS器件的攝像頭軟硬件切換設(shè)計(jì)方案。
視頻采集;TMS320DM365;攝像頭切換
近年來(lái),隨著移動(dòng)終端的快速發(fā)展,計(jì)算能力增強(qiáng),移動(dòng)網(wǎng)絡(luò)傳輸速度大幅提高,移動(dòng)視頻監(jiān)控技術(shù)發(fā)展迅速。目前國(guó)內(nèi)外視頻監(jiān)控業(yè)務(wù)主要應(yīng)用在公共領(lǐng)域、行業(yè)用戶和個(gè)人用戶。特別是在公共場(chǎng)所,國(guó)外設(shè)置了眾多監(jiān)控設(shè)備,以加強(qiáng)對(duì)公共領(lǐng)域安全的控制能力[1]。嵌入式視頻采集系統(tǒng)具有高效、體積小、實(shí)時(shí)穩(wěn)定、低成本等優(yōu)點(diǎn)[2],自然而然地成為了視頻監(jiān)控設(shè)備的良好載體。
目前使用的圖像傳感器有CMOS(互補(bǔ)金屬氧化物半導(dǎo)體)和CCD(電荷耦合器件)兩類。與CCD相比,CMOS器件具有功耗低、集成度高等優(yōu)點(diǎn),但是在噪點(diǎn)和成像質(zhì)量方面不如CCD器件[3]。而 CCD器件則剛好相反。所以在本設(shè)計(jì)中,采用了CCD與CMOS搭配的設(shè)計(jì)。其中CCD器件搭配TVP5151視頻解碼芯片,外置的CCD攝像頭能夠提供更靈活、更清晰的視頻圖像。CMOS則是采用了OV5640的模組,利用其集成度高、體積小的特點(diǎn),作為內(nèi)置的視頻采集攝像頭,滿足視頻聊天等一般成像需求。
整個(gè)視頻采集系統(tǒng)終端以TMS320DM365芯片作為處理器芯片,基本模塊有DDR2、SDRAM、NAND Flash、網(wǎng)口、串口以及負(fù)責(zé)進(jìn)行信令和視頻數(shù)據(jù)傳輸?shù)?G模塊等。TI公司的基于DaVinci技術(shù)的 TMS320DM365芯片,集成了一顆 ARM926EJ-S內(nèi)核,一個(gè)圖像處理子系統(tǒng)(VPSS),一個(gè)H.264高清編碼器協(xié)處理器HDVICP和一個(gè)MPEG-4/JPEG高清編碼器協(xié)處理器MJCP,支持多格式編解碼[4],所以特別適用于圖像處理。視頻采集部分主要由DM365的 VPFE(視頻處理前端)、一個(gè)多路轉(zhuǎn)換器和兩個(gè)視頻數(shù)據(jù)采集芯片(OV5640和TVP5151)組成。攝像頭硬件切換由DM365的GPIO口對(duì)多路轉(zhuǎn)換器進(jìn)行控制,選擇輸入到VPFE的數(shù)據(jù)源。
系統(tǒng)硬件框架設(shè)計(jì)圖如圖1所示。
圖1 硬件框架設(shè)計(jì)圖
DM365的VPFE采集驅(qū)動(dòng)是一個(gè)V4L2設(shè)備驅(qū)動(dòng),可以對(duì)RGB和YUV數(shù)據(jù)進(jìn)行采集。VPFE的簡(jiǎn)單框架如圖 2所示[5]。
圖2 VPFE視頻處理前端框架圖
視頻采集前端在接收到原始的YUV視頻數(shù)據(jù)后,可以對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),同時(shí)又將視頻數(shù)據(jù)通過(guò)內(nèi)部的數(shù)據(jù)總線傳輸?shù)綀D像處理模塊。此時(shí)可對(duì)圖像數(shù)據(jù)進(jìn)行裁剪、縮放等,以適應(yīng)本地存儲(chǔ)或者網(wǎng)絡(luò)上傳的需求。
視頻采集前端在接收到原始的YUV視頻數(shù)據(jù)后,可以對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),同時(shí)又將視頻數(shù)據(jù)通過(guò)內(nèi)部的數(shù)據(jù)總線傳輸?shù)綀D像處理模塊。此時(shí)可對(duì)圖像數(shù)據(jù)進(jìn)行裁剪、縮放等,以適應(yīng)本地存儲(chǔ)或者是網(wǎng)絡(luò)上傳的需求。
2.1 VPFE模塊驅(qū)動(dòng)
TMS320DM365數(shù)字多媒體芯片包含一個(gè)視頻處理模塊用來(lái)處理視頻數(shù)據(jù),減輕主處理器的負(fù)擔(dān)。它支持大多數(shù)主流的外置視頻采集設(shè)備。而與外置視頻采集設(shè)備直接相連的就是視頻處理前端子系統(tǒng)(VPFE)。
VPFE采集驅(qū)動(dòng)通過(guò)標(biāo)準(zhǔn)的 V4L2接口將底層硬件的功能暴露給了上層應(yīng)用程序,在應(yīng)用程序和設(shè)備驅(qū)動(dòng)之間建立起了橋梁[6]。VPFE驅(qū)動(dòng)初始化開始后,首先通過(guò) imp_get_hw_if()函數(shù)和 ccdc_get_hw_interface()函數(shù)綁定imp和CCDC的接口函數(shù)組,隨后對(duì)CCDC模塊進(jìn)行初始化。初始化CCDC模塊之后,驅(qū)動(dòng)會(huì)分配需要的內(nèi)存用來(lái)存儲(chǔ)采集上來(lái)的視頻數(shù)據(jù)。最后,便是調(diào)用driver_register(&vpfe_driver)函數(shù)和 platform_device_register(&_vpfe_device)函數(shù)注冊(cè)驅(qū)動(dòng)和平臺(tái)設(shè)備。系統(tǒng)啟動(dòng)時(shí),檢測(cè)到其驅(qū)動(dòng)和設(shè)備都存在后,就會(huì)調(diào)用vpfe_prob()函數(shù),這個(gè)函數(shù)做的最重要的事情就是調(diào)用 video_register_device()函數(shù)綁定了file_operations結(jié)構(gòu)體,提供給應(yīng)用程序訪問(wèn)內(nèi)核與設(shè)備驅(qū)動(dòng)的接口。同時(shí)生成一個(gè)設(shè)備文件節(jié)點(diǎn)(/dev/Video0),這樣,應(yīng)用程序就能通過(guò)訪問(wèn)/ dev/Video0設(shè)備文件節(jié)點(diǎn),配合 Ioctl函數(shù)調(diào)用VPFE驅(qū)動(dòng)中file_operations結(jié)構(gòu)體成員函數(shù)來(lái)進(jìn)行視頻的采集。
VPFE初始化流程圖如圖3所示。在此設(shè)計(jì)中采用了兩種視頻采集芯片,分別為德州儀器的TVP5151和豪威科技的OV5640。這兩種芯片的驅(qū)動(dòng)程序中,在完成標(biāo)準(zhǔn)的I2C設(shè)備注冊(cè)的工作后,都會(huì)調(diào)用 vpif_register_decoder(&ov5640_dev[i])或是vpif_register_decoder(&TVP5151 _dev[i])函數(shù)將采集芯片的各種操作函數(shù)接口封裝成一個(gè)struct decoder_device結(jié)構(gòu)體注冊(cè)到前面提到的 VPFE
模塊中。這樣,應(yīng)用程序就可以通過(guò)VPFE的設(shè)備文件節(jié)點(diǎn)(/dev/Video0)來(lái)調(diào)用 VPFE的操作函數(shù),進(jìn)而再間接地調(diào)用采集設(shè)備的操作函數(shù),完成視頻采集芯片的配置工作,使得其能夠正常工作。
2.2 攝像頭軟切換
圖3 VPFE驅(qū)動(dòng)初始化流程圖
此設(shè)計(jì)中使用了兩種視頻采集芯片 TVP5151與OV5640,因此會(huì)有兩個(gè) decoder_device結(jié)構(gòu)體注冊(cè)到VPFE模塊中。攝像頭的軟切換,也就是對(duì)VPFE模塊中注冊(cè)的 decodor_device結(jié)構(gòu)體進(jìn)行重新選擇,決定該調(diào)用哪個(gè)采集芯片,并對(duì)CCDC模塊進(jìn)行相應(yīng)的配置。于此同時(shí),對(duì)多路選擇器也要進(jìn)行相應(yīng)的配置,使其選擇正確的通路。攝像頭切換流程如圖4所示。
圖4 攝像頭軟切換流程圖
首先自然是通過(guò)3個(gè)GPIO口來(lái)配置多路選擇器選擇正確的通路,使得DM365可以獲取到來(lái)自正確的采集芯片的視頻數(shù)據(jù)。VIDIOC_ENUMINPUT命令會(huì)通過(guò)VPFE模塊調(diào)用到注冊(cè)到VPFE模塊中的采集芯片驅(qū)動(dòng)的操作函數(shù)enuminput,從而依次檢索注冊(cè)到 VPFE中的各個(gè) decoder_device結(jié)構(gòu)體中是否有需要的 input_info,并返回對(duì)應(yīng)的decoder_device的序號(hào)。所以只需要在調(diào)用VIDIOC_ENUMINPUT命令時(shí)傳入與所需要采集芯片驅(qū)動(dòng)中相同的input類型,便可以找到對(duì)應(yīng)的 decoder_device,從而切換到對(duì)應(yīng)的攝像頭。得到正確的decoder_device序號(hào)后,即可用 VIDIOC_S_INPUT命令,調(diào)用到采集芯片驅(qū)動(dòng)中的 initialize函數(shù),完成其初始化。
切換到正確的視頻數(shù)據(jù)源以后,還要對(duì)CCDC模塊進(jìn)行對(duì)應(yīng)的設(shè)置。這時(shí)需要調(diào)用命令 VIDIOC_S_STD:ioctl(fd,VIDIOC_S_STD,&std),它會(huì)調(diào)用到視頻采集芯片驅(qū)動(dòng)中的 setstd函數(shù),進(jìn)而對(duì)驅(qū)動(dòng)中的 struct v4l2_standard結(jié)構(gòu)體數(shù)組進(jìn)行便利,找到其中數(shù)據(jù)成員ID與 VIDIOC_S_STD命令傳入?yún)?shù) std相同的項(xiàng),返回其 name成員,并將其作為 ccdc_hw_if->setstd()函數(shù)的參數(shù)執(zhí)行,便可以對(duì)CCDC模塊的分辨率、幀率等信息進(jìn)行設(shè)置。例如,當(dāng)檢索到的name值為“VGA-30”時(shí),CCDC模塊分辨率便會(huì)被設(shè)置成 640×480,幀率為 30 FPS。
2.3 掃描方式的切換
此設(shè)計(jì)方案中用到的兩種視頻采集芯片的掃描方式是不同的。TVP5151是隔行掃描,一幀分為奇偶兩場(chǎng),而OV5640是逐行掃描。VPFE模塊對(duì)于這兩種掃描方式的處理方式是不同的,所以完成攝像頭的切換后,還要把CCDC模塊掃描方式設(shè)定成與對(duì)應(yīng)的視頻采集芯片一致。在VPFE驅(qū)動(dòng)中,有一個(gè)標(biāo)志位frame_format就是用來(lái)表示掃描方式的,frame_format為 0時(shí)表示隔行掃描,即使用 TVP5151;為 1時(shí)就表示逐行掃描,即使用OV5640。原本ccdc_hw_if->setstd()函數(shù)還可以對(duì)掃描方式進(jìn)行設(shè)定,但是由于本設(shè)計(jì)所使用的內(nèi)核版本的缺陷,設(shè)定無(wú)法生效,所以添加了一個(gè)小補(bǔ)?。涸趦?nèi)核VOFE驅(qū)動(dòng)中聲明了一個(gè)變量 scanmode,并使用 EXP ORT_SYMBOL(scanmode)使之成為內(nèi)核全局變量。然后分別在 TVP5151和 OV5640驅(qū)動(dòng)的 intialize函數(shù)中對(duì)其進(jìn)行賦值。TVP5151為隔行掃描,故對(duì)其賦0,OV5640則相反。這樣,每次切換攝像頭后,在初始化采集芯片的同時(shí)也會(huì)對(duì)CCDC的掃描方式進(jìn)行選擇。
圖5 測(cè)試效果圖
測(cè)試在實(shí)驗(yàn)室的單兵設(shè)備上進(jìn)行。在后置的OV5640攝像頭模組和外置的 TVP5151攝像頭模組之間進(jìn)行了切換,外置攝像頭更清晰,也更靈活。而內(nèi)置的則勝在方便、小巧。設(shè)計(jì)達(dá)到了預(yù)期目標(biāo)。測(cè)試效果圖如圖5所示。
嵌入式芯片技術(shù)的快速發(fā)展,使其在視頻監(jiān)控設(shè)備總的應(yīng)用越來(lái)越廣泛。同樣發(fā)展迅速的還有視頻采集芯片。本文設(shè)計(jì)實(shí)現(xiàn)了基于TMS320DM365硬件平臺(tái)的多攝像頭軟硬件切換方案,采用了CMOS和CCD兩種器件,實(shí)現(xiàn)了不同廠家型號(hào)、不同掃描方式的視頻采集芯片模組之間的順暢切換。這在視頻采集芯片發(fā)展越來(lái)越多樣化的今天,有一定的意義。
[1]苗潤(rùn)生.3G移動(dòng)視頻監(jiān)控業(yè)務(wù)的應(yīng)用與發(fā)展[D].北京:北京郵電大學(xué),2010.
[2]李佳林,劉永春.基于 S3C2440網(wǎng)絡(luò)視頻采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2014(6):1314-1316,1325.
[3]王旭東,葉玉堂.CMOS與CCD圖像傳感器的比較研究和發(fā)展趨勢(shì)[J].電子設(shè)計(jì)工程,2010(11):178-181.
[4]徐凱,錢燕,魏宗群,等.基于 TMS320DM365的 3G實(shí)時(shí)視頻傳輸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].浙江農(nóng)業(yè)科學(xué),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的雙碼流視頻監(jiān)控設(shè)備的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2015,34(10):41-43,47.
Design and imp lementation of camera sw itch scheme in video capture system w ith multi camera based on TMS320DM 365
Chen Bin1,2,Peng Hong1,2
(1.College of Information Engineering,Zhejiang University of Technology,Hangzhou 310023,China;2.Zhejiang Provincial Key Laboratory of Communication Networks and Applications,Hangzhou 310023,China)
The image sensors used currently are mainly CCD and CMOS.The CMOS device has the advantages of low power consumption and high integration degree,but the image quality of CMOS device is not as good as CCD′s.In order to meet different demands,the video capture system with multi cameras proposed in this paper used both CCD and CMOS devices.And this paper proposed the switch scheme of hardware and software between two different kinds of devices,which is based on TMS320DM365 processor from Texas Instruments.
video capture;TMS320DM365;camera switch
TP37
A
1674-7720(2015)24-0047-03
陳斌,彭宏.多攝像頭視頻采集系統(tǒng)中攝像頭切換方案的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2015,34(24):47-49.
2015-08-17)
陳斌(1991-),男,碩士研究生,主要研究方向:多媒體數(shù)字通信。
彭宏(1970-),女,碩士,副教授,主要研究方向:無(wú)線電通信。