官洪運,許廣洋,于融正
(東華大學 信息科學與技術學院,上海 200051)
基于云端的視頻圖像識別系統的實現
官洪運,許廣洋,于融正
(東華大學 信息科學與技術學院,上海 200051)
如今的網絡視頻監控大多是基于客戶端/服務器端(Client/Server,C/S)架構,系統擴展性差、功能單一,視頻源設備部署難度高,地點受限。隨著智能移動終端設備的普及,本系統采用了瀏覽器/服務器端(Browser/Server,B/S)結構。系統功能的升級全部在服務器端完成。客戶端不受用戶硬件或者軟件平臺的限制,利用移動智能設備的便利性,可以隨時訪問系統獲取信息。傳統視頻監控系統對視頻的監控是依靠人的監視來判斷突發事件的發生。而本系統由云端接收攝像頭發來的視頻流,對視頻流進行解析后交給后臺的視頻分析程序進行分析。當遇到用戶設定的事件發生時,立即推送用戶警告和實時視頻,實現無人值守24小時監控。本系統利用云端強大的計算能力和可擴展的網絡帶寬實現了網絡視頻流的傳輸并利用視頻流進行圖像識別,省略了分布式的圖像識別,降低了對視頻源的處理性能的依賴,減小了視頻源設備的體積,使安裝視頻源的地點更廣泛。
智能監控;圖像識別;OpenCV;J2EE
[1]介紹的基于B/S的數字視頻監控系統,實現了視頻的顯示和捕捉視頻的回放。參考文獻[2]介紹的基于B/S架構的交通監控系統,實現了視頻采集、傳輸和在Web瀏覽器中顯示功能。參考文獻[3]介紹了基于B/S系統面向分布式監測點的集中管理。該系統包括視頻編解碼器,中央服務器和視頻瀏覽器,使用ADSPBFS33芯片進行數字視頻信號的實時壓縮。然而,它不執行運動檢測。參考文獻[4]介紹開發了基于B/S架構的智能視頻監控原型,使用了C語言開發的服務器端,瀏覽器端采用了ActiveX技術,平臺兼容性較差,效率較低,用戶交互界面不夠友好,功能薄弱。

圖1 系統結構圖
本系統由服務器端和瀏覽器端構成,如圖1系統結構圖。服務器端分為網頁服務器和視頻流分發服務器,網頁服務器采用Java平臺企業版(Java2PlatformEnterpriseEdition,J2EE)技術實現,負責視頻的解碼、分析;視頻流分發服務器采用Nginx加實時消息傳輸協議(RealTimeMessagingProtocol,RTMP)模塊實現,負責視頻的采集、分發。瀏覽器端采用第五代超文本標記語言(HyperTextMarkupLanguage,HTML5)和JavaScript語言,負責視頻的接收、解碼和構建用戶界面。
本系統基于B/S架構。在B/S架構中,視頻的圖像分析是在服務器端進行,因此簡化了客戶端的開發,使得客戶端的維護更加方便。通過互聯網技術,使隨時隨地實時監控成為可能。
1.1 網頁服務器端容器
Tomcat服務器是一個免費的開放源代碼的Web應用服務器,屬于輕量級應用服務器,是本系統的運行載體,是符合J2EE中Servlet(ServerApplet,Servlet)和Java服務器頁面(JavaServerPages,JSP)規范的容器。
1.2 網頁服務器端MVC構建模式
考慮到系統的可維護性和可擴展性,整個網頁服務器端采用MVC(ModelViewController)框架結構。整個系統分為模型、視圖、控制器三個部分,各部分相互獨立,業務間相互解耦。將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。
1.3 非關系型數據庫
MongoDB是非關系型數據庫,它支持的數據結構非常松散,是類似JSON(JavaScriptObjectNotation)的BSON格式,因此可以存儲比較復雜的數據類型[5]。其高并發情況下速度快,適合不同種類傳感器產生的海量異構數據的存儲。
視頻流分發服務器接收視頻源發送的RTMP視頻流,并通過相對應的RTMP協議地址廣播[6],網頁服務器通過把各個視頻源的廣播地址傳遞給Java本地語言接口(JavaNativeInterface,JNI)封裝的圖像識別算法OpenCV(OpenSourceComputerVisionLibrary),實現24小時實時無人值守監控。
2.1RTMP協議
RTMP協議是一個互聯網TCP/IP五層體系結構中應用層的協議。RTMP協議中基本的數據單元稱為消息(Message)。當RTMP協議在互聯網中傳輸數據的時候,消息會被拆分成更小的單元,稱為消息塊(Chunk)。
RTMP傳輸媒體數據的過程中,發送端首先把媒體數據封裝成消息,然后把消息分割成消息塊,最后將分割后的消息塊通過TCP協議發送出去。接收端在通過TCP協議收到數據后,首先把消息塊重新組合成消息,然后通過對消息進行解封裝處理就可以恢復出媒體數據。
2.2RTMP視頻源
市面上大多數IP攝像頭都可以作為RTMP視頻源。運行Linux系統的ARM平臺或X86平臺也可以通過FFMPEG音頻/視頻編解碼庫使用普通攝像頭產生RTMP視頻流。
2.3NginxRTMP模塊實現視頻流的分發
Nginx是一個高性能的HTTP和反向代理服務器,可以作為負載均衡服務器搭配Tomcat集群。本系統使用Nginx的RTMP模塊作為RTMP視頻源的分發視頻流服務器。
OpenCV是一個跨平臺計算機視覺庫,可以運行在Linux、Windows和MacOS操作系統上。其輕量級而且高效,實現了圖像處理和計算機視覺方面的很多通用算法。
3.1 在Web項目中融入OpenCV的方式
要實現在服務器端進行圖像處理并高效地開發圖像處理算法,OpenCV的引入是必須的。下面討論幾種在JavaWeb項目中引入OpenCV的方式。
3.1.1 使用OpenCV的JavaAPI接口
OpenCV提供有Java應用程序編程接口(ApplicationProgrammingInterface,API),但因為OpenCV原生是C/C++編寫的,所以提供的JavaAPI也只是一種封裝。并且OpenCV版本更新很快,而JavaAPI的更新不及時,造成一些OpenCV函數沒有相應的JavaAPI,阻礙了開發者的使用。
3.1.2 使用JavaCV
JavaCV是OpenCV的第三方封裝,并加入了一些其他的視頻處理類庫。但和官方封裝有類似的缺點,并且JavaCV的官方支持文檔版本較低,已經不能指導最新版的JavaCV的使用。
3.1.3 使用JNI技術調用OpenCV類庫
JVM封裝了各種操作系統實際的差異性的同時,提供了JNI技術,使得開發者可以通過Java程序調用到操作系統相關技術實現的庫函數,從而與其他技術和系統交互,使用其他技術實現的系統功能;同時其他技術和系統也可以通過JNI提供的相應原生接口調用Java應用系統內部實現的功能。JNI與操作系統的關系如圖2所示。

