邵曉 楊斌 李光 賈π
海軍蚌埠士官學(xué)校 安徽 233012
本文提出一種嵌入式智能網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)方法,其特點(diǎn)是基于嵌入式系統(tǒng)進(jìn)行設(shè)計(jì)與開(kāi)發(fā),系統(tǒng)體積小、成本低、便于安裝與維護(hù)、具備較強(qiáng)的可擴(kuò)展性。同時(shí)系統(tǒng)還具有運(yùn)動(dòng)對(duì)象檢測(cè)功能,可快速檢測(cè)出監(jiān)控畫(huà)面中的運(yùn)動(dòng)物體并發(fā)出報(bào)警信號(hào)。系統(tǒng)可實(shí)現(xiàn)無(wú)人值守,非常適合住宅小區(qū)、銀行、倉(cāng)庫(kù)等單位的安全防范。
本系統(tǒng)的總體結(jié)構(gòu)如圖1所示,包括網(wǎng)絡(luò)視頻監(jiān)控服務(wù)器端、客戶端和控制端三大部分。
整個(gè)系統(tǒng)按照B/S模式開(kāi)發(fā),網(wǎng)絡(luò)上的授權(quán)用戶只需利用標(biāo)準(zhǔn)的瀏覽器便可訪問(wèn)該系統(tǒng),不用安裝任何特定的軟件。結(jié)合性能和成本的考慮,本系統(tǒng)采用TI公司的TMS320DM642為系統(tǒng)微處理器和自行研制的DSP開(kāi)發(fā)板。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
視頻監(jiān)控服務(wù)器端用來(lái)提供監(jiān)控視頻流,圖2描述了它的功能結(jié)構(gòu)。
圖2 視頻監(jiān)控服務(wù)器端功能結(jié)構(gòu)圖
圖3描述了視頻監(jiān)控服務(wù)器端的工作流程。系統(tǒng)采用運(yùn)動(dòng)檢測(cè)技術(shù)以提高系統(tǒng)的智能化程度。目前運(yùn)動(dòng)檢測(cè)主要采用光流法、幀差法和背景減法。背景減法是安全監(jiān)控中最常用的運(yùn)動(dòng)對(duì)象檢測(cè)算法,綜合性能最好。考慮速度和穩(wěn)健性?xún)蓚€(gè)方面,本系統(tǒng)采用背景減法實(shí)現(xiàn)運(yùn)動(dòng)檢測(cè)和實(shí)時(shí)報(bào)警功能。
基于自行研制的嵌入式DSPIC開(kāi)發(fā)平臺(tái)(DSP for Picture Processing,圖像處理DSP平臺(tái)),我們?cè)O(shè)計(jì)實(shí)現(xiàn)了視頻監(jiān)控服務(wù)器端。DSPIC開(kāi)發(fā)平臺(tái)采用TI公司TMS320DM642 DSP作為嵌入式處理器,該處理器主頻600MHz,可支持8路指令并行處理。DSPIC平臺(tái)集成有32MB外部存儲(chǔ)器,4MB FLASH存儲(chǔ)器,具有視頻信號(hào)采集和網(wǎng)絡(luò)傳輸模塊。
在DSPIC開(kāi)發(fā)平臺(tái)上,我們采用TVP5150芯片將攝像頭輸出PAL格式的模擬視頻信號(hào)轉(zhuǎn)化為YUV格式的數(shù)字信號(hào),圖像大小設(shè)置為D1格式(704×576),每秒采集25幀。
圖3 視頻監(jiān)控服務(wù)器端工作流程圖
針對(duì)YUV信號(hào)采用背景減法進(jìn)行運(yùn)動(dòng)對(duì)象檢測(cè)??紤]到攝像機(jī)剛啟動(dòng)可能造成第一幀圖像失真,系統(tǒng)固定選取第二幀圖像作為背景幀。為了節(jié)省硬件的內(nèi)存空間和提高運(yùn)算速度,把背景幀作一個(gè)宏塊化的壓縮處理:對(duì)于圖像中每個(gè)8×8的宏塊取像素平均值,得到只有原圖像1/64大小的小圖像。然后根據(jù)背景減法的原理,將每一幀圖像宏塊化之后再和背景幀作差,當(dāng)連續(xù)有兩個(gè)差值大于某個(gè)閾值時(shí),則認(rèn)為當(dāng)前所處區(qū)域是屬于運(yùn)動(dòng)對(duì)象的,這樣可以消除一些小的水平方向的噪聲,因?yàn)樵肼曇话愣际枪铝⒌?、小范圍的,大多只能引起一個(gè)宏塊的變化。最終檢測(cè)出的運(yùn)動(dòng)對(duì)象區(qū)域用一個(gè)方框表示,方框位置由左上角點(diǎn)和右下角點(diǎn)確定,這兩點(diǎn)的坐標(biāo)數(shù)據(jù)會(huì)隨視頻流一并傳送至客戶端。
為了縮短開(kāi)發(fā)周期,系統(tǒng)采用MJPEG標(biāo)準(zhǔn)進(jìn)行視頻壓縮。根據(jù)不同的網(wǎng)絡(luò)狀況和應(yīng)用需求,可更換DSP的編碼算法。由于DM642性能較高,可以實(shí)現(xiàn)實(shí)時(shí)編碼并使系統(tǒng)具備良好的性能。由于是在嵌入式系統(tǒng)上實(shí)現(xiàn)視頻壓縮以及運(yùn)動(dòng)對(duì)象檢測(cè),受到硬件條件的限制,要保證算法的執(zhí)行速度,需要對(duì)程序進(jìn)行優(yōu)化。該算法通過(guò)和硬件相配套的標(biāo)準(zhǔn)匯編語(yǔ)言實(shí)現(xiàn),采用流水線技術(shù)和并行技術(shù)實(shí)現(xiàn)了速度的極大提高,滿足實(shí)時(shí)性要求。
系統(tǒng)采用TI公司推出的TCP/IP NDK實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)器模塊。系統(tǒng)啟動(dòng)時(shí)需配置DM642的網(wǎng)絡(luò)環(huán)境,包括完成協(xié)議棧系統(tǒng)的初始化工作,創(chuàng)建配置文件和為視頻服務(wù)添加網(wǎng)頁(yè)文件。客戶端所看到的Web頁(yè)面以及負(fù)責(zé)解碼顯示的ActiveX控件均需要添加至視頻服務(wù)器中。另外還需編寫(xiě)CGI程序以實(shí)現(xiàn)視頻監(jiān)控控制端與服務(wù)器端的交互功能。
視頻監(jiān)控客戶端主要由三部分組成:視頻數(shù)據(jù)獲取模塊、解壓縮與顯示模塊和顯示參數(shù)調(diào)節(jié)模塊。主要功能是從服務(wù)器端抓取視頻數(shù)據(jù)并負(fù)責(zé)解碼顯示。視頻數(shù)據(jù)獲取模塊的主要功能是通過(guò)服務(wù)器端的網(wǎng)絡(luò)接口不斷從視頻服務(wù)器上獲取經(jīng)過(guò)壓縮的視頻數(shù)據(jù),然后交由解壓縮與顯示模塊負(fù)責(zé)解碼和在瀏覽器中顯示;由服務(wù)器端的實(shí)時(shí)時(shí)鐘提供的時(shí)間信息以及運(yùn)動(dòng)對(duì)象的位置信息會(huì)一并隨著視頻數(shù)據(jù)傳送至客戶端并在瀏覽器中顯示。顯示參數(shù)調(diào)節(jié)模塊負(fù)責(zé)對(duì)視頻圖像顯示效果進(jìn)行調(diào)節(jié),如顯示分辨率、亮度與對(duì)比度等。
為方便使用起見(jiàn),我們采用ActiveX技術(shù)完成了對(duì)客戶端程序的實(shí)現(xiàn),用戶無(wú)需安裝任何客戶端軟件,通過(guò)IE瀏覽器便可看到監(jiān)控視頻。
ActiveX是Microsoft提出的一組基于組件模型(Component Object Model,COM),且與具體編程語(yǔ)言無(wú)關(guān)的技術(shù),被廣泛應(yīng)用于Web服務(wù)器以及各種客戶端的應(yīng)用開(kāi)發(fā)。將ActiveX控件嵌入監(jiān)控頁(yè)面,一并添加至視頻監(jiān)控服務(wù)器上的視頻服務(wù)器中,即能實(shí)現(xiàn)在PC端用IE瀏覽器訪問(wèn)服務(wù)器監(jiān)控頁(yè)面時(shí),ActiveX控件自動(dòng)識(shí)別版本、下載、注冊(cè)、安裝并運(yùn)行的功能??蛻舳藷o(wú)需任何配置,只要安裝IE3.0以上版本的瀏覽器即可。
為了使生成的控件盡量小,盡量不依賴(lài)客戶端環(huán)境,我們選用VC提供的ATL方法開(kāi)發(fā)ActiveX控件??丶捎昧嘶谔捉幼郑⊿ocket)通信來(lái)實(shí)現(xiàn)視頻數(shù)據(jù)獲取模塊,主要是利用了Windows Sockets 1.1提供的API函數(shù)與視頻監(jiān)控服務(wù)器端建立連接,并發(fā)送HTTP請(qǐng)求以獲取視頻服務(wù)器上編碼完成的一幀圖像數(shù)據(jù);解壓縮與顯示模塊的主要部分是一高效的JPEG解碼類(lèi),當(dāng)一幀圖像數(shù)據(jù)全部下載完之后,調(diào)用該類(lèi)對(duì)圖像數(shù)據(jù)進(jìn)行解碼,并在瀏覽器中顯示。
顯示參數(shù)調(diào)節(jié)模塊是通過(guò)在HTML文件中添加VBScript腳本代碼來(lái)實(shí)現(xiàn)的。用戶可利用監(jiān)控頁(yè)面提供的交互功能來(lái)改變控件的各屬性值,從而使用戶在觀看監(jiān)控視頻時(shí)可自由設(shè)定圖像顯示分辨率,調(diào)節(jié)圖像亮度和對(duì)比度,選擇是否顯示系統(tǒng)當(dāng)前時(shí)間和幀率等。
視頻監(jiān)控控制端用于設(shè)置和修改服務(wù)器端的各種運(yùn)行參數(shù),從功能上主要分為四個(gè)模塊:網(wǎng)絡(luò)設(shè)置模塊主要負(fù)責(zé)對(duì)服務(wù)器端的網(wǎng)絡(luò)服務(wù)器模塊進(jìn)行操作,主要設(shè)置和修改其IP地址等各項(xiàng)網(wǎng)絡(luò)參數(shù);圖像設(shè)置模塊對(duì)服務(wù)器端的視頻壓縮與編碼模塊發(fā)生作用,負(fù)責(zé)設(shè)置和修改其壓縮生成的圖像分辨率以及圖像質(zhì)量,主要是為了增強(qiáng)系統(tǒng)對(duì)應(yīng)用環(huán)境的適應(yīng)性,如在網(wǎng)絡(luò)環(huán)境較差的情況下可選擇較低的編碼質(zhì)量和較小的圖像分辨率以減少網(wǎng)絡(luò)傳輸數(shù)據(jù)量,以保證系統(tǒng)的正常運(yùn)行;時(shí)鐘設(shè)置模塊用于調(diào)節(jié)服務(wù)器端的實(shí)時(shí)時(shí)鐘,以便給監(jiān)控視頻提供準(zhǔn)確的時(shí)間信息,并且還負(fù)責(zé)設(shè)定系統(tǒng)報(bào)警時(shí)段,使得系統(tǒng)只有在特定時(shí)間內(nèi)檢測(cè)到運(yùn)動(dòng)對(duì)象才發(fā)出報(bào)警信息,以增強(qiáng)報(bào)警機(jī)制的靈活性,擴(kuò)大其適用范圍;云臺(tái)控制模塊通過(guò)服務(wù)器端的串口對(duì)云臺(tái)產(chǎn)生控制,以調(diào)節(jié)攝像頭的位置和方向。視頻監(jiān)控控制端各模塊對(duì)服務(wù)器端的作用關(guān)系如圖4所示。
圖4 視頻監(jiān)控控制端功能模塊與作用關(guān)系
通用網(wǎng)關(guān)接口(Common Gateway Interface)是外部擴(kuò)展應(yīng)用程序與Web服務(wù)器交互的一種通用的接口標(biāo)準(zhǔn),給Web服務(wù)器提供一個(gè)執(zhí)行外部程序的通道。系統(tǒng)采用CGI程序?qū)崿F(xiàn)控制端與服務(wù)器端的交互。CGI程序由控制端發(fā)送的基于HTTP協(xié)議的請(qǐng)求和命令觸發(fā),然后將控制端的請(qǐng)求和命令傳送給服務(wù)器端,服務(wù)器端應(yīng)用程序則執(zhí)行相應(yīng)的操作。
我們采用Borland公司推出的可視化應(yīng)用程序開(kāi)發(fā)工具Borland C++Builder 6開(kāi)發(fā)控制端軟件。主要利用C++Builder 6提供的HTTP服務(wù)客戶端控件TIdHTTP向服務(wù)器端相應(yīng)的CGI程序發(fā)送HTTP請(qǐng)求,CGI程序接收到請(qǐng)求之后根據(jù)指令做相應(yīng)操作。軟件在啟動(dòng)時(shí)將從一配置文件中讀取服務(wù)器的MAC地址、IP地址等網(wǎng)絡(luò)參數(shù),用戶可根據(jù)不同的網(wǎng)絡(luò)環(huán)境來(lái)修改IP地址。軟件退出時(shí)會(huì)將新設(shè)置的IP地址寫(xiě)回配置文件,以便下一次啟動(dòng)時(shí)能夠以正確的IP地址來(lái)訪問(wèn)視頻監(jiān)控服務(wù)器。
目前該網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)已全部開(kāi)發(fā)完成,將該系統(tǒng)在局域網(wǎng)上試運(yùn)行,監(jiān)控視頻的左上角顯示系統(tǒng)時(shí)間,右上角顯示幀率。經(jīng)測(cè)試,此時(shí)視頻監(jiān)控服務(wù)器每秒生成25幀D1格式的視頻圖像,客戶端ActiveX控件抓取并顯示圖像序列的速度為32fps。由該實(shí)驗(yàn)結(jié)果可看出,本系統(tǒng)對(duì)視頻圖像的壓縮編碼效果良好,監(jiān)控視頻清晰流暢,無(wú)抖動(dòng)現(xiàn)象,視覺(jué)效果好。系統(tǒng)可實(shí)時(shí)檢測(cè)出監(jiān)控畫(huà)面中的運(yùn)動(dòng)對(duì)象,用紅色方框標(biāo)出,并發(fā)出報(bào)警信號(hào)。經(jīng)測(cè)試,系統(tǒng)可在2ms以?xún)?nèi)準(zhǔn)確檢測(cè)出運(yùn)動(dòng)對(duì)象,具備實(shí)時(shí)報(bào)警的功能。
[1]歐揚(yáng),付保川.一種嵌入式智能網(wǎng)絡(luò)視頻監(jiān)控終端的研究與設(shè)計(jì)[J].微計(jì)算機(jī)信息.2005.
[2]TMS320DM642 Video/Imaging Fixed-Point Digital Signal Processor Data Manual,Literature Number.SPRS200B.Texas Instruments Incorporated.2003.
[3]鄧誠(chéng)強(qiáng).實(shí)時(shí)視頻中運(yùn)動(dòng)對(duì)象的檢測(cè)及跟蹤[D].武漢:華中師范大學(xué).2004.
[4]周霖.DSP信號(hào)處理技術(shù)應(yīng)用[M].北京:國(guó)防工業(yè)出版社.2004.
[5]汪國(guó)有,趙藍(lán)蘭.采用DM642平臺(tái)設(shè)計(jì)MPEG-4視頻流傳輸系統(tǒng)[J].電視技術(shù).2005.
[6]王國(guó)偉,宋鐵成,陳正石.基于嵌入式Web Server的視頻監(jiān)控服務(wù)器[J].計(jì)算機(jī)工程.2005.