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