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