官洪運,許廣洋,于融正
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 200051)
基于云端的視頻圖像識別系統(tǒng)的實現(xiàn)
官洪運,許廣洋,于融正
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 200051)
如今的網(wǎng)絡(luò)視頻監(jiān)控大多是基于客戶端/服務(wù)器端(Client/Server,C/S)架構(gòu),系統(tǒng)擴展性差、功能單一,視頻源設(shè)備部署難度高,地點受限。隨著智能移動終端設(shè)備的普及,本系統(tǒng)采用了瀏覽器/服務(wù)器端(Browser/Server,B/S)結(jié)構(gòu)。系統(tǒng)功能的升級全部在服務(wù)器端完成??蛻舳瞬皇苡脩粲布蛘哕浖脚_的限制,利用移動智能設(shè)備的便利性,可以隨時訪問系統(tǒng)獲取信息。傳統(tǒng)視頻監(jiān)控系統(tǒng)對視頻的監(jiān)控是依靠人的監(jiān)視來判斷突發(fā)事件的發(fā)生。而本系統(tǒng)由云端接收攝像頭發(fā)來的視頻流,對視頻流進行解析后交給后臺的視頻分析程序進行分析。當(dāng)遇到用戶設(shè)定的事件發(fā)生時,立即推送用戶警告和實時視頻,實現(xiàn)無人值守24小時監(jiān)控。本系統(tǒng)利用云端強大的計算能力和可擴展的網(wǎng)絡(luò)帶寬實現(xiàn)了網(wǎng)絡(luò)視頻流的傳輸并利用視頻流進行圖像識別,省略了分布式的圖像識別,降低了對視頻源的處理性能的依賴,減小了視頻源設(shè)備的體積,使安裝視頻源的地點更廣泛。
智能監(jiān)控;圖像識別;OpenCV;J2EE
[1]介紹的基于B/S的數(shù)字視頻監(jiān)控系統(tǒng),實現(xiàn)了視頻的顯示和捕捉視頻的回放。參考文獻[2]介紹的基于B/S架構(gòu)的交通監(jiān)控系統(tǒng),實現(xiàn)了視頻采集、傳輸和在Web瀏覽器中顯示功能。參考文獻[3]介紹了基于B/S系統(tǒng)面向分布式監(jiān)測點的集中管理。該系統(tǒng)包括視頻編解碼器,中央服務(wù)器和視頻瀏覽器,使用ADSPBFS33芯片進行數(shù)字視頻信號的實時壓縮。然而,它不執(zhí)行運動檢測。參考文獻[4]介紹開發(fā)了基于B/S架構(gòu)的智能視頻監(jiān)控原型,使用了C語言開發(fā)的服務(wù)器端,瀏覽器端采用了ActiveX技術(shù),平臺兼容性較差,效率較低,用戶交互界面不夠友好,功能薄弱。
圖1 系統(tǒng)結(jié)構(gòu)圖
本系統(tǒng)由服務(wù)器端和瀏覽器端構(gòu)成,如圖1系統(tǒng)結(jié)構(gòu)圖。服務(wù)器端分為網(wǎng)頁服務(wù)器和視頻流分發(fā)服務(wù)器,網(wǎng)頁服務(wù)器采用Java平臺企業(yè)版(Java2PlatformEnterpriseEdition,J2EE)技術(shù)實現(xiàn),負(fù)責(zé)視頻的解碼、分析;視頻流分發(fā)服務(wù)器采用Nginx加實時消息傳輸協(xié)議(RealTimeMessagingProtocol,RTMP)模塊實現(xiàn),負(fù)責(zé)視頻的采集、分發(fā)。瀏覽器端采用第五代超文本標(biāo)記語言(HyperTextMarkupLanguage,HTML5)和JavaScript語言,負(fù)責(zé)視頻的接收、解碼和構(gòu)建用戶界面。
本系統(tǒng)基于B/S架構(gòu)。在B/S架構(gòu)中,視頻的圖像分析是在服務(wù)器端進行,因此簡化了客戶端的開發(fā),使得客戶端的維護更加方便。通過互聯(lián)網(wǎng)技術(shù),使隨時隨地實時監(jiān)控成為可能。
1.1 網(wǎng)頁服務(wù)器端容器
Tomcat服務(wù)器是一個免費的開放源代碼的Web應(yīng)用服務(wù)器,屬于輕量級應(yīng)用服務(wù)器,是本系統(tǒng)的運行載體,是符合J2EE中Servlet(ServerApplet,Servlet)和Java服務(wù)器頁面(JavaServerPages,JSP)規(guī)范的容器。
1.2 網(wǎng)頁服務(wù)器端MVC構(gòu)建模式
考慮到系統(tǒng)的可維護性和可擴展性,整個網(wǎng)頁服務(wù)器端采用MVC(ModelViewController)框架結(jié)構(gòu)。整個系統(tǒng)分為模型、視圖、控制器三個部分,各部分相互獨立,業(yè)務(wù)間相互解耦。將業(yè)務(wù)邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯。
1.3 非關(guān)系型數(shù)據(jù)庫
MongoDB是非關(guān)系型數(shù)據(jù)庫,它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似JSON(JavaScriptObjectNotation)的BSON格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型[5]。其高并發(fā)情況下速度快,適合不同種類傳感器產(chǎn)生的海量異構(gòu)數(shù)據(jù)的存儲。
視頻流分發(fā)服務(wù)器接收視頻源發(fā)送的RTMP視頻流,并通過相對應(yīng)的RTMP協(xié)議地址廣播[6],網(wǎng)頁服務(wù)器通過把各個視頻源的廣播地址傳遞給Java本地語言接口(JavaNativeInterface,JNI)封裝的圖像識別算法OpenCV(OpenSourceComputerVisionLibrary),實現(xiàn)24小時實時無人值守監(jiān)控。
2.1RTMP協(xié)議
RTMP協(xié)議是一個互聯(lián)網(wǎng)TCP/IP五層體系結(jié)構(gòu)中應(yīng)用層的協(xié)議。RTMP協(xié)議中基本的數(shù)據(jù)單元稱為消息(Message)。當(dāng)RTMP協(xié)議在互聯(lián)網(wǎng)中傳輸數(shù)據(jù)的時候,消息會被拆分成更小的單元,稱為消息塊(Chunk)。
RTMP傳輸媒體數(shù)據(jù)的過程中,發(fā)送端首先把媒體數(shù)據(jù)封裝成消息,然后把消息分割成消息塊,最后將分割后的消息塊通過TCP協(xié)議發(fā)送出去。接收端在通過TCP協(xié)議收到數(shù)據(jù)后,首先把消息塊重新組合成消息,然后通過對消息進行解封裝處理就可以恢復(fù)出媒體數(shù)據(jù)。
2.2RTMP視頻源
市面上大多數(shù)IP攝像頭都可以作為RTMP視頻源。運行Linux系統(tǒng)的ARM平臺或X86平臺也可以通過FFMPEG音頻/視頻編解碼庫使用普通攝像頭產(chǎn)生RTMP視頻流。
2.3NginxRTMP模塊實現(xiàn)視頻流的分發(fā)
Nginx是一個高性能的HTTP和反向代理服務(wù)器,可以作為負(fù)載均衡服務(wù)器搭配Tomcat集群。本系統(tǒng)使用Nginx的RTMP模塊作為RTMP視頻源的分發(fā)視頻流服務(wù)器。
OpenCV是一個跨平臺計算機視覺庫,可以運行在Linux、Windows和MacOS操作系統(tǒng)上。其輕量級而且高效,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。
3.1 在Web項目中融入OpenCV的方式
要實現(xiàn)在服務(wù)器端進行圖像處理并高效地開發(fā)圖像處理算法,OpenCV的引入是必須的。下面討論幾種在JavaWeb項目中引入OpenCV的方式。
3.1.1 使用OpenCV的JavaAPI接口
OpenCV提供有Java應(yīng)用程序編程接口(ApplicationProgrammingInterface,API),但因為OpenCV原生是C/C++編寫的,所以提供的JavaAPI也只是一種封裝。并且OpenCV版本更新很快,而JavaAPI的更新不及時,造成一些OpenCV函數(shù)沒有相應(yīng)的JavaAPI,阻礙了開發(fā)者的使用。
3.1.2 使用JavaCV
JavaCV是OpenCV的第三方封裝,并加入了一些其他的視頻處理類庫。但和官方封裝有類似的缺點,并且JavaCV的官方支持文檔版本較低,已經(jīng)不能指導(dǎo)最新版的JavaCV的使用。
3.1.3 使用JNI技術(shù)調(diào)用OpenCV類庫
JVM封裝了各種操作系統(tǒng)實際的差異性的同時,提供了JNI技術(shù),使得開發(fā)者可以通過Java程序調(diào)用到操作系統(tǒng)相關(guān)技術(shù)實現(xiàn)的庫函數(shù),從而與其他技術(shù)和系統(tǒng)交互,使用其他技術(shù)實現(xiàn)的系統(tǒng)功能;同時其他技術(shù)和系統(tǒng)也可以通過JNI提供的相應(yīng)原生接口調(diào)用Java應(yīng)用系統(tǒng)內(nèi)部實現(xiàn)的功能。JNI與操作系統(tǒng)的關(guān)系如圖2所示。
圖2 JNI與操作系統(tǒng)關(guān)系圖
使用JNI技術(shù)而不使用OpenCV的Java封裝最主要的優(yōu)點在于,使用JNI技術(shù)可以保證OpenCV算法開發(fā)的原生性。原生性主要體現(xiàn)在開發(fā)人員可以使用OpenCV的原生C/C++接口來進行開發(fā),與開發(fā)本機離線圖像識別算法沒有明顯區(qū)別。區(qū)別只是在最后編譯時要針對網(wǎng)頁服務(wù)器的平臺編譯成相應(yīng)的動態(tài)鏈接庫文件。其次,因為使用的是原生的接口,所以一些本機離線的圖像識別算法只需經(jīng)過簡單的處理就可以移植到服務(wù)器端變?yōu)樵诰€的圖像識別算法。
綜上所述,本系統(tǒng)選用JNI技術(shù)實現(xiàn)OpenCV的融入。
3.2 圖像處理算法
本系統(tǒng)預(yù)期應(yīng)用的背景是,攝像機被放置在固定的位置和角度,監(jiān)視靜態(tài)背景的場景。以此為基礎(chǔ)討論幾種圖像識別算法。
3.2.1 物體運動監(jiān)測
物體運動監(jiān)測的算法主要有背景差幀算法、光流場算法和歷史運動模板算法。
背景差幀方法是最傳統(tǒng)的運動檢測方法。背景差幀方法通常簡單高效,但對背景的明亮變化和背景的物體敏感。因此,背景必須仔細計算并實時更新。
光流場模型用于計算圖像幀中每一個像素的瞬間速度,是基于對圖像幀之間各像素的灰度等級值的變化求取的。光流場是閾值處理過程,基于像素速度的大小進行分類,判斷該像素是前景(移動)還是背景(靜態(tài))。光流場的方法不要求在現(xiàn)場的任何先驗知識并且經(jīng)常產(chǎn)生比背景差幀更準(zhǔn)確的結(jié)果。然而,它們也對照明變化非常敏感,需要較高的計算量。因此,光流場算法通常不適合于實時運動檢測,除非有專門的硬件支持。
歷史運動模板算法會生成一個運動歷史圖像(MotionHistoryImage,MHI)。MHI記錄每個像素的最近時間的運動實例[7]。如果像素在很長的一段時間內(nèi)一直沒有在運動,MHI對應(yīng)的值將被重置為零。歷史運動模板方法是簡單而有效的,因此適合于實時運動檢測是。因此,目前本系統(tǒng)中運動檢測是基于模板的方法實現(xiàn)。
3.2.2 可見光火焰監(jiān)測
對可見光下煙霧視頻圖像進行分析,可以得到煙霧的以下幾個特征量:煙霧擴散性區(qū)域運動連續(xù)性、煙霧不規(guī)則性、煙霧背景模糊性、煙霧相關(guān)性[8],可見光火焰監(jiān)測算法通過對這些特征量進行分析,從而推斷視頻圖像中是否有火焰。
3.2.3 可見光煙霧監(jiān)測
可見光煙霧監(jiān)測算法通過對火焰的顏色、火焰面積、火焰的不規(guī)則性(圓形度、軸向比)等特征量進行分析,從而推斷視頻圖像中是否有煙霧。在紅外系統(tǒng)下主要研究火焰的紅外溫度特征。
整個系統(tǒng)采用認(rèn)證登錄機制,每個用戶有不同的用戶組和權(quán)限,用戶只能訪問自己用戶組范圍內(nèi)的攝像頭或向用戶組內(nèi)添加攝像頭。系統(tǒng)在推送警報時也僅會推送用戶組范圍內(nèi)的攝像頭警報,各個用戶組互不干擾。
系統(tǒng)頁面采用HTML5和JSP實現(xiàn),頁面的加載,頁面數(shù)據(jù)的查詢,表格的提交,輸入的驗證都采用異步JavaScript和XML(AsynchronousJavascriptAndXML,AJAX)技術(shù)實現(xiàn),避免頁面的整體刷新,不僅減小服務(wù)器后臺的壓力,而且完善了用戶的體驗。
4.1 系統(tǒng)功能頁面
系統(tǒng)的總覽頁面提供系統(tǒng)運行信息的快速瀏覽和系統(tǒng)功能導(dǎo)航。頁面左側(cè)是用戶登錄信息和系統(tǒng)功能導(dǎo)航。頁面左側(cè)以圖表化方式提供實時數(shù)據(jù)的快速查詢。上部左側(cè)是攝像頭地理位置分布地圖,每個綠點表示一個攝像頭,每個綠點的位置通過攝像頭的GPS信息繪制,如果該點有警報就會變成紅色。上部右側(cè)從上到下分為三個區(qū)域,依次顯示攝像頭的位置、攝像頭綁定的溫度傳感器的溫度信息、歷史報警信息。下部左側(cè)是該點的實時視頻。下部右側(cè)是該點歷史溫度信息曲線圖,是根據(jù)實時溫度傳感器數(shù)據(jù)繪制的。
通過頁面左側(cè)的導(dǎo)航欄可以切換到攝像頭狀態(tài)頁面。該頁面可以查看各個攝像頭的名稱、RTMP地址、攝像頭的狀態(tài)??梢赃x擇需要監(jiān)視的攝像頭調(diào)出實時視頻。
設(shè)置攝像頭頁面可以添加修改每個攝像頭的類型。普通攝像頭需要手動指定經(jīng)緯度定位信息,GPS攝像頭通過綁定的GPS接收機獲取經(jīng)緯度信息。雙目攝像機可以在單目的基礎(chǔ)上添加紅外線攝像頭。還可以選擇每個攝像頭使用的監(jiān)測算法包括,運動監(jiān)測、煙霧監(jiān)測、火焰監(jiān)測。
4.2 實時警報推送
為了實現(xiàn)實時警報推送,本系統(tǒng)采用了HTML5中的WebSocket協(xié)議。
在瀏覽器中通過HTTP協(xié)議僅能實現(xiàn)單向的通信,它只允許瀏覽器向后臺服務(wù)器發(fā)出請求資源后,后臺服務(wù)器才能返回相應(yīng)的數(shù)據(jù),而后臺服務(wù)器不能主動給瀏覽器推送數(shù)據(jù)。
WebSocket協(xié)議是一種雙向通信協(xié)議,它建立在TCP之上,同HTTP一樣通過TCP來傳輸數(shù)據(jù),但是它和HTTP最大的不同是:WebSocket是一種雙向通信協(xié)議,在建立連接后,后端服務(wù)器和瀏覽器都能主動地向?qū)Ψ桨l(fā)送或接收對方數(shù)據(jù),就像Socket一樣,不同的是WebSocket是建立在Web基礎(chǔ)上的一種簡單模擬Socket的協(xié)議。
本系統(tǒng)中在后臺服務(wù)器實現(xiàn)了符合WebSocket協(xié)議的服務(wù),根據(jù)不同用戶所在的不同用戶組,在前端頁面訂閱不同的WebSocket服務(wù)地址,實現(xiàn)在相同用戶組內(nèi)推送相同警報,對不同的用戶組推送不同的警報,使用戶能第一時間發(fā)現(xiàn)警報。
本系統(tǒng)在云端服務(wù)器上運用J2EE技術(shù)開發(fā)了視頻圖像識別系統(tǒng),在云端實現(xiàn)了運動物體監(jiān)測、可見光火焰監(jiān)測、可見光煙霧監(jiān)測。系統(tǒng)經(jīng)過模擬部署測試,各項功能運轉(zhuǎn)正常,穩(wěn)定性良好。本系統(tǒng)給公共安全監(jiān)控系統(tǒng)、安保監(jiān)控系統(tǒng)和火災(zāi)監(jiān)測系統(tǒng)等領(lǐng)域帶來了新的發(fā)展思路和可能性。
未來,項目的識別算法會更加豐富,界面功能更加完善,用戶的交互體驗會進一步提升,實現(xiàn)微信報警推送、短信報警推送等,用戶無需登錄系統(tǒng)就能掌握現(xiàn)場情況。
參考文獻
[1]LvXiaochao,HouZengxuan.AdigitalvideomonitorsystembasedonCLSstructure[J].ScienceTechnologyandEngineering,2007,7(9): 1894-1897.
[2]HuFengjun,WangGuangpeng,ZhangYanwei,etal.ActivexbuildingbasedonB/Sarchitectureoftrafficvideomonitoringsystem[J].ComputerandCommunications, 2005, 5(23): 102-104.
[3]WangQi,ZhuYu.Designandimplementationofdigitalvideosurveillancesystembasedonb/sstructure[J].ComputerEngineering, 2006, 32(19): 251-253.
[4]NingMingyin,HuangYan,PengJingliang.AprototypeofB/S-basedintelligentvideosurveillancesystem[C].InternationalCongressonImageandSignalProcessing,Chongqing,China,2012.IEEEComputerSociety,2012:164-168.
[5] 查改琴,褚偉.家庭物聯(lián)網(wǎng)中多源異構(gòu)數(shù)據(jù)存儲方案選擇及建模[J] .現(xiàn)代計算機,2015,5(9): 17-21.
[6] 雷霄驊,姜秀華,王彩虹.基于RTMP協(xié)議的流媒體技術(shù)的原理與應(yīng)用[J] .中國傳媒大學(xué)學(xué)報(自然科學(xué)版),2013, 6(9): 11-22.
[7] 毛星云.OpenCV3編程入門[M]. 北京:電子工業(yè)出版社,2015.
[8] 陽婷.基于視頻監(jiān)控的火災(zāi)探測系統(tǒng)的研究與實現(xiàn) [D]. 上海:東華大學(xué),2016.
AI design and implementation of a new version of “the pac-man” game
GuanHongyun,XuGuangyang,YuRongzheng
(SchoolofInformationScienceandTechnology,DonghuaUniversity,Shanghai200051,China)
Today’snetworkvideosurveillanceismostlybasedonClient/Server(C/S)architecture.Itsscalabilityispoor,functionissingle,deployingisdifficultanditsislocationsrestricted.Withthepopularityofsmartmobiledevices,thesystemusestheBrowser/Server(B/S)structure.Upgradeofthesystemfunctioniscompletedontheserverside.Unlimitedbyuserclienthardwareorsoftwareplatform,theuseofmobilesmartdevicesconvenience,youcanalwaysaccessthesystemtoobtaininformation.Traditionalvideosurveillancesystemvideosurveillancemonitoringreliesonpeopletodeterminetheoccurrenceofunexpectedevents.ButthissystemreceivesvideostreamfromIPcamera,thevideostreamissenttothebackgroundvideoanalysisprogramforanalysis.Whenthesystemconfrontedwithauser-definedeventoccurs,itimmediatelypushesuserwarningandreal-timevideo,realizingunattended24-hoursurveillance.ThesystemusespowerfulCloudcomputingpowerandnetworkbandwidthtoachievescalablenetworkvideostreamtransmissionofvideostreamandrealizesimagerecognition.Usingimagerecognitionomitdistributed,itreducestherelianceonthevideosourceprocessingperformance,reducesthesizeofvideosourcedevice,andextendstheinstallationlocation.
intelligentmonitor;imagerecognition;OpenCV;J2EE
TP
ADOI: 10.19358/j.issn.1674- 7720.2016.22.014
官洪運,許廣洋,于融正. 基于云端的視頻圖像識別系統(tǒng)的實現(xiàn)[J].微型機與應(yīng)用,2016,35(22):51-53,64.
0 引言
2016-07-17)
官洪運(1960-),男,本科,副教授,主要研究方向:火災(zāi)檢測、圖像識別。
許廣洋(1990-),男,在讀研究生,主要研究方向:J2EE程序設(shè)計、圖像識別。
于融正(1992-),男,在讀研究生,主要研究方向:網(wǎng)絡(luò)通信、火災(zāi)檢測。
如今,硬件、網(wǎng)絡(luò)和計算機視覺技術(shù)突飛猛進。互聯(lián)網(wǎng)化和智能化已經(jīng)成為視頻監(jiān)控系統(tǒng)發(fā)展的主要趨勢。本文介紹了基于云端的視頻圖像識別系統(tǒng)的實現(xiàn)。該系統(tǒng)實現(xiàn)了24小時實時視頻監(jiān)控、運動監(jiān)測、火災(zāi)監(jiān)測及多傳感器的融合,能在有互聯(lián)網(wǎng)連接和Web瀏覽器的任何平臺上輕松接入。本系統(tǒng)不需要特殊的硬件,如視頻捕捉和處理芯片。