陳泳安 何昌東 金龍 趙瑩瑩 李翔飛
【摘要】為解決現(xiàn)有無(wú)線(xiàn)視頻技術(shù)的傳輸視頻圖像質(zhì)量差,傳輸容量小,傳輸速度慢等缺點(diǎn)。設(shè)計(jì)了以ARM9系列的S3C2440為核心控制器,結(jié)合了外部LCD顯示模塊、USB攝像頭接口模塊以及GPRS通信模塊,并在LINUX操作系統(tǒng)下完成上述模塊的內(nèi)核移植。針對(duì)傳統(tǒng)的圖像壓縮算法有嚴(yán)重失真的問(wèn)題,對(duì)H.264圖像壓縮算法進(jìn)行了研究,該算法利用熵編碼技術(shù)解決了圖像壓縮慢和失真嚴(yán)重的問(wèn)題。從而實(shí)現(xiàn)了無(wú)線(xiàn)視頻傳輸過(guò)程中圖像質(zhì)量的高清晰、快速以及近無(wú)損傳輸;以及操作系統(tǒng)的方便快捷移植。
【關(guān)鍵詞】S3C2440;無(wú)線(xiàn)傳輸;嵌入式Linux;GPRS;H.264
引言
通訊技術(shù)與嵌入式技術(shù)的發(fā)展,將人類(lèi)社會(huì)帶入到了一個(gè)以信息化為核心的嶄新紀(jì)元。信息社會(huì)的重要特征是人們對(duì)各種信息能夠方便、靈活的獲取以及在這個(gè)基礎(chǔ)上對(duì)各種信息的充分應(yīng)用。由于視頻圖像文件包含的信息量大、可見(jiàn)性高,在信息社會(huì)得到了廣泛的應(yīng)用。因此如何對(duì)圖像進(jìn)行高質(zhì)量的獲取、有效傳輸和理解將是一個(gè)核心的研究領(lǐng)域。
目前,各種應(yīng)急通信以及復(fù)雜環(huán)境下的通信方案設(shè)計(jì)對(duì)無(wú)線(xiàn)通信技術(shù)的需求越來(lái)愈多,各個(gè)頻段、各種調(diào)制和通信方式的通信技術(shù)紛紛出現(xiàn)以應(yīng)對(duì)這一情況?;趥鹘y(tǒng)的有線(xiàn)視頻監(jiān)控系統(tǒng)存在著顯著的缺陷,例如:欠缺矯捷性、擴(kuò)展和調(diào)整不便利、缺乏移動(dòng)性等等。而基于ARM平臺(tái)的視頻圖像無(wú)線(xiàn)數(shù)字傳輸方式,具有體積小、功耗低、實(shí)時(shí)性好及傳輸可靠、資源豐富、功耗低、價(jià)格低廉等優(yōu)點(diǎn)[1],在安防、會(huì)議和無(wú)線(xiàn)數(shù)字電視上的到了極大地推廣應(yīng)用。
1.系統(tǒng)總體方案的設(shè)計(jì)
目前,多數(shù)無(wú)線(xiàn)視頻傳輸系統(tǒng)的體積較大,核心處理模塊構(gòu)造簡(jiǎn)單,只有簡(jiǎn)單的控制視頻采集與視頻傳輸?shù)墓δ?,而視頻壓縮編碼多是通過(guò)視頻采集設(shè)備進(jìn)行的,上位機(jī)接收端接收的視頻信息較為模糊,且系統(tǒng)缺乏智能化的功能和人性化的設(shè)計(jì)?,F(xiàn)如今無(wú)線(xiàn)視頻傳輸在安防系統(tǒng)上有著重要的作用,視頻圖像不清晰或者數(shù)據(jù)缺失都會(huì)造成信息的遺漏,所以本文設(shè)計(jì)的無(wú)線(xiàn)視頻傳輸系統(tǒng)方案研究正是考慮到這些因素來(lái)設(shè)計(jì)的,其系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
無(wú)線(xiàn)視頻傳輸系統(tǒng)的運(yùn)作流程主要概述為:系統(tǒng)上電后事先插接好的USB攝像頭采集設(shè)備、LCD觸摸屏設(shè)備、存儲(chǔ)模塊和GPRS模塊通電開(kāi)始準(zhǔn)備運(yùn)行,并發(fā)送給核心處理器工作狀態(tài)信號(hào)。主控模塊接收到信號(hào)后,通過(guò)硬件系統(tǒng)核心處理模塊發(fā)出命令開(kāi)始采集視頻圖像數(shù)據(jù),LCD觸摸屏啟動(dòng)并進(jìn)入登錄界面。采集到的數(shù)據(jù)可通過(guò)液晶屏進(jìn)行預(yù)播放,同時(shí)系統(tǒng)中基于H.264的軟件編碼系統(tǒng)開(kāi)始編碼操作,編碼處理的數(shù)據(jù)在存儲(chǔ)中緩沖并進(jìn)行傳輸?shù)臏?zhǔn)備工作。嵌入式系統(tǒng)核心模塊發(fā)出傳輸?shù)刂泛蛡鬏斝盘?hào),GPRS模塊開(kāi)始工作,將存儲(chǔ)緩沖區(qū)中編碼壓縮好的數(shù)據(jù)通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò)發(fā)送至上位機(jī)終端,經(jīng)解碼解壓顯示播放[2]。
2.控制系統(tǒng)硬件電路的設(shè)計(jì)
無(wú)線(xiàn)視頻傳輸系統(tǒng)的硬件平臺(tái)主要有以下幾部分組成,核心芯片為S3C440的ARM最小系統(tǒng)電路、USB攝像頭接口電路、GPRS無(wú)線(xiàn)通信電路、LCD顯示設(shè)備電路和電源電路。下面詳細(xì)介紹各模塊的硬件電路設(shè)計(jì)及功能實(shí)現(xiàn)。
GPRS通信模塊硬件電路設(shè)計(jì):
選用Siemens公司生產(chǎn)的型號(hào)為MC35i的GPRS模塊,該模塊的連接接口為9針標(biāo)準(zhǔn)RS-232接口,通過(guò)MAX232電平轉(zhuǎn)換芯片和S3C2440的UART1口相連,進(jìn)行全雙工通信[3]。GPRS通信模塊硬件電路設(shè)計(jì)如圖2所示。
3.系統(tǒng)軟件開(kāi)發(fā)設(shè)計(jì)
本課題設(shè)計(jì)的無(wú)線(xiàn)視頻傳輸系統(tǒng)的軟件部分主要由四部分組成:bootloader的移植,Linux內(nèi)核移植,根文件系統(tǒng)的制作,底層硬件的驅(qū)動(dòng)[4]。
3.1 USB設(shè)備驅(qū)動(dòng)移植
嵌入式Linux系統(tǒng)在USB驅(qū)動(dòng)設(shè)備啟動(dòng),驅(qū)動(dòng)程序首先要在系統(tǒng)內(nèi)核中進(jìn)行注冊(cè),并提供設(shè)備相關(guān)的信息,如修改設(shè)備的類(lèi)型和它所支持的操作等。一般來(lái)說(shuō),USB設(shè)備在系統(tǒng)上熱插拔的操作都會(huì)通過(guò)usb_driver結(jié)構(gòu)體傳遞。USB驅(qū)動(dòng)程序中必不可少的主要結(jié)構(gòu)體為struct usb_driver,它向USB核心代碼描述了USB 驅(qū)動(dòng)程序。
在USB驅(qū)動(dòng)操作中探測(cè)函數(shù)probe()和斷開(kāi)函數(shù)disconnect()為必須執(zhí)行函數(shù)。在設(shè)備插入和拔出時(shí)分別被檢測(cè)命令調(diào)用,作用為初始化設(shè)備和釋放軟件資源。而注冊(cè)和注銷(xiāo)usb_driver分別通過(guò)以下兩個(gè)函數(shù)來(lái)完成:
int usb_register(struct usb_driver *new_driver)
void usb_deregister(struct usb_driver *driver)
USB從意義上來(lái)說(shuō)只是一條總線(xiàn),當(dāng)USB驅(qū)動(dòng)運(yùn)行時(shí),設(shè)備本身的各個(gè)驅(qū)動(dòng)由USB與主機(jī)相連接收或發(fā)出命令。所以u(píng)sb_driver在驅(qū)動(dòng)代碼中只起到了牽線(xiàn)作用,而設(shè)備真正的注冊(cè)和注銷(xiāo)直接發(fā)生在模塊加載和卸載的相關(guān)函數(shù)中。
3.2 H.264熵編碼技術(shù)
熵編碼是無(wú)損壓縮編碼,它生成的碼流可以經(jīng)解碼無(wú)失真的恢復(fù)出原始數(shù)據(jù),是將特定的數(shù)據(jù)編碼成定長(zhǎng)的或可變長(zhǎng)二進(jìn)制碼字的一種編碼方法,H.264標(biāo)準(zhǔn)中的熵編碼過(guò)程,包含基于內(nèi)容自適應(yīng)的變長(zhǎng)編碼(CAVLC:Context-based Adaptive Variable Length Coding)過(guò)程、基于內(nèi)容自適應(yīng)的二進(jìn)制算術(shù)編碼(CABAC:Context-based Adaptive Binary Arithmetic Coding)過(guò)程和指數(shù)哥倫布熵編碼(Exp-Golomb)過(guò)程[5]。各部分的分析如下:
指數(shù)哥倫布熵編碼用于對(duì)句法元素的編碼,把所有句法元素映像到統(tǒng)一的可擴(kuò)展碼字表,不單獨(dú)對(duì)每個(gè)句法元素設(shè)計(jì)不同的碼字表,有助于降低編解碼的復(fù)雜度[5]。指數(shù)哥倫布熵編碼過(guò)程中,碼流中參考幀索引、量化步長(zhǎng)、宏塊類(lèi)型、運(yùn)動(dòng)矢量差值和幀內(nèi)預(yù)測(cè)模式等信息為其壓縮編碼的主要對(duì)象。其編碼的碼字構(gòu)造為:
3.3 幀間預(yù)測(cè)技術(shù)
與幀內(nèi)預(yù)測(cè)模塊相同,幀間預(yù)測(cè)模塊也分為兩個(gè)部分:指數(shù)哥倫布熵解碼和針對(duì)當(dāng)前塊亮度、色度分量進(jìn)行的1/4和1/8精度的內(nèi)插計(jì)算,在編碼過(guò)程中對(duì)幀與幀之間沒(méi)有明顯變化的圖像內(nèi)容進(jìn)行編解碼對(duì)資源會(huì)造成浪費(fèi),高效的對(duì)所需要的內(nèi)容進(jìn)行編解碼是幀間預(yù)測(cè)技術(shù)的優(yōu)勢(shì)[47]。
在幀間預(yù)測(cè)方法中,參考圖像為先前已編碼幀的圖像,在幀間模式運(yùn)行時(shí),系統(tǒng)利用參考圖像對(duì)當(dāng)前圖像進(jìn)行預(yù)測(cè),此時(shí)當(dāng)前圖像的抽樣值為參考圖像的抽樣點(diǎn)通過(guò)運(yùn)動(dòng)矢量的補(bǔ)償值,參考幀的選擇和模式判定公式如下:
S為當(dāng)前塊像素,mv為當(dāng)前矢量,pred為預(yù)測(cè)矢量,ref為參考幀,r(ref,mv)為參考?jí)K像素,SA(T)D為當(dāng)前塊和參考?jí)K像素差值的絕對(duì)值,c為重建塊,R為對(duì)宏編碼的比特,SSD為當(dāng)前塊和重建塊的差值平方和。這種方法能夠降低圖像的時(shí)域相關(guān)性,提高了視頻圖像的壓縮效率。H.264標(biāo)準(zhǔn)中使用塊結(jié)構(gòu)運(yùn)動(dòng)補(bǔ)償,支持多種塊結(jié)構(gòu)預(yù)測(cè),運(yùn)算精度能精確到1/4像素。
圖3 上位機(jī)接收視頻實(shí)時(shí)顯示
4.試驗(yàn)結(jié)果分析
系統(tǒng)采集的視頻圖像信息通過(guò)無(wú)限傳輸后在上位機(jī)接收端的播放器上播放情況如圖3 所示。圖中所看到的視頻畫(huà)面分辨率為720×576,系統(tǒng)H.264軟件編碼率為400kbps,幀率為30fps。
5.結(jié)論
借鑒原有編碼技術(shù),本設(shè)計(jì)使用新的壓縮方法在最大程度上減少了視頻數(shù)據(jù)的丟失,同時(shí)在原有的硬件基礎(chǔ)上添加了智能控制系統(tǒng)。
本設(shè)計(jì)的智能系統(tǒng)具有良好的適應(yīng)能力,能夠在一些比較復(fù)雜的環(huán)境下工作,其中采用的LCD觸摸顯示屏在人為操作時(shí)更加簡(jiǎn)便也更加智能,極大地簡(jiǎn)化了操作過(guò)程。本設(shè)計(jì)的無(wú)線(xiàn)視頻傳輸系統(tǒng)融合了嵌入式系統(tǒng)和當(dāng)下最為普及的GPRS技術(shù)解決了一些復(fù)雜環(huán)境下視頻傳輸?shù)膶?shí)際需求。
參考文獻(xiàn)
[1]傅中君.嵌入式GPRS無(wú)線(xiàn)通信模塊的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用.2009,14(23)2162-165.
[2]翟戰(zhàn)強(qiáng),蔡少華.基于GPRS/GPS/GIS的車(chē)輛導(dǎo)航與監(jiān)控系統(tǒng)[J].測(cè)繪通報(bào),2004,26(15)34-36.
[3]楊磊,蔣念平.嵌入式Linux下USB主控制器驅(qū)動(dòng)設(shè)計(jì)[J].信息技術(shù),2013,13(36)121-123.
[4]黃倩,閔華松.基于ARM的移動(dòng)視頻監(jiān)控系統(tǒng)[J].現(xiàn)代電子技術(shù),2010,33(1):148-152.
[5]郭知明,楊世風(fēng).基于GPRS技術(shù)的城市管網(wǎng)監(jiān)測(cè)系統(tǒng)的研究[J].國(guó)外電子測(cè)量技術(shù),2009,28(12):81-83.
作者簡(jiǎn)介:陳泳安(1988—),男,中北大學(xué)計(jì)算機(jī)與控制工程學(xué)院碩士研究生,主要從事嵌入式系統(tǒng)開(kāi)發(fā)工作。