摘 要: 基于ARM9處理器S3C2440芯片硬件平臺(tái),,設(shè)計(jì)和開發(fā)了一種家庭視覺智能防盜監(jiān)控系統(tǒng),。服務(wù)器以裁剪的Linux為軟件平臺(tái),,移植了多種設(shè)備驅(qū)動(dòng)程序,綜合利用多線程,、socket等編程技術(shù),,通過調(diào)用OpenCV圖像處理庫、Libjpeg內(nèi)存數(shù)據(jù)編解碼庫設(shè)計(jì)攝像頭應(yīng)用程序,,著重分析了Linux下V4L的工作原理以及基于特征臉的人臉識(shí)別原理,。該系統(tǒng)實(shí)現(xiàn)了在嵌入式Linux開發(fā)板上的人臉識(shí)別與身份驗(yàn)證主系統(tǒng),實(shí)現(xiàn)在PC上Web瀏覽功能,,提高了防盜系統(tǒng)的安全性,。
關(guān)鍵詞: 嵌入式Linux;ARM9,;人臉識(shí)別,;OpenCV
隨著智能視頻監(jiān)控系統(tǒng)的快速發(fā)展,通過對(duì)攝像機(jī)拍攝的圖像序列進(jìn)行自動(dòng)分析,,對(duì)視頻圖像中的運(yùn)動(dòng)對(duì)象進(jìn)行檢測,、跟蹤和識(shí)別,并在此基礎(chǔ)上對(duì)其進(jìn)行行為分析,,從而做到預(yù)警,、日常信息的管理,及在異常情況發(fā)生時(shí)發(fā)出告警,,提高視頻監(jiān)控的效率成為可能[1],。本系統(tǒng)將智能視頻監(jiān)控系統(tǒng)應(yīng)用于家庭防盜,實(shí)現(xiàn)了一個(gè)以圖像處理技術(shù)為核心的家庭視覺防盜報(bào)警系統(tǒng),,包括攝像機(jī)圖像采集分析,、圖像信息編碼、壓縮及PC端解碼顯示的圖像處理設(shè)計(jì),、控制電路設(shè)計(jì),、GSM短信發(fā)送模塊,。其目標(biāo)是提供一套成本低,、功能全面的家庭視覺防盜系統(tǒng),解決長期以來防盜系統(tǒng)對(duì)于機(jī)械鎖的過度依賴,,變傳統(tǒng)的被動(dòng)式消極防盜為報(bào)警式積極防盜,,提高安全性。
1 系統(tǒng)構(gòu)架
該系統(tǒng)包含一個(gè)服務(wù)端和兩個(gè)客服端,,服務(wù)端主要負(fù)責(zé)人臉識(shí)別圖像處理,、編碼壓縮及無線發(fā)送圖像信息。一個(gè)客服端通過GSM模塊實(shí)現(xiàn)服務(wù)端與業(yè)主手機(jī)通信,,服務(wù)端通過對(duì)攝像機(jī)采集信息的一系列圖像處理,,對(duì)采集圖像作人臉識(shí)別處理,判斷是否為家庭成員并發(fā)送報(bào)警短信到業(yè)主手機(jī)。服務(wù)端將壓縮圖像信息打包,,通過TCP協(xié)議發(fā)送到PC客戶端,,實(shí)現(xiàn)在PC端的實(shí)時(shí)顯示。家庭視覺智能防盜系統(tǒng)結(jié)構(gòu)如圖1所示,。
相對(duì)于傳統(tǒng)的機(jī)械鎖防盜與人工監(jiān)視的傳統(tǒng)視頻監(jiān)控系統(tǒng),,本系統(tǒng)在效率上有了大大的提高,并且更加智能化,、自動(dòng)化,。本系統(tǒng)具有以下功能:
(1)可創(chuàng)建,、更新家庭成員人臉頭像庫文件,;
(2)服務(wù)端將前端設(shè)備采集圖像作人臉識(shí)別圖像處理,;
?。?)服務(wù)端判斷是否發(fā)送報(bào)警短信給業(yè)主;
?。?)前端設(shè)備采集圖像信息在PC端實(shí)時(shí)顯示,;
(5)前端設(shè)備采集圖像信息在服務(wù)端LCD實(shí)時(shí)顯示,;
?。?)服務(wù)器端存儲(chǔ)可疑人圖片信息;
?。?)可通過Web網(wǎng)絡(luò)查看前端設(shè)備采集信息,。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 系統(tǒng)硬件平臺(tái)
系統(tǒng)硬件結(jié)構(gòu)如圖2所示。硬件平臺(tái)采用了ARM9嵌入式開發(fā)套件,,它由核心板和底板組成,,核心板上集成Samsung S3C2440處理器。該芯片采用ARM920T處理內(nèi)核,,主頻為400 MHz,,內(nèi)部帶有全性能MMU體系結(jié)構(gòu),支持Linux,、WinCE等嵌入式操作系統(tǒng),,集成了外部存儲(chǔ)器控制器、LCD控制器,、一個(gè)5線異步串行口(波特率最高為115 200 b/s),、一個(gè)10 MHz網(wǎng)口、2個(gè)USB1.1接口(一個(gè)Host接口,,一個(gè)Device接口)以及5 V電源接口[2],。
2.2 系統(tǒng)硬件框架
2.2.1 前端設(shè)備
在Linux下,,使用開發(fā)板與攝像機(jī)相連,通過攝像機(jī)捕捉頭像畫面,。為方便圖像傳送,,系統(tǒng)采用中星微301P攝像機(jī),其驅(qū)動(dòng)需事先編譯進(jìn)Linux內(nèi)核,。中星微301P芯片采用了最先進(jìn)的算法加速硬件方式,,占用CPU資源一般為百分之十幾,使開發(fā)板LCD顯示屏在320×240模式下圖像表現(xiàn)優(yōu)異,,并能達(dá)到30 f/s的速度[3],,動(dòng)態(tài)畫面流暢,實(shí)時(shí)還原真實(shí)場景,。采集圖像數(shù)據(jù)經(jīng)攝像機(jī)硬件編碼通過USB接口與服務(wù)端實(shí)現(xiàn)傳輸,,采集圖像數(shù)據(jù)為JPEG格式圖片。服務(wù)端通過軟件解碼實(shí)現(xiàn)在服務(wù)端LCD上實(shí)時(shí)顯示,。
2.2.2 GSM模塊
GSM模塊是可用單片機(jī)控制的以TC35I為核心的GSM系統(tǒng)終端,,支持?jǐn)?shù)據(jù)、語言,、短信傳輸?shù)裙δ?,利用信令信道傳輸,是GSM通信網(wǎng)所特有的功能,,不用撥號(hào)建立連接,,直接把要發(fā)送的信息加上目的地址發(fā)送到短消息服務(wù)中心,由短消息服務(wù)中心再發(fā)送給最終的信宿,,短消息的收發(fā)不影響通話[4],。編碼后單條短消息最大長度為140 B,可以承載160個(gè)英文字符或70個(gè)漢字,;編碼后每頁消息長度為82 B,,最大頁數(shù)為15頁。GSM模塊短消息業(yè)務(wù)的優(yōu)點(diǎn)在于其無需建立連接,,服務(wù)費(fèi)用低,。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 軟件系統(tǒng)設(shè)計(jì)框架設(shè)計(jì)
本系統(tǒng)軟件框架分為服務(wù)器端主機(jī)控制、顯示系統(tǒng),、GSM手機(jī)呼叫系統(tǒng)和PC終端顯示系統(tǒng),。核心部分為服務(wù)端主機(jī)系統(tǒng),,以嵌入式Linux為基礎(chǔ),,建立交叉編譯環(huán)境,完成引導(dǎo)加載程序Supervivi,、Linux系統(tǒng)內(nèi)核Linux-2.6.32的編譯移植,,其中包括無線網(wǎng)卡,、通用USB攝像頭和LCD觸摸屏等驅(qū)動(dòng)的移植,最后移植通用yaffs文件系統(tǒng),?;谙到y(tǒng)設(shè)計(jì)的需要,采用Framebuffer作為底層圖形接口,,還需要在宿主機(jī)上交叉編譯Zlib,、JPEG、OpenCV等多種庫,,這使得系統(tǒng)環(huán)境具有豐富的控件資源和良好的可移植性,,最終形成基于ARM的嵌入式Linux平臺(tái),在此軟件平臺(tái)上可進(jìn)行嵌入式應(yīng)用程序的開發(fā),。
3.2 服務(wù)器端主機(jī)程序設(shè)計(jì)
主機(jī)程序設(shè)計(jì)采用C與C++語言相結(jié)合的方式進(jìn)行開發(fā),,C部分主要用于開發(fā)視頻播放程序和socket網(wǎng)絡(luò)程序,主要內(nèi)容包括初始化攝像機(jī)設(shè)備和創(chuàng)建線程1采集視頻圖像,。然后主程序創(chuàng)建一個(gè)套接字監(jiān)聽,,阻塞等待客戶端的請(qǐng)求連接。連接成功后再創(chuàng)建線程2發(fā)送采集到的圖像數(shù)據(jù)給客戶端,。線程1的作用是采集視頻圖像,,線程2的作用是發(fā)送圖像數(shù)據(jù)給客戶端。內(nèi)嵌自定義的傳輸協(xié)議,,自行編寫簡易系統(tǒng),,在不減少功能及系統(tǒng)穩(wěn)定的情況下,減少代碼數(shù)量,,精簡代碼,,設(shè)定算法,提高系統(tǒng)穩(wěn)定性,、安全性,。
當(dāng)主機(jī)設(shè)備啟動(dòng)以后,系統(tǒng)進(jìn)行初始化,,采集前端設(shè)備攝像機(jī)一幀圖像,,作圖像識(shí)別處理,判斷是否為家庭成員,。為非家庭成員時(shí),,主機(jī)與客戶端建立聯(lián)系,通過GSM模塊發(fā)送報(bào)警短信給業(yè)主手機(jī),,并通過TCP協(xié)議發(fā)送至終端,,在PC上實(shí)時(shí)顯示,業(yè)主可登錄Web網(wǎng)頁查看門口監(jiān)控,。程序流程圖如圖3所示,。
3.3 圖像數(shù)據(jù)的編解碼實(shí)現(xiàn)
系統(tǒng)在網(wǎng)絡(luò)傳輸前,,必須要對(duì)處理后的圖像數(shù)據(jù)重新進(jìn)行壓縮處理。系統(tǒng)采用了IJG(Independent JPEG Group)提供的Libjpeg庫實(shí)現(xiàn)在內(nèi)存中圖像數(shù)據(jù)的編解碼,,庫中函數(shù)必須從文件中讀取數(shù)據(jù),,再將壓縮數(shù)據(jù)存成JPEG文件,增加了不必要的文件I/O操作,,減慢了CPU的數(shù)據(jù)處理速度和網(wǎng)絡(luò)傳輸,。為克服其缺點(diǎn),改寫Libjpeg庫內(nèi)jdatasrc.c及jdatadst.c兩個(gè)源文件,,重新定義struct stdio_src_mgr及struct stdio_dest_mgr,,并設(shè)計(jì)增加圖像操作函數(shù),實(shí)現(xiàn)輸入和輸出數(shù)據(jù)的重定向到內(nèi)存中,,利用修改后的Libjpeg庫可以很好地實(shí)現(xiàn)在內(nèi)存中直接對(duì)圖像數(shù)據(jù)編,、解碼。
3.4 人臉識(shí)別與身份驗(yàn)證
本系統(tǒng)的特點(diǎn)是能實(shí)現(xiàn)人臉的檢測識(shí)別與身份驗(yàn)證,。系統(tǒng)所采用的人臉檢測算法主要來源于Vioal等提出的基于AdaBoost的實(shí)時(shí)人臉檢測算法,,該方法能實(shí)現(xiàn)Harr-like特征表示圖像。采用AdaBoost方法選擇少量特征組成強(qiáng)分類器,,引入“積分圖”概念,,提高對(duì)特征的計(jì)算速度,使用“cascade”策略,,提高人臉檢測速度,,并通過預(yù)先建立家庭成員人臉頭像庫文件的方式,將識(shí)別后取得的人臉圖像與庫中圖像匹配,,以此判定身份[5],。該方法能取得較好的檢測效果。
在此理論基礎(chǔ)上,,本文人臉檢測算法的實(shí)現(xiàn)是基于OpenCV開源代碼庫,,該庫實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。利用其開源性設(shè)計(jì)基礎(chǔ)的數(shù)據(jù)類型和實(shí)現(xiàn)函數(shù),,借助交叉編譯器等工具,,在服務(wù)器主機(jī)端實(shí)現(xiàn)人臉檢測及身份驗(yàn)證。系統(tǒng)人臉識(shí)別步驟如圖4所示,,人臉識(shí)別圖像處理效果顯示圖如圖5所示,。
3.5 信號(hào)忽略機(jī)制算法
因本系統(tǒng)需實(shí)現(xiàn)遠(yuǎn)程PC端的網(wǎng)頁觀看視頻功能,圖像數(shù)據(jù)要以TCP/IP協(xié)議的形式在互聯(lián)網(wǎng)中進(jìn)行傳輸,,因此需考慮多個(gè)遠(yuǎn)程PC端同時(shí)訪問服務(wù)器端請(qǐng)求數(shù)據(jù)的情況,,由此產(chǎn)生了如下問題:若目前有多個(gè)客戶端正在訪問服務(wù)器端,其中一個(gè)客戶端關(guān)閉了與服務(wù)端的連接,但服務(wù)端依然試圖發(fā)送圖像數(shù)據(jù)給客戶端(write to pipe with no readers),,系統(tǒng)就會(huì)發(fā)出一個(gè)SIGPIPE信號(hào),默認(rèn)對(duì)SIGPIPE的處理是終止(terminate),,此時(shí)即使還有別的客戶端仍連接,,負(fù)責(zé)發(fā)送圖像數(shù)據(jù)的服務(wù)器端還是會(huì)被終止。這當(dāng)然不是所想要的,,因此本文采用了SIGPIPE信號(hào)忽略機(jī)制算法,。
信號(hào)是UNIX/Linux進(jìn)程間通信的一種標(biāo)準(zhǔn)方式,又稱軟中斷信號(hào)(signal,,簡稱為信號(hào)),,是一種簡單的通信方式,由于信號(hào)相對(duì)簡單和有效而被廣泛使用[6],。信號(hào)主要用來通知進(jìn)程發(fā)生了異步事件,。但信號(hào)只是用來通知某進(jìn)程發(fā)生了什么事件,并不給該進(jìn)程傳遞任何數(shù)據(jù),,收到信號(hào)的進(jìn)程對(duì)各種信號(hào)有不同的處理方法,,其中有一種處理方法是,忽略某個(gè)信號(hào),,對(duì)該信號(hào)不作任何處理,,就像從未發(fā)生過一樣,而進(jìn)程是通過調(diào)用signal來指定進(jìn)程對(duì)某個(gè)信號(hào)的處理行為,。在本系統(tǒng)中,,在建立一個(gè)socket時(shí)便設(shè)定好客戶端的信號(hào)處理機(jī)制,設(shè)定為信號(hào)忽略,。這種情況下,,即使其中一個(gè)客戶端關(guān)閉與服務(wù)器的連接,服務(wù)器端也不會(huì)終止,,從而提高了系統(tǒng)的可靠性,。
隨著人民生活水平的日益提高,人們對(duì)居住生活的安全性愈加重視,,家庭防盜系統(tǒng)的作用更加突出,,克服家庭防盜系統(tǒng)對(duì)于機(jī)械鎖的過度依賴,本系統(tǒng)變傳統(tǒng)的被動(dòng)式消極防盜為報(bào)警式積極防盜,,提高了防盜系統(tǒng)的安全性,。該系統(tǒng)使用簡單,價(jià)格低,,市場應(yīng)用前景廣闊,,值得進(jìn)行大量的探索和深入的研究。
參考文獻(xiàn)
[1] 鐘海濤.基站智能防盜監(jiān)控系統(tǒng)視頻智能分析技術(shù)的研究[D].北京:北京郵電大學(xué),2011.
[2] 吳嘉彥.基于ARM的JPEG圖像處理技術(shù)研究與應(yīng)用[J].梧州學(xué)院學(xué)報(bào),,2010(6):67-72.
[3] 宋樂,,林玉池,吳穎,,等.基于視覺傳感的嵌入式自動(dòng)讀尺系統(tǒng)[J].傳感器與微系統(tǒng),,2009(8):86-88.
[4] 吳玉田,王瑞光,,鄭喜鳳,,等.GSM模塊TC35及其應(yīng)用[J].計(jì)算機(jī)測量與控制,2002(8):557-560.
[5] 公衍宇,,郭琦,,于超.Android系統(tǒng)下OpenCV的人臉檢測模塊的設(shè)計(jì)[J].電子設(shè)計(jì)工程,2012(20):52-54.
[6] 鄭尚志,,趙小龍,,昌杰.Linux信號(hào)機(jī)制的分析與研究[J].科技資訊,2008(11):98-100.
[7] 李明學(xué),,田由輝,,張雅若.ARM平臺(tái)嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的實(shí)現(xiàn)[J].電子產(chǎn)品世界,2012(12):62-64.
[8] 王桂林.監(jiān)控領(lǐng)域背景下遠(yuǎn)距離人臉識(shí)別系統(tǒng)探究[J].信息通信,,2012(6):9.