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