圖2 JNI與操作系統關系圖
使用JNI技術而不使用OpenCV的Java封裝最主要的優點在于,使用JNI技術可以保證OpenCV算法開發的原生性。原生性主要體現在開發人員可以使用OpenCV的原生C/C++接口來進行開發,與開發本機離線圖像識別算法沒有明顯區別。區別只是在最后編譯時要針對網頁服務器的平臺編譯成相應的動態鏈接庫文件。其次,因為使用的是原生的接口,所以一些本機離線的圖像識別算法只需經過簡單的處理就可以移植到服務器端變為在線的圖像識別算法。
綜上所述,本系統選用JNI技術實現OpenCV的融入。
3.2 圖像處理算法
本系統預期應用的背景是,攝像機被放置在固定的位置和角度,監視靜態背景的場景。以此為基礎討論幾種圖像識別算法。
3.2.1 物體運動監測
物體運動監測的算法主要有背景差幀算法、光流場算法和歷史運動模板算法。
背景差幀方法是最傳統的運動檢測方法。背景差幀方法通常簡單高效,但對背景的明亮變化和背景的物體敏感。因此,背景必須仔細計算并實時更新。
光流場模型用于計算圖像幀中每一個像素的瞬間速度,是基于對圖像幀之間各像素的灰度等級值的變化求取的。光流場是閾值處理過程,基于像素速度的大小進行分類,判斷該像素是前景(移動)還是背景(靜態)。光流場的方法不要求在現場的任何先驗知識并且經常產生比背景差幀更準確的結果。然而,它們也對照明變化非常敏感,需要較高的計算量。因此,光流場算法通常不適合于實時運動檢測,除非有專門的硬件支持。
歷史運動模板算法會生成一個運動歷史圖像(MotionHistoryImage,MHI)。MHI記錄每個像素的最近時間的運動實例[7]。如果像素在很長的一段時間內一直沒有在運動,MHI對應的值將被重置為零。歷史運動模板方法是簡單而有效的,因此適合于實時運動檢測是。因此,目前本系統中運動檢測是基于模板的方法實現。
3.2.2 可見光火焰監測
對可見光下煙霧視頻圖像進行分析,可以得到煙霧的以下幾個特征量:煙霧擴散性區域運動連續性、煙霧不規則性、煙霧背景模糊性、煙霧相關性[8],可見光火焰監測算法通過對這些特征量進行分析,從而推斷視頻圖像中是否有火焰。
3.2.3 可見光煙霧監測
可見光煙霧監測算法通過對火焰的顏色、火焰面積、火焰的不規則性(圓形度、軸向比)等特征量進行分析,從而推斷視頻圖像中是否有煙霧。在紅外系統下主要研究火焰的紅外溫度特征。
整個系統采用認證登錄機制,每個用戶有不同的用戶組和權限,用戶只能訪問自己用戶組范圍內的攝像頭或向用戶組內添加攝像頭。系統在推送警報時也僅會推送用戶組范圍內的攝像頭警報,各個用戶組互不干擾。
系統頁面采用HTML5和JSP實現,頁面的加載,頁面數據的查詢,表格的提交,輸入的驗證都采用異步JavaScript和XML(AsynchronousJavascriptAndXML,AJAX)技術實現,避免頁面的整體刷新,不僅減小服務器后臺的壓力,而且完善了用戶的體驗。
4.1 系統功能頁面
系統的總覽頁面提供系統運行信息的快速瀏覽和系統功能導航。頁面左側是用戶登錄信息和系統功能導航。頁面左側以圖表化方式提供實時數據的快速查詢。上部左側是攝像頭地理位置分布地圖,每個綠點表示一個攝像頭,每個綠點的位置通過攝像頭的GPS信息繪制,如果該點有警報就會變成紅色。上部右側從上到下分為三個區域,依次顯示攝像頭的位置、攝像頭綁定的溫度傳感器的溫度信息、歷史報警信息。下部左側是該點的實時視頻。下部右側是該點歷史溫度信息曲線圖,是根據實時溫度傳感器數據繪制的。
通過頁面左側的導航欄可以切換到攝像頭狀態頁面。該頁面可以查看各個攝像頭的名稱、RTMP地址、攝像頭的狀態。可以選擇需要監視的攝像頭調出實時視頻。
設置攝像頭頁面可以添加修改每個攝像頭的類型。普通攝像頭需要手動指定經緯度定位信息,GPS攝像頭通過綁定的GPS接收機獲取經緯度信息。雙目攝像機可以在單目的基礎上添加紅外線攝像頭。還可以選擇每個攝像頭使用的監測算法包括,運動監測、煙霧監測、火焰監測。
4.2 實時警報推送
為了實現實時警報推送,本系統采用了HTML5中的WebSocket協議。
在瀏覽器中通過HTTP協議僅能實現單向的通信,它只允許瀏覽器向后臺服務器發出請求資源后,后臺服務器才能返回相應的數據,而后臺服務器不能主動給瀏覽器推送數據。
WebSocket協議是一種雙向通信協議,它建立在TCP之上,同HTTP一樣通過TCP來傳輸數據,但是它和HTTP最大的不同是:WebSocket是一種雙向通信協議,在建立連接后,后端服務器和瀏覽器都能主動地向對方發送或接收對方數據,就像Socket一樣,不同的是WebSocket是建立在Web基礎上的一種簡單模擬Socket的協議。
本系統中在后臺服務器實現了符合WebSocket協議的服務,根據不同用戶所在的不同用戶組,在前端頁面訂閱不同的WebSocket服務地址,實現在相同用戶組內推送相同警報,對不同的用戶組推送不同的警報,使用戶能第一時間發現警報。
本系統在云端服務器上運用J2EE技術開發了視頻圖像識別系統,在云端實現了運動物體監測、可見光火焰監測、可見光煙霧監測。系統經過模擬部署測試,各項功能運轉正常,穩定性良好。本系統給公共安全監控系統、安保監控系統和火災監測系統等領域帶來了新的發展思路和可能性。
未來,項目的識別算法會更加豐富,界面功能更加完善,用戶的交互體驗會進一步提升,實現微信報警推送、短信報警推送等,用戶無需登錄系統就能掌握現場情況。
參考文獻
[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] 查改琴,褚偉.家庭物聯網中多源異構數據存儲方案選擇及建模[J] .現代計算機,2015,5(9): 17-21.
[6] 雷霄驊,姜秀華,王彩虹.基于RTMP協議的流媒體技術的原理與應用[J] .中國傳媒大學學報(自然科學版),2013, 6(9): 11-22.
[7] 毛星云.OpenCV3編程入門[M]. 北京:電子工業出版社,2015.
[8] 陽婷.基于視頻監控的火災探測系統的研究與實現 [D]. 上海:東華大學,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
官洪運,許廣洋,于融正. 基于云端的視頻圖像識別系統的實現[J].微型機與應用,2016,35(22):51-53,64.
0 引言
2016-07-17)
官洪運(1960-),男,本科,副教授,主要研究方向:火災檢測、圖像識別。
許廣洋(1990-),男,在讀研究生,主要研究方向:J2EE程序設計、圖像識別。
于融正(1992-),男,在讀研究生,主要研究方向:網絡通信、火災檢測。
如今,硬件、網絡和計算機視覺技術突飛猛進。互聯網化和智能化已經成為視頻監控系統發展的主要趨勢。本文介紹了基于云端的視頻圖像識別系統的實現。該系統實現了24小時實時視頻監控、運動監測、火災監測及多傳感器的融合,能在有互聯網連接和Web瀏覽器的任何平臺上輕松接入。本系統不需要特殊的硬件,如視頻捕捉和處理芯片。