0 引 言 傳統的視頻監控系統主要以模擬信號監控系統和基于插卡的數字監控系統為主。其中模擬信號監控系統布線(xiàn)工程量大,要耗費大量的存儲介質(zhì),查詢(xún)取證也十分繁瑣;基于插卡的數字監控系統是由1臺PC機加圖像采集卡完成的,系統的成本高,而且PC機需要有人值守,無(wú)法在惡劣環(huán)境下使用。在視頻監控領(lǐng)域中,如何使信息傳輸得更快,更穩定,距離更遠,系統的成本、體積、功耗更低等問(wèn)題是擺在當前技術(shù)研發(fā)人員面前的首要問(wèn)題。 在此提出一種基于嵌入式Windows CE5.O的無(wú)線(xiàn)視頻監控系統。解決了傳統視頻監控系統成本高、體積大、傳輸距離有限、功耗大、安裝不方便等問(wèn)題。該系統的設計將為無(wú)線(xiàn)視頻監控提供一種新的思路、方法和技術(shù)路線(xiàn);在安防、遠程教育、遠程視頻會(huì )議、醫療系統等無(wú)線(xiàn)視頻領(lǐng)域具有廣闊的應用前景。 1 系統的整體硬件框圖介紹 基于嵌入式WinCE5.0的無(wú)線(xiàn)監控系統的硬件系統主要由嵌入式終端和服務(wù)器端的PC機組成。嵌入式終端平臺的微處理器選擇的是基于ARM9T20內核的S3C2440,S3C2440有豐富的接口,其中攝像頭接口與CMOS的攝像頭相連,串口與GPRS發(fā)射模塊相連;服務(wù)器端主要是1臺PC機和GPRS接收模塊。整個(gè)框圖如1所示。 系統首先通過(guò)S3C2440微處理器控制CMOS攝像頭采集圖像數據,經(jīng)過(guò)壓縮編碼后,再通過(guò)GPRS無(wú)線(xiàn)發(fā)射模塊將壓縮后的數據發(fā)射出去,在服務(wù)器端的PC機通過(guò)GPRS接收模塊接收數據,并通過(guò)相應的應用程序,對視頻數據進(jìn)行解碼,并通過(guò)屏幕顯示出來(lái)。其中包含有S3C2440微處理器的嵌入式終端平臺的核心控制板如圖2所示。 2 系統的擴展接口設計 2.1 攝像頭接口設計 攝像頭中用的圖像采集芯片為OV9650圖像傳感器,該圖像傳感器具有10位的數據接口和標準的SCCB接口,采用CSP一28封裝,體積小。 該芯片支持RGB(4:2:2),YUV(4:2:2),YCrCb(4:2:2)三種數據輸出格式,內置138個(gè)設備控制寄存器,地址分別從 Ox00~Ox8A,通過(guò)SCCB接口可以方便地設置傳感器視窗大小、增益、白平衡校正、曝光控制、飽和度、色調等參數。包含有圖像傳感器OV9650攝像頭模塊如圖3所示。 S3C2440有一個(gè)專(zhuān)用的攝像頭接口,CPU可以直接和CMOS圖像傳感器連接,當0V9650輸出數據格式為8位的YUV時(shí),要用到數據線(xiàn) D2~D9(D9為MSB位,D2為L(cháng)SB位);當輸出的數據格式為10位RGB,用數據線(xiàn)D0~D9(D9為MSB位,D0為L(cháng)SB位),該系統用 YUV格式。該攝像頭模塊與S3C2440的Camera接口連接,其電路圖分別如圖4~圖6所示。 其中用到了TI公司的電平轉換芯片74LVC4245,是一種雙電源的電平移位器,電平移位在其內部進(jìn)行。5 V端用5 V電源作為VDD_CAM,而3.3 V端則用3.3 V作為VCC33。雙電源能保證兩邊端口的輸出擺幅都能達到滿(mǎn)電源幅值。 2.2 GPRS模塊的接口設計 S3C2440有3個(gè)UART通道,利用其中一個(gè)通道設計串口,使其與GPRS模塊連接,由于S3C2440自帶的UART控制器,使得硬件開(kāi)發(fā)和軟件設計都比較簡(jiǎn)單。但RS 232標準所定義的高、低電平信號,與一般的微控制器系統的電路所定義的高、低電平信號完全不同,如S3C2440系統的標準邏輯“1”對應電平2~3 V,標準邏輯“O”對應0~4 V電平。顯然,與RS 232標準所述的電平信號完全不同。兩者之間要進(jìn)行通信,必須經(jīng)過(guò)信號電平的轉換,目前常使用的電平轉換芯片有MAX232,MAX3221和 MAX324.3,具體設計電路如圖7和圖8所示。 3 操作系統平臺的定制 Windows CE是高度模塊化的嵌入式操作系統,正因為如此,用戶(hù)為了滿(mǎn)足特定的要求而對操作系統進(jìn)行定制,如果為自己的嵌入式設備定制Windows CE操作系統,則須進(jìn)行創(chuàng )建、構建、運行和發(fā)布OS等一系列操作。在無(wú)線(xiàn)視頻監控系統中,根據功能要求,利用Platform Builder5.0定制系統的流程如下: (1)導入BSP開(kāi)發(fā)包。由于用的是三星公司的基于A(yíng)RM920T核的S3C2440,所以在BSP包中找到SMDK2440文件下的 SMDK2440.CEC文件將其導入。打開(kāi)“Platform Builder5.0”,選擇“File”菜單下的 “Manage Catalog Features”,如圖9所示。在彈出的對 話(huà)框中單擊“Import”,瀏覽到SMDK2440文件下的 smdk2440.cec文件,將其導入。 (2)創(chuàng )建項目。根據WinCE無(wú)線(xiàn)監控系統的要求,在定制系統的過(guò)程中選擇合適的組件來(lái)實(shí)現。其中包括的組件有:支持應用程序開(kāi)發(fā)的MFC組件和支持網(wǎng)絡(luò )的相關(guān)組件等。 (3)編譯項目:點(diǎn)擊菜單“Build OS”→“Sysgen”開(kāi)始編譯項目。 (4)下載運行時(shí)映像,調試成功后啟動(dòng)。編譯成功后會(huì )在目WinCES00\PBWorkspaces\testl\RelDir\smdk2 440_ARMV4I_Release下生成nk.bin和nk.nb0等文件,將nk.nb0下載到硬件平臺上運行。 4 驅動(dòng)程序的開(kāi)發(fā) 4.1 攝像頭驅動(dòng)的開(kāi)發(fā) 攝像頭驅動(dòng)開(kāi)發(fā)是設計中的一個(gè)難點(diǎn),也是一個(gè)關(guān)鍵部分。由于攝像頭采集的視頻數據可以當作數據流來(lái)處理,所以對于攝像頭的驅動(dòng)將采用流式接口的方法來(lái)開(kāi)發(fā)。 (1)在Platform Builder中打開(kāi)前面定制的操作系統工程,然后在新建一個(gè)WIN32 DLL項目,添加2個(gè)C++的源文件,即:camera.cpp和IIc.cpp,其中camer—a.cpp包含驅動(dòng)的入口函數DLLMain();驅動(dòng)的前綴為“CIS”,IIc.cpp包含通過(guò)ICC接口對攝像頭相關(guān)寄存器進(jìn)行配置的函數。 (2)根據前面的硬件電路和OV9650芯片的工作時(shí)序,通過(guò)編寫(xiě)流接口的CIS_Init函數實(shí)現OV9650初始化。主要包括以下3步:調用InterruptInitialize(SYSINTR_CAM,CameraEvent,NULL,0)函數通知系統注冊中斷;調用 CreateEvent()函數創(chuàng )建一個(gè)CameraEvent事件;調用CreateThread()函數創(chuàng )建CameraThread線(xiàn)程。在 Camera Capture Thread服務(wù)函數中調用WaitForSingleObject(CameraEvent,Dis—play Time)函數等待Camera Event事件的發(fā)生。此事件由與其關(guān)聯(lián)的SYSINTR_CAM中斷來(lái)觸發(fā)。此外還有其它流接口函數(CIS_IOControl等)也可以以類(lèi)似的方法實(shí)現。 (3)編寫(xiě)DLL的導出函數定義文件.DEF。.DEF文件定義了DLL的導出函數類(lèi)表。.DEF文件可以就用一般的記事本編輯,保存時(shí)后綴名改為.DEF即可,關(guān)于本攝像頭驅動(dòng)的.DEF文件內容如下: (4)為驅動(dòng)程序配置注冊表。在platform.reg中添加以下注冊項即可: 在攝像頭驅動(dòng)開(kāi)發(fā)完成后,通過(guò)編寫(xiě)應用程序在嵌入式終端的觸摸屏上顯示出來(lái),如圖10所示。首先通過(guò)CreateWindow這個(gè)API函數創(chuàng )建一個(gè)用來(lái)顯示圖像的窗體,然后創(chuàng )建回調函數CaptureThreadProc的線(xiàn)程,在回調函數中根據不同的操作向操作系統發(fā)送不同的消息值,處理圖像的讀取、顯示等。測試結果如圖11所示。 4.2 串口驅動(dòng)開(kāi)發(fā) 在Windows CE中串口的驅動(dòng)實(shí)現是有固定模型的,基于流驅動(dòng)模型,采用分層結構。串口驅動(dòng)的開(kāi)發(fā)的步驟和上面攝像頭驅動(dòng)開(kāi)發(fā)的步驟一樣,關(guān)鍵是實(shí)現流接口函數,由于這里采用了分層的結構,MDD層的代碼可以參考微軟提供的源代碼在%WINCEROOT%\PUBUC\COMMON\OAK\DRIVERS\SERIAL\COMMDD2目錄下,PDD層中的代碼是與硬件相關(guān)的代碼,需要針對不同的設備來(lái)編寫(xiě)。MDD層中的代碼調用PDD層中的代碼來(lái)實(shí)現具體的硬件操作。串口驅動(dòng)的結構如圖12所示。 5 PC機端監控中心程序的開(kāi)發(fā) 監控中心是無(wú)線(xiàn)視頻監控系統的核心部分,它負責管理整個(gè)系統并顯示監控的圖像。在該論文中,監控中心的應用程序實(shí)現了實(shí)時(shí)監控、定時(shí)錄像、抓拍等功能。在系統中監控程序的開(kāi)發(fā),同時(shí)使用了C#語(yǔ)言和WIN32 API,利用C#語(yǔ)言基于事件的編程方法,設計了程序圖形界面,利用VFW接口中的API函數基于消息機制設計了底層圖像數據的讀取和顯示。該系統中 API函數主要來(lái)自于VFW軟件工具包。VFW(Video forWindows)提供了一系列應用程序編程接口(API),用戶(hù)可以通過(guò)它們很方便地實(shí)現視頻捕獲、視頻編輯及視頻播放等通用功能,還可利用回調函數開(kāi)發(fā)更復雜的視頻應用程序。其特點(diǎn)是播放視頻時(shí),不需要專(zhuān)用的硬件設備,而且應用靈活,可以滿(mǎn)足視頻應用程序開(kāi)發(fā)的需要。監控中心的程序調試運行效果如圖13所示。 6 視頻壓縮編碼和傳輸理論研究 6.1 視頻壓縮編碼研究 圖像和視頻包含巨大數量的信息,其傳輸和存儲需要很寬的帶寬,多媒體視頻數據在無(wú)線(xiàn)傳輸之前,必須進(jìn)行壓縮。常用的數字壓縮技術(shù)主要包括用于會(huì )議電視系統的H.261壓縮編碼,用于計算機靜止圖像壓縮的JPEG和用于活動(dòng)圖像壓縮的MPEG數字壓縮技術(shù)和近年來(lái)比較熱點(diǎn)的H.263和H.264 壓縮編碼技術(shù)。MPEG一4采用新一代視頻編碼技術(shù),它在視頻編碼發(fā)展史上第一次把編碼對象從圖像幀拓展到具有實(shí)際意義的任意形狀視頻對象,從而實(shí)現了從基于像素的傳統編碼向基于對象和內容的現代編碼的轉變,因而引領(lǐng)著(zhù)新一代智能圖像編碼的發(fā)展潮流。 由于MPEG一4壓縮編碼系統比較復雜,在論文中將重點(diǎn)對MPEG一4壓縮編碼技術(shù)進(jìn)行研究,分析其在PC機上的壓縮編碼的源碼,為以后在A(yíng)RM等嵌入式設備上的移植奠定基礎。對一幀圖像進(jìn)行MlPEG一4編碼的流程如圖14所示。 編譯開(kāi)源的MPEG一4 XVID模型的源代碼,將生成一個(gè)xvidcore.dIl文件,在應用程序開(kāi)發(fā)中調用庫中的相關(guān)函數,程序執行過(guò)程如圖15所示。其中程序在PC機上測試,先從攝像頭中讀取視頻數據,再進(jìn)行MPEG一4編碼。 6.2 無(wú)線(xiàn)傳輸研究 GPRS采用基于分組傳輸模式的無(wú)線(xiàn)IP技術(shù),以一種有效的方式高速傳送數據,支持Internet上應用最廣泛的IP協(xié)議和X.25協(xié)議,傳輸速率最高達117 KB/s,所以視頻數據通過(guò)MPEG一4壓縮后,完全可以通過(guò)GPRS模塊進(jìn)行傳輸。在此傳輸過(guò)程中通信的連接建立、數據傳輸等操作都是通過(guò)TCP/IP 網(wǎng)絡(luò )的API,Socket接口實(shí)現。整個(gè)無(wú)線(xiàn)傳輸效果如圖16所示。 7 結 語(yǔ) 基于Windows CE5.0的無(wú)線(xiàn)監控系統涉及到了計算機編程技術(shù)、嵌入式技術(shù)、視頻編碼、無(wú)線(xiàn)傳輸等多方面的知識,在此課題中完成了大量的工作,測試結果達到了該論文預期的目的。嵌入式終端平臺具有體積小、功耗低、運行速度快、采集的圖像清晰等特點(diǎn),在監控中心程序的設計也具有友好的人機交互界面,實(shí)現了定時(shí)監控、錄像、拍照等功能。視頻壓縮與無(wú)線(xiàn)傳輸方面從理論上研究方法的可行性,提出具體的解決方法,這為以后進(jìn)一步完善系統奠定了堅實(shí)的基礎。 |