本嵌入式無(wú)線視頻監(jiān)控系統(tǒng)采用高性能ARM9芯片作微處理器,,通過(guò)嵌入式Linux采集USB攝像頭視頻數(shù)據(jù),。
并將采集的視頻數(shù)據(jù)幀經(jīng)JPEG壓縮;在ARM9芯片的控制下,,通過(guò)2.4GHz無(wú)線發(fā)送/接收模塊進(jìn)行視頻數(shù)據(jù)傳輸,;無(wú)線接收端再將視頻數(shù)據(jù)通過(guò)網(wǎng)絡(luò)接口提交給視頻應(yīng)用服務(wù)端;最后由視頻應(yīng)用服務(wù)端將接收到的壓縮數(shù)據(jù)幀重組,、復(fù)合成視頻圖像,,實(shí)現(xiàn)無(wú)線視頻監(jiān)控。
引言
高性能,、低功耗嵌入式CPU和高可靠性網(wǎng)絡(luò)操作系統(tǒng)的面世,,使得可視電話、視頻會(huì)議、遠(yuǎn)程視頻監(jiān)控等運(yùn)算數(shù)據(jù)量大的應(yīng)用在嵌入式設(shè)備中實(shí)現(xiàn)成為可能,。傳統(tǒng)的基于同軸電纜的視頻監(jiān)控系統(tǒng)結(jié)構(gòu)復(fù)雜,、穩(wěn)定性差、可靠性低且價(jià)格昂貴,,因而出現(xiàn)了嵌入式網(wǎng)絡(luò)視頻服務(wù)器等遠(yuǎn)程Web視頻監(jiān)控系統(tǒng),。在本嵌入式無(wú)線視頻監(jiān)控系統(tǒng)中,使用高性能ARM9芯片作微處理器,,控制video4linux實(shí)現(xiàn)USB攝像頭視頻數(shù)據(jù)采集,,采集的視頻數(shù)據(jù)經(jīng)JPEG壓縮后,在 ARM9芯片的控制下通過(guò)2.4GHz無(wú)線發(fā)送/接收模塊進(jìn)行視頻數(shù)據(jù)傳輸,;視頻傳輸模塊再將視頻數(shù)據(jù)通過(guò)串口或網(wǎng)絡(luò)提交給視頻應(yīng)用服務(wù)端,,最后由視頻應(yīng)用服務(wù)端將接收到的壓縮數(shù)據(jù)幀重組、復(fù)合成視頻圖像,,實(shí)現(xiàn)無(wú)線視頻監(jiān)控,。
1 系統(tǒng)組成結(jié)構(gòu)
整個(gè)系統(tǒng)由視頻采集終端、2.4G無(wú)線發(fā)送模塊,、2.4G無(wú)線接收模塊,、視頻傳輸和視頻應(yīng)用服務(wù)端等5個(gè)模塊組成。 其組成結(jié)構(gòu)如圖1所示:
圖1 嵌入式無(wú)線視頻監(jiān)控系統(tǒng)結(jié)構(gòu)框圖
視頻采集終端包括以S3C2410X為核心的中央控制和數(shù)據(jù)處理中心,,以及USB Camera數(shù)據(jù)采集單元,。中央控制和數(shù)據(jù)處理中心主要完成視頻采集終端控制和視頻圖像壓縮,并將需要傳輸?shù)臄?shù)據(jù)經(jīng)編碼處理后,,通過(guò)SIO發(fā)送到 nRF2401無(wú)線發(fā)射模塊,。
視頻傳輸模塊主要包括:以S3C2410X為核心的中央控制和數(shù)據(jù)處理中心以及將視頻數(shù)據(jù)傳輸?shù)揭曨l應(yīng)用服務(wù)端的MAC接口和UART接口。視頻傳輸模塊的中央控制和數(shù)據(jù)處理中心主要完成以下任務(wù):nRF2401將接收到的視頻數(shù)據(jù)提交給SIO模塊,,S3C2410X先解碼SIO模塊數(shù)據(jù),,再通過(guò)UART 接口或MAC接口將視頻數(shù)據(jù)傳輸?shù)揭曨l應(yīng)用服務(wù)端。
視頻應(yīng)用服務(wù)端從串口或網(wǎng)絡(luò)接口接收視頻數(shù)據(jù),,并將其重組,、復(fù)合成視頻圖像。
1.1 視頻采集終端硬件結(jié)構(gòu)
在本設(shè)計(jì)中,,充分利用了S3C2410X所繼承的片上資源,,只需要擴(kuò)充SDRAM、Nand Flash,、4X4 Array Keyboard,、USB Host、Ethernet Interface,、RS232 Interface,、JTAG,、Power等模塊。視頻采集終端是整個(gè)系統(tǒng)的核心模塊之一,,主要完成視頻捕獲和圖像壓縮,,其硬件邏輯結(jié)構(gòu)框圖如圖2所示:
圖2 視頻采集終端硬件邏輯框圖
2 視頻采集模塊設(shè)計(jì)與實(shí)現(xiàn)
視頻捕獲模塊是整個(gè)視頻采集終端的核心。它通過(guò)嵌入式Linux操作系統(tǒng)調(diào)度V4L (video4linux)和影像設(shè)備驅(qū)動(dòng)程序來(lái)完成視頻捕獲,。V4L 是Linux影像系統(tǒng)與嵌入式影像的基礎(chǔ),,是Linux kernel里支持影像設(shè)備的一組APIs,配合適當(dāng)?shù)囊曨l采集卡與視頻采集卡驅(qū)動(dòng)程序,,V4L可以實(shí)現(xiàn)影像采集,、AM/FM無(wú)線廣播、影像CODEC,、頻道切換等功能,。目前,V4L 主要應(yīng)用在影像串流系統(tǒng)與嵌入式影像系統(tǒng)里,,其應(yīng)用范圍相當(dāng)廣泛,,比如:遠(yuǎn)程教學(xué)、遠(yuǎn)程醫(yī)療,、視頻會(huì)議,、視頻監(jiān)控、可視電話等,。V4L為2層式架構(gòu),最上層為V4L驅(qū)動(dòng)程序,,最下層則是影像設(shè)備驅(qū)動(dòng)程序,。
在Linux操作系統(tǒng)中,外部設(shè)備都作為設(shè)備文件來(lái)管理,,因此,,對(duì)外部設(shè)備的操作就轉(zhuǎn)變成對(duì)設(shè)備文件的操作。視頻設(shè)備文件位于/dev/目錄下,,一般情況下為video0,。當(dāng)攝像頭通過(guò)USB接口連接到視頻采集終端后,在程序中調(diào)用V4L APIs對(duì)設(shè)備文件video0的讀操作即可實(shí)現(xiàn)攝像頭視頻數(shù)據(jù)采集,。其主要過(guò)程如下:
1) 打開設(shè)備文件: int v4l_open(char *dev, v4l_device *vd){}打開影像源的設(shè)備文件,;
2) 初始化picture: int v4l_get_picture(v4l_device *vd){} 獲取輸入的影像信息;
3) 初始化channel:int v4l_get_channels(v4l_device *vd){} 獲取每個(gè)channel的信息,;
4) 對(duì)channel設(shè)置norm:int v4l_set_norm(v4l_device *vd, int norm){} 對(duì)所有的channel設(shè)置norm,;
5) 設(shè)備地址映射:v4l_mmap_init(v4l_device *vd){} 返回存放圖像數(shù)據(jù)的地址;
6) 初始化mmap緩沖區(qū): int v4l_grab_init(v4l_device *vd, int width, int height){},;
7) 視頻捕獲同步: int v4l_grab_sync(v4l_device *vd){},;
8) 視頻捕獲: int device_grab_frame(){}。
通過(guò)以上操作,即可將攝像頭視頻數(shù)據(jù)采集到內(nèi)存,。采集到內(nèi)存的視頻數(shù)據(jù)既可采用文件的形式保存,,也可將其壓縮后封裝進(jìn)數(shù)據(jù)包,通過(guò)網(wǎng)絡(luò)傳輸?shù)綌?shù)據(jù)處理中心,。本設(shè)計(jì)采用后一種處理方法,,即:先將采集的視頻數(shù)據(jù)進(jìn)行JPEG壓縮,再將其封裝進(jìn)數(shù)據(jù)包傳輸?shù)揭曨l應(yīng)用服務(wù)端處理,。
3 視頻壓縮模塊設(shè)計(jì)
由于視頻采集模塊采集的視頻數(shù)據(jù)信息量較大,,如果直接通過(guò)網(wǎng)絡(luò)傳輸,則會(huì)增加數(shù)據(jù)傳輸系統(tǒng)的負(fù)擔(dān),,大大降低數(shù)據(jù)傳輸效率,。為此,本設(shè)計(jì)采用JPEG —Joint Photographic Experts Group壓縮編碼算法對(duì)視頻數(shù)據(jù)進(jìn)行壓縮,。JPEG是一個(gè)適用于彩色,、單色多灰度、連續(xù)色調(diào)靜止數(shù)字圖像的壓縮標(biāo)準(zhǔn),,是靜態(tài)數(shù)字圖像壓縮的國(guó)際標(biāo)準(zhǔn),,不僅適用于靜止圖像壓縮,而且適用于電視圖像序列的幀內(nèi)圖像壓縮,。由于JPEG壓縮采用的是全彩影像標(biāo)準(zhǔn),,其主要處理過(guò)程包括:色彩模型轉(zhuǎn)換、離散余弦— DCT變換,、重排DCT結(jié)果,、量化、編碼等,。
在本設(shè)計(jì)中,,采用最基本的JPEG算法,其主要步驟為:首先,,通過(guò)離散余弦變換(DCT)去除數(shù)據(jù)冗余,;其次,使用量化表對(duì)DCT系數(shù)進(jìn)行量化,;最后,,采用Huaffman可變字長(zhǎng)編碼對(duì)量化后的DCT系數(shù)進(jìn)行編碼,使其熵達(dá)到最小,。通過(guò)實(shí)驗(yàn),,數(shù)據(jù)壓縮效果良好,圖像壓縮率可以達(dá)到70%左右,。
4 nRF2401無(wú)線發(fā)射,、接收模塊設(shè)計(jì)
本設(shè)計(jì)采用nRF2401 2.4GHz無(wú)線收發(fā)芯片完成視頻數(shù)據(jù)的無(wú)線傳輸,。nRF2410是一款單片射頻收發(fā)芯片,工作在2.4GHz~2.5GHz ISM頻段,,該芯片內(nèi)置頻率合成器,、功率放大器、晶振和調(diào)制解調(diào)器等功能模塊,,其輸出功率和通信頻道等參數(shù)都可以通過(guò)程序進(jìn)行配置,。內(nèi)置的 DuoCeiver接收器使nRF2401可以使用同一天線同時(shí)接收兩個(gè)不同頻道的數(shù)據(jù),這為視頻數(shù)據(jù)的傳輸提供了有利條件,。
nRF2401在發(fā)送和接收數(shù)據(jù)時(shí)主要完成以下操作:
1)初始化發(fā)送端和接收端:主要完成I/O端口的配置,,使能發(fā)送器/接收器,啟動(dòng)計(jì)數(shù)器等,;
2)發(fā)送器/接收器配置:先打開配置方式,,再配置發(fā)送/接收器,最后使能收發(fā)功能,;
3)接收包/接收包處理:
4)發(fā)送/接收數(shù)據(jù):完成數(shù)據(jù)包的發(fā)送/接收操作,;
5)讀取A/D轉(zhuǎn)換結(jié)果:等待AD轉(zhuǎn)換完成后,讀取A/D轉(zhuǎn)換結(jié)果數(shù)據(jù),,并開始接受新的轉(zhuǎn)換,;
5 視頻傳輸模塊設(shè)計(jì)
視頻傳輸模塊收到無(wú)線接收模塊遞交的視頻數(shù)據(jù)后,可以通過(guò)串口或網(wǎng)絡(luò)接口將其傳輸?shù)揭曨l應(yīng)用服務(wù)端,,本設(shè)計(jì)采用網(wǎng)絡(luò)接口進(jìn)行數(shù)據(jù)傳輸,。目前,互聯(lián)網(wǎng)上傳輸視頻數(shù)據(jù)大多采用UDP協(xié)議,。UDP協(xié)議提供非連接,、不可靠的數(shù)據(jù)傳輸,由于接收端只對(duì)收到的UDP數(shù)據(jù)包進(jìn)行簡(jiǎn)單的完整性校驗(yàn),,丟棄有錯(cuò)誤的數(shù)據(jù)包,因此數(shù)據(jù)傳輸速度較快,。然而,,為了提高數(shù)據(jù)傳輸?shù)臏?zhǔn)確性和減少因使用UDP協(xié)議而額外增加的、繁瑣的數(shù)據(jù)確認(rèn)操作,,本設(shè)計(jì)選用面向連接的,、可靠的數(shù)據(jù)傳輸協(xié)議—TCP。視頻傳輸模塊與視頻應(yīng)用服務(wù)端之間的通信過(guò)程如圖3所示:
6 視頻應(yīng)用服務(wù)端—視頻顯示模塊設(shè)計(jì)與實(shí)現(xiàn)
視頻應(yīng)用服務(wù)端采用Borland C++ Builder6.0完成監(jiān)控視頻的合成(如果視頻應(yīng)用服務(wù)端采用Linux操作系統(tǒng),,則可以使用Kylix完成相同的功能),。由于BCB的Image類可以完成精確到像素的圖像處理能力,可以將BMP,、Drawing,、自定義圖形等顯示成圖像,。因此,Socket API 從網(wǎng)絡(luò)接收視頻數(shù)據(jù)后,,首先將接收到的JPEG圖像轉(zhuǎn)換成BMP,,然后將其傳送給Image對(duì)象,Image對(duì)象最后處理視頻數(shù)據(jù),、生成圖像視頻并將其顯示出來(lái),。
7 結(jié)束語(yǔ)
本文提出了一種基于ARM S3C2410X的嵌入式無(wú)線視頻監(jiān)控系統(tǒng)設(shè)計(jì)。采用嵌入式Linux操作系統(tǒng)進(jìn)行視頻采集,、壓縮和打包并通過(guò)nRF2401無(wú)線發(fā)射,、接收模塊進(jìn)行視頻數(shù)據(jù)無(wú)線傳輸,最后通過(guò)TCP/IP網(wǎng)絡(luò)將視頻數(shù)據(jù)從視頻傳輸模塊傳輸?shù)揭曨l應(yīng)用服務(wù)端,,構(gòu)成一套完整的無(wú)線視頻監(jiān)控系統(tǒng),。由于系統(tǒng)的核心工作采用高性能嵌入式處理器完成,因此該系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單,、性能穩(wěn)定,、成本低廉等優(yōu)點(diǎn),在油田,、油氣井無(wú)線視頻監(jiān)控,,智能家居等領(lǐng)域具有廣闊的應(yīng)用前景。
本文作者創(chuàng)新點(diǎn):將視頻監(jiān)控從有線系統(tǒng)延伸到無(wú)線系統(tǒng),,提出了構(gòu)建無(wú)線視頻局域網(wǎng)的一種方法,,此方法在智能家居等領(lǐng)域具有廣闊的應(yīng)用前景。
參考文獻(xiàn):
[1] 陳俊宏,,Embedded Linux嵌入式系統(tǒng)原理與實(shí)務(wù)[M].北京:中國(guó)鐵道出版社,,2004
[2] 曹 翔, 實(shí)時(shí)視頻傳輸在MPLS網(wǎng)絡(luò)中的QoS研究[J]. 微計(jì)算機(jī)信息,,2006,,7-3:58-60
[3] Nordic VLSI ASA .nRF2401 Single Chip 2.4GHz Radio Transceiver Product Specification,2003.