張 凱,莊 梁,張 強(qiáng)
(南京信息工程大學(xué) 信息與控制學(xué)院,江蘇 南京 210044)
隨著人們生活水平的不斷提高以及安全意識(shí)的不斷增強(qiáng),人們對(duì)小區(qū)安全也越來越重視,而小區(qū)車庫(kù)安全是小區(qū)安全中必不可少的一部分[1]。但是由于小區(qū)入住率低、小區(qū)車庫(kù)管理混亂、環(huán)境復(fù)雜,私家車在小區(qū)車庫(kù)易遭受偷盜,甚至搶劫,導(dǎo)致車主遭受巨大損失。目前小區(qū)車庫(kù)主要由監(jiān)控人員通過視頻監(jiān)控。然而由于視頻監(jiān)控存在盲區(qū)、車庫(kù)監(jiān)控設(shè)備易遭破壞以及監(jiān)控人員疏忽等問題,此種方式不能有效地保障私家車在小區(qū)車庫(kù)的安全。相關(guān)文獻(xiàn)介紹的當(dāng)前車庫(kù)的監(jiān)控系統(tǒng)主要是基于PC平臺(tái)的監(jiān)控,是對(duì)整個(gè)小區(qū)車庫(kù)的監(jiān)控,并且不具備主動(dòng)報(bào)警的功能。為此,設(shè)計(jì)了一種安裝在私家車內(nèi)的監(jiān)控報(bào)警系統(tǒng)。該系統(tǒng)不同于一般的汽車防盜報(bào)警系統(tǒng),可以通過對(duì)車內(nèi)圖像的檢測(cè)來判斷車輛是否被偷盜,并可進(jìn)行郵件通知和實(shí)時(shí)監(jiān)控,通過對(duì)攝像頭的控制可更加直觀地觀察到現(xiàn)場(chǎng)的情況,對(duì)于提高私家車在小區(qū)車庫(kù)的安全性具有很大幫助。
圖1 系統(tǒng)結(jié)構(gòu)簡(jiǎn)圖
系統(tǒng)的整體結(jié)構(gòu)簡(jiǎn)圖如圖1所示,該系統(tǒng)由視頻采集終端、無(wú)線網(wǎng)絡(luò)端以及視頻接收終端組成[2]。整個(gè)系統(tǒng)通過WiFi模塊接入小區(qū)網(wǎng)絡(luò)。視頻采集終端將USB攝像頭采集到的實(shí)時(shí)視頻數(shù)據(jù)傳輸?shù)较到y(tǒng)中,然后由motion對(duì)采集到的視頻進(jìn)行處理。當(dāng)檢測(cè)到有物體進(jìn)入車內(nèi)時(shí)即發(fā)出報(bào)警,并通過郵件把車內(nèi)實(shí)時(shí)圖片發(fā)送出去;視頻接收終端通過網(wǎng)絡(luò)以及CGI腳本與嵌入式Boa服務(wù)器進(jìn)行交互,可實(shí)現(xiàn)對(duì)車內(nèi)視頻的實(shí)時(shí)監(jiān)控。
該系統(tǒng)硬件主要包括32位的嵌入式微處理器、WiFi無(wú)線模塊、USB攝像頭等。系統(tǒng)的硬件結(jié)構(gòu)框圖如圖2所示,其核心部分為S3C6410微處理器和256 MB的SDRAM、1 GB的NAND Flash以及多種外設(shè)接口(包括USB接口、SDIO接口、網(wǎng)卡接口等)所組成的最小系統(tǒng)。
圖2 系統(tǒng)硬件結(jié)構(gòu)框圖
USB攝像頭與微處理器的USB HOST接口直接相連。攝像頭采用OV9650芯片,支持最大分辨率為1 300×1 028,可以輸出 GRB4:2:2、YUV(4:2:2)和 YCbCr(4:2:2)三種視頻格式,這三種格式均符合CCIR601和CCIR656標(biāo)準(zhǔn)。
WiFi無(wú)線模塊采用Marvell公司低成本、低功耗的88W8686芯片,它通過SDIO接口與主控設(shè)備相連。該模塊遵循IEEE 802.11g標(biāo)準(zhǔn),而且兼容802.11b協(xié)議標(biāo)準(zhǔn),工作在 2.4 GHz頻段,最高傳輸速率可達(dá) 54 Mb/s。內(nèi)置天線,可適應(yīng)不同的工作環(huán)境,設(shè)備可以方便地接入無(wú)線網(wǎng)絡(luò)[3]。S3C6410帶有2路SDIO接口,其中 SDIO0通常被用作SD卡接口使用,另一路在本系統(tǒng)中用于連接WiFi無(wú)線模塊,其接口電路圖如圖3所示。
SD存儲(chǔ)卡用于對(duì)重要視頻數(shù)據(jù)以及圖片的存儲(chǔ)。通過SDIO接口與系統(tǒng)相連,最大可支持32 GB。其接口電路圖如圖4所示。
圖4 SD卡接口電路圖
本系統(tǒng)采用Linux操作系統(tǒng),Linux系統(tǒng)具有開源、內(nèi)核可裁剪、對(duì)網(wǎng)絡(luò)的支持比較完善等特點(diǎn),用戶可以根據(jù)自己的需求對(duì)內(nèi)核進(jìn)行裁剪并重新編譯。在開發(fā)階段,采用掛載NFS根文件系統(tǒng)進(jìn)行開發(fā),以方便軟件的調(diào)試。本文完成的工作有:(1)在前面所述的硬件平臺(tái)上構(gòu)建最小嵌入式Linux系統(tǒng),包括對(duì) UBOOT、內(nèi)核、根文件系統(tǒng)的移植[4],在對(duì)內(nèi)核進(jìn)行移植時(shí),將本系統(tǒng)所用到的USB攝像頭和WiFi模塊等相關(guān)的驅(qū)動(dòng)編譯到內(nèi)核中。(2)在該系統(tǒng)平臺(tái)上進(jìn)行motion的移植及嵌入式Web服務(wù)器的搭建。編寫基于motion的監(jiān)控程序,通過CGI和motion中的Http API來編寫Web控制頁(yè)面并對(duì)該系統(tǒng)進(jìn)行整體測(cè)試。
系統(tǒng)交叉編譯環(huán)境:主機(jī)開發(fā)環(huán)境選擇ubuntu9.10操作系統(tǒng),主機(jī)工具鏈gcc-4.6.3,交叉編譯工具鏈armlinux--gcc-4.3.2,內(nèi)核版本采用Linux2.6.38內(nèi)核。
motion是一個(gè)用于移動(dòng)圖像監(jiān)控的程序,本系統(tǒng)實(shí)現(xiàn)的視頻動(dòng)態(tài)檢測(cè)功能就是基于motion的,使用的是motion-3.2.12版本。下面介紹motion的移植和相關(guān)的配置。
首先將motion-3.2.12源碼解壓到/work/tools目錄下,接下來進(jìn)行編譯安裝,進(jìn)入解壓后的目錄,執(zhí)行命令:./configure-prefix=${PWD}/_install-host=arm-linux,生成 Makefile文件,由make進(jìn)行編譯,make install將生成的庫(kù)和頭文件安裝到指定的./_install目錄下。然后拷貝./_install/bin/下的可執(zhí)行程序motion到開發(fā)板根文件系統(tǒng)的/usr/sbin目錄下。另外需在開發(fā)板根文件系統(tǒng)目錄中創(chuàng)建/var/run/motion/目錄,用于存放motion進(jìn)程。
接著進(jìn)行motion的配置,根據(jù)./_install/etc/下的參考配置文件進(jìn)行配置,修改后將配置文件放在開發(fā)板根文件系統(tǒng)的/etc/motion目錄下。配置文件的主要參數(shù)設(shè)置如表1所示。
表1 配置文件主要參數(shù)設(shè)置表
目前,在靜態(tài)背景下,主要有三類運(yùn)動(dòng)目標(biāo)檢測(cè)算法:幀差法、背景減法和光流法。本系統(tǒng)調(diào)用的motion采用幀差法[5]。該方法基于圖像序列中相鄰圖像中較強(qiáng)的空間相關(guān)性,直接將相鄰兩幀或多幀圖像中對(duì)應(yīng)的像素點(diǎn)逐一相減,各個(gè)像素對(duì)之間都會(huì)得到一個(gè)數(shù)值,如果這個(gè)數(shù)值的絕對(duì)值小于指定的閾值,則認(rèn)為該點(diǎn)為背景像素點(diǎn),反之為運(yùn)動(dòng)目標(biāo)中的像素點(diǎn)。幀差法最大的特點(diǎn)在于算法實(shí)現(xiàn)簡(jiǎn)單,程序設(shè)計(jì)復(fù)雜度低,實(shí)時(shí)性好。此外,由于相鄰幀的時(shí)間間隔比較短,因此該方法對(duì)光線的變化具有較強(qiáng)的魯棒性,幀差法流程圖如圖5所示。
圖5 幀差法流程圖
設(shè) Fi(x,y)和 Fi-1(x,y)為圖像序列中連續(xù)的兩幅圖像,Di(x,y)為二值化后的差值圖像,其中(x,y)表示像素點(diǎn)的位置,幀差法的表示如下:
其中 T為二值化閾值,Di(x,y)中的 1表示運(yùn)動(dòng)目標(biāo),0表示背景。本系統(tǒng)的motion動(dòng)態(tài)視頻檢測(cè)通過幀差法來判斷是否有物體入侵,并通過2個(gè)腳本來響應(yīng)motion事件,以實(shí)現(xiàn)監(jiān)控報(bào)警和郵件通知。監(jiān)控報(bào)警腳本通過判斷motion配置文件中的參數(shù)設(shè)置決定在on_motion_detected事件觸發(fā)時(shí)播放報(bào)警聲。郵件通知腳本通過判斷motion配置文件中的參數(shù)設(shè)置決定在on_event_start事件觸發(fā)時(shí)發(fā)送最新捕獲到的圖片信息到指定的郵箱來通知用戶。
為了方便服務(wù)器和瀏覽器通信,需要進(jìn)行Boa服務(wù)器移植以及CGI程序編寫和HTML網(wǎng)頁(yè)設(shè)計(jì)。
Boa服務(wù)器通過建立http請(qǐng)求列表來響應(yīng)多路http連接請(qǐng)求,可以大大節(jié)約系統(tǒng)資源,非常適用于嵌入式系統(tǒng)[6]。這里主要介紹 Boa服務(wù)器的移植過程。首先將下載的Boa源碼包解壓到/work/boa目錄下,進(jìn)入解壓后的目錄/work/boa/boa-0.94.13/src執(zhí)行./configure生成Makefile文件;接下來修改生成的Makefile文件,將 CC=gcc改為 CC=arm-linux-gcc,將CPP=gcc-E改成CPP=arm-linuxgcc-E,保存后進(jìn)行 make;之后執(zhí)行arm-linux-strip boa,可以去掉調(diào)試信息并進(jìn)行優(yōu)化,最終會(huì)在src目錄下生成boa可執(zhí)行文件。然后對(duì)Boa的配置文件boa.conf修改如下:
接著在開發(fā)板上創(chuàng)建/etc/boa和其他相關(guān)的目錄并將前面生成的boa和boa.conf拷貝過來,步驟如下:
接下來進(jìn)行CGI程序的編寫,其編程原理主要為:通過GET或者POST等方法獲取表單中的數(shù)據(jù),激活URL所指定的CGI應(yīng)用程序,CGI應(yīng)用程序?qū)⑻幚砗玫慕Y(jié)果傳送給服務(wù)器,服務(wù)器再把結(jié)果返回到瀏覽器。
系統(tǒng)的HTML頁(yè)面包括4個(gè)界面,即系統(tǒng)設(shè)置、網(wǎng)頁(yè)監(jiān)控、查看圖片和查看視頻。將設(shè)計(jì)好的index.html頁(yè)面拷貝到開發(fā)板www目錄下,打開瀏覽器輸入開發(fā)板地址,如http://172.16.72.93/index.html,可看到設(shè)計(jì)好的網(wǎng)頁(yè)。
本系統(tǒng)的視頻實(shí)時(shí)傳輸是基于TCP/IP協(xié)議的流式套接字接口編程方式[7]。實(shí)現(xiàn)的該協(xié)議的設(shè)計(jì)基于分層模型,包括網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層,每一層都封裝來自上一層的消息,加上自己的數(shù)據(jù)頭和數(shù)據(jù)尾。它實(shí)現(xiàn)了網(wǎng)絡(luò)中不同主機(jī)間的通信,屬于典型的B/S模式。面向TCP的網(wǎng)絡(luò)通信流程如圖6所示。數(shù)據(jù)傳輸?shù)牟襟E如下:首先服務(wù)器端創(chuàng)建Socket函數(shù)進(jìn)行初始化并建立流式套接字,之后調(diào)用Bind函數(shù)進(jìn)行端口綁定,接著調(diào)用Listen函數(shù)等待瀏覽器的請(qǐng)求。當(dāng)瀏覽器向服務(wù)器發(fā)送連接請(qǐng)求時(shí),通過Accept和Connet函數(shù)來建立連接,接著通過Send和Recv函數(shù)實(shí)現(xiàn)數(shù)據(jù)的通信功能,最后通過Close函數(shù)關(guān)閉套接字。
圖6 TCP網(wǎng)絡(luò)通信流程圖
本文提出了基于視頻動(dòng)態(tài)檢測(cè)的小區(qū)車庫(kù)私家車監(jiān)控報(bào)警系統(tǒng)。主要從motion移植、視頻動(dòng)態(tài)檢測(cè)及報(bào)警、Web服務(wù)器搭建和視頻傳輸?shù)确矫骊U述了系統(tǒng)的設(shè)計(jì)思路。實(shí)驗(yàn)測(cè)試表明,系統(tǒng)運(yùn)行穩(wěn)定可靠,視頻傳輸?shù)那逦雀?,傳輸流暢,能夠滿足需求,可以極大地提高私家車在小區(qū)車庫(kù)的安全性。
[1]李紅剛,張素萍,方佳,等.基于 ARM的智能家居遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2009(5):134-128.
[2]李昂,送海聲,蘇小蕓.基于Android的視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2012,38(7):138-140.
[3]曹理發(fā),尹勇,劉恒輝.基于ARM和DSP的視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子器件,2009,32(1):213-217.
[4]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008.
[5]徐騰飛.視頻序列中基于檢測(cè)的多目標(biāo)跟蹤研究[D].南京:南京郵電大學(xué),2011.
[6]陳榮軍,羅文聰.基于無(wú)線的物聯(lián)智能家居控制系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2012,38(5):142-144.
[7]代治國(guó),李興霞.基于ARM的智能小區(qū)遠(yuǎn)程視頻監(jiān)控系統(tǒng)[J].電子設(shè)計(jì)工程,2013(2):70-72.