伍 靜,劉德豐,張 松,余旭偉,鐘天揚,陳 飛
(江南大學 數(shù)字媒體學院,江蘇 無錫 214122)
傳統(tǒng)的視頻監(jiān)控僅限于視頻的存儲和回放,沒有給用戶實時反饋信息的功能,隨著需求的增長,已經不能滿足人們對安全性的要求。20世紀末以來,視頻監(jiān)控系統(tǒng)經歷了從模擬系統(tǒng)、數(shù)字系統(tǒng)到網絡化系統(tǒng)演進的過程,智能視頻監(jiān)控系統(tǒng)已然發(fā)展成一個較成熟的體系[1-2]。
傳統(tǒng)視頻監(jiān)控技術只是“笨拙”地記錄信息,需要人工對錄制的視頻進行分析,效率極其低下。而文中設計的智能視頻監(jiān)控系統(tǒng),使用圖像處理技術對被監(jiān)控場景進行理解,結合適當算法對獲取的每一幀圖像進行分析,判斷運動目標的行為,自動得出結論并給用戶提供反饋,提高了監(jiān)控效率。預警的原理基本都是在服務器和用戶手機之間建立一個TCP長連接[3],需要考慮的一個重要問題就是連接的穩(wěn)定性,而系統(tǒng)采用的Zabbix支持分布式監(jiān)控,報警及時,幾乎無報警延遲現(xiàn)象。
目前國內已經開發(fā)了一些智能視頻監(jiān)控系統(tǒng),如中國科學院研發(fā)的Vstar系統(tǒng)[4]、華為智能視頻監(jiān)控平臺。也有很多關于安防監(jiān)控的優(yōu)秀論文,例如,張璐璐[5]基于TMS320DM368處理器平臺的視頻監(jiān)控終端系統(tǒng)研發(fā)了聲音檢測及告警功能軟件,改進了DTW算法,提高了聲音識別的速度;董坤[6]提出的在較復雜場景中應用的異常行為識別判定算法可以高效準確地檢測出人體跌倒行為。高泓昱[7]通過網絡建立標準行為路徑,可以對多種異常行為進行識別和檢測,使系統(tǒng)具有多樣性。而文中設計的優(yōu)勢在于,分析視頻片段時將視頻檢測和語音識別進行加權結合,提高對目標行為判斷的準確率,同時在判斷出運動目標有摔倒行為后有向用戶發(fā)送郵件進行報警的功能。
基于視頻的摔倒檢測智能監(jiān)控系統(tǒng)的實現(xiàn)主要分為四個模塊:服務器搭建、視頻檢測、語音識別和郵箱告警。系統(tǒng)設計總體結構如圖1所示,具體包含:
(1)服務器端:系統(tǒng)運行的最基礎部分,完成視頻數(shù)據獲取和存儲工作;
(2)視頻檢測:整個系統(tǒng)的核心組成,是郵箱告警的重要依據;
(3)語音識別:作為視頻檢測的輔助,對最終結果的分析同樣具有重要作用;
(4)郵箱告警:屬于人機交互范疇,將系統(tǒng)分析出的結果反饋給用戶。
圖1 系統(tǒng)總體架構
(1)EasyDarwin服務器。EasyDarwin流媒體平臺解決方案的核心流媒體服務,開源、高效、穩(wěn)定、可靠、功能齊全,支持RTSP/HLS/HTTP協(xié)議,支持安防行業(yè)需要的攝像機流媒體轉發(fā)功能,支持互聯(lián)網行業(yè)需要的多平臺點播、直播功能。
(2)EasyPusher。在服務器搭建工作中使用EasyPusher_Android客戶端,借用手機攝像頭攝像,完成推流工作。
(3)EasyPlayer與VLC客戶端。兩者可互相替換且均支持多平臺(Windows、Android、IOS),拉取服務器端視頻流實現(xiàn)直播功能,低延時、畫面流暢。
(4)MongoDB數(shù)據庫。MongoDB[8]介于關系數(shù)據庫和非關系數(shù)據庫之間,可以存儲比較復雜的數(shù)據類型,且支持的查詢語言非常強大。MongoDB作為數(shù)據庫存儲推送后存放在EasyDarwin服務器的視頻流切片,供后續(xù)視音頻檢測的視頻數(shù)據庫存儲工作。
服務器工作流程:客戶端EasyPusher在指定EasyDarwin服務器所在IP地址將捕獲的視頻流推送至EasyDarwin服務器;EasyPlayer/客戶端VLC在確定EasyDarwin服務器所在IP地址后,可拉取EasyDarwin服務器的視頻流實現(xiàn)直播功能;EasyDarwin服務器所在IP地址的本機本地存儲視頻流的視頻片段,使用mongo-cxx-driver存儲至MongoDB數(shù)據庫,以便后續(xù)視頻檢測和語音識別。
首先用Visual Studio編譯出exe可執(zhí)行文件EasyDarwin.exe后啟動EasyDarwin服務,移動端應用EasyPusher_Android設置相關參數(shù),開始視頻流傳輸,實現(xiàn)視頻流從移動端推流至EasyDarwin服務器,在Easyplayer或者vlc客戶端設置相關參數(shù)實現(xiàn)直播。隨后將MongoDB-cxx-driver安裝為Windows服務,使用GridFS將EasyDarwin服務器中推流的視頻片段存儲到MongoDB。至此服務器和數(shù)據庫工作完成。
系統(tǒng)中的視頻檢測是由運動目標檢測跟蹤到運動目標的處理再到對圖像進行去噪進而得到預處理結果。視頻檢測的流程為:讀取視頻,申請內存,轉換為單通道(設定第一幀為背景幀),高斯濾波平滑圖像,依次讀取對應幀與背景相差(獲取運動對象),檢測對象的高寬比,檢測對象的中心變換斜率。
(1)幀間差分法。
對于從數(shù)據庫中獲取的視頻內容,當監(jiān)控場景中出現(xiàn)目標物體運動時,幀與幀之間會出現(xiàn)較為明顯的差別,兩幀相減,得到兩幀圖像亮度差的絕對值,再通過閾值等判別形式,進而確定圖像序列中有無物體運動[9]。
幀間差分法的定義如下:
(1)
其中,d表示兩幀間像素灰度差;Th表示閾值。
然而,該方法的效果取決于選擇的幀間時間間隔,一旦物體運動速度過快,而且沒有選取合適的時間間隔,則會導致檢測的物體發(fā)生分離,難以確定運動的形式與先后。如果物體運動的速度過慢,則會使兩幀重疊部分較多,最后識別結果并不明顯,難以正確區(qū)分全部的運動內容。由于運動的老人在行為與速度上的可行性問題,最終決定使用背景減除法來確定運動目標的動作行為。
(2)背景減除法。
由于是針對室內場景,基于靜止場景運動目標檢測的特點,現(xiàn)擬采用基于背景減除法[10-11]的高斯混合模型進行運動目標檢測,最終得到目標前景圖像。針對室內場景靜止的特點,獲取到視頻的第一幀為背景幀,建立對應的高斯混合模型,經過一系列圖像平滑、二值化以及去噪處理過程之后,通過OpenCV當中的庫函數(shù)對獲取的視頻幀依次與背景模型相減,得到運動的目標,同時再載入下一張視頻幀,更新數(shù)據,并進行下一步的判斷與比較。
(2)
式(2)表示將當前的每一幀圖像都與背景模型圖像做差,根據差值的大小對差值結果圖像進行處理,對偏離背景圖像大的像素點賦值255,并把這些像素點歸屬為前景像素點,對偏離背景圖像較小的像素點賦值0,并把這些像素點歸屬為背景像素點,這樣就得到了幀差圖像。
3.2.1 對運動目標的分割
(1)基于邊緣檢測的運動目標分割:由于圖像在變化區(qū)域的邊緣的像素灰度值會發(fā)生突變,可以通過程序捕捉到這個突變發(fā)生的區(qū)域或者范圍,進而從大體上得到物體的整體輪廓,確定物體的運動范圍與活動形式。
(2)基于閾值的運動目標分割:通過對該區(qū)域的直方圖信息進行運算估計,確定相關的閾值之后,對準備進行處理的圖像的像素信息與閾值進行一定的運算,取不同的保留量,進而分割出圖像中的運動目標。
對于運動目標分割的部分,由于基于邊緣檢測的運動目標分割對于室內場景中那些易受光照陰影影響的部分分割效果并不理想,所以在獲取初始幀后對擬定運動區(qū)域的直方圖進行分析運算,設定了幾組閾值范圍并且最終選擇了一組較合適的閾值用以分割圖像。
3.2.2 對圖像進行去噪處理
由于處理過后的圖像在光影等外部因素的影響下會在非運動變化區(qū)域內產生一定的誤差,現(xiàn)需要對分割后的圖像進行去噪處理。同時,經過腐蝕與膨脹的操作,對于那些已經獲取的運動目標進行更加精確的定位,以及更加細致的量化處理,進而減小在后期識別檢測算法當中產生的相對應的外部干擾因素,使檢測結果更加準確。
3.3.1 基于運動對象高寬比的摔倒分析檢測算法
由于人體構造的既定性,對于人體在攝像頭當中的運動模型,其高與寬的比例,不會受到對應深度距離的影響?,F(xiàn)擬運動目標的高度與寬度之比為一種判斷標準,如果檢測的物體的高寬比在短時間內發(fā)生大幅度變化,則視為其運動形式發(fā)生了一定的變化。對于之前獲取到的圖像,根據二值化后的結果,對圖像進行分割,進而獲取對應運動物體的高度值與寬度值,再將這兩者按照一定的縮放比例進行求比值的操作,其結果作為判斷標準之一。
不過,該方法對于無遮擋物的場景,效果較為明顯,當運動目標從一個空曠的地區(qū)行進到一個上方或者下方有遮擋的空間時,其對應的運動區(qū)域的高寬比也會發(fā)生驟然變化,進而影響判斷的準確性,因此需要在此基礎上,添加另一種檢測算法,以確保整體檢測分析的準確性與可行性。
3.3.2 基于有效面積的運動目標摔倒檢測分析算法
規(guī)定有效面積為圖像中檢測得到的運動目標的面積與剛好將運動目標包含在內的最小矩形的面積之比[12],通過這個比例的值可以大致估計出運動物體在監(jiān)控內的肢體運動的幅度與倒地時四肢的放置方式,有助于對相關運動目標運動形式的判斷。其可以定義為:
(3)
其中,EA-Ratio為有效面積比,是二值化處理的圖像矩形框中像素值為1(差分后移動人體部分)的像素個數(shù),也是整個矩形框所有像素個數(shù)。當人體占據矩形框的大部分面積時,有效面積比大,反之則很小。當人做某些健身活動時,寬高比遠大于1,僅靠寬高比判斷是否跌倒就會出現(xiàn)誤判的情形。這時,把有效面積比納入到參考范圍,有效面積比會變小,不符合跌倒后有效面積比和正常情況差不多的事實基礎。
在做基于有效面積的運動目標摔倒檢測的過程當中,設定了通過對預處理后的圖像進行邊緣提取,同時用擬定的曲線方程對運動對象的外部輪廓加一個外接圓,并用其來表示有效面積,經過閾值的比較來判斷摔倒事件的觸發(fā)可能性。
3.3.3 基于中心變換率的運動目標摔倒檢測分析算法
由于在摔倒的過程中,運動目標的整體位置不會發(fā)生太大變化,然而對于整個運動的物體來說,其重心變化過程是在驟然間發(fā)生的[13]?,F(xiàn)在可以模擬整個運動目標的中心,在突然摔倒的過程中,是從一個較小的值驟然變?yōu)橐粋€趨近于無窮大的量,進而通過這一變量的變化速率來確定物體的運動形式。
設A、B分別是相鄰兩幀中人體的中心點,定義A和B兩點之間連線的斜率為中心變化率:
(4)
兩中心點間的歐氏距離為:
(5)
當人突然下蹲時,理論上斜率是趨于正無窮大的。相反,當人摔倒后起身時,人體中心點的距離也會很大,斜率趨于正無窮大。結合寬高比、有效面積比、中心變化率一起判斷,可以防止對類似動作的誤判。
基于上文提到的高寬比、中心變化率、有效面積等參量,通過有限次數(shù)的試驗,采用五種被賦予不同權值的參考系數(shù),高度變化率(單位時間人體框圖高度變化量與其最大值比值的變化)、有效面積比(當前人體框圖面積與其最大值的比值)、摔倒序列幀數(shù)(滿足摔倒檢測條件的持續(xù)時間,以其持續(xù)視頻序列的幀數(shù)來表示)、中心變化率(框圖中心變化率)、移動速度(單位時間內位置的變化量,以其和框圖寬度的比值量化表示),通過將它們和相應的閾值比較來檢測摔倒,得到表1(參量后面百分比表示權值百分比,0表示和相應閾值比較未滿足摔倒條件,1則表示滿足條件,-表示有的情況滿足有的不滿足)。
表1 人體檢測表
中心變換率可以用來表示運動的突變性,通過對運動軌跡的獲取以及相關幀率的關系,以獲取到的中心變換率集中地展示了檢測目標的運動趨勢以及在短時間內的運動瞬時突變概率。用這一參數(shù)綜合判斷檢測目標的運動趨勢。
為了區(qū)別于現(xiàn)有的視頻監(jiān)控預警系統(tǒng),文中的設計加入了語音識別的功能,旨在輔助判斷目標的摔倒行為,使結果更加精確。
聲音識別技術主要是通過對采集到的聲音進行特征參數(shù)提取,與詞匯庫作對比,通過模板匹配法得到目標聲音和樣本的一致性判斷。聲音的特征提取就是從某段音頻中提取出該類聲音特點的基本特征,并且選取的特征參數(shù)應能較準確地反映聲音的本質特征[14]。
系統(tǒng)調用了科大訊飛的語音聽寫接口來實現(xiàn)系統(tǒng)的音頻翻譯為文字的功能。語音聽寫是將一段連續(xù)語音快速轉換成文字的過程,科大訊飛語音聽寫SDK能識別常見的詞匯、語句,而且不限制說法。程序調用QISRGetResult()函數(shù)獲取音頻翻譯之后的結果并賦值給rec_result數(shù)組,并且程序可以自動模擬人說話的時間間隙,使得翻譯出的結果更精確。但是其目前識別僅支持采樣率為8 K/16 K,采樣精度16位,存儲字序為Little-Endian的單聲道Windows Pcm格式音頻。
為了符合以上要求,系統(tǒng)利用FFmpeg(一種可以轉換音頻格式的開源工具)對攝像頭采集到的視頻進行視音頻的分離,并且將音頻轉換為16 K采樣位單聲道的wav格式音頻,最后的翻譯效果與音頻內容是否清晰也有很大的關系。
經測試,系統(tǒng)對包含“救命”的語句可以做出較準確的判斷。在語音聽寫代碼的基礎上做出改進:一個漢字占兩個字節(jié),用rec_result為char數(shù)組名稱,當系統(tǒng)檢測到rec_result[0]==-66 && rec_result[1]==-56 && rec_result[2]==-61 && rec_result[3]==-4時,說明被監(jiān)測人發(fā)出了疑似救命的聲音,程序立即反饋給數(shù)據庫作為后續(xù)郵箱告警的重要依據。如果檢測到音頻異常,將反饋到MongoDB數(shù)據庫中更新其音頻一欄的鍵值,再綜合視頻檢測所得結果分析是否向用戶郵箱發(fā)送告警信息。
Zabbix是基于Server-Client架構的一種網絡監(jiān)視、管理系統(tǒng),可用于監(jiān)視各種網絡服務、服務器和網絡機器等狀態(tài)。系統(tǒng)中的Zabbix在Ubuntu16.04環(huán)境下配置,主要安裝過程為安裝Apache、MySQL和PHP7.0,編輯php.ini文件,安裝好Zabbix服務端后進行客戶端的配置。對數(shù)據庫進行root授權,修改Zabbix_server.conf配置文件,并重啟Zabbix-server服務,最后用Linux命令行給用戶發(fā)送郵件。
圖2是郵箱報警的過程圖,需結合視頻檢測和語音識別兩個結果判斷是否報警。由于視頻檢測占分析的主要部分,故設視頻檢測結果權重占80%,語音識別結果權重占20%。通過表1可以算出最接近摔倒姿勢的下蹲姿勢的值范圍為0.55~0.8,摔倒姿勢的值范圍為0.8~1.0。視頻檢測結果經表1轉換后即變?yōu)橛脭?shù)字表示老人摔倒的可能性大小,而語音識別的結果只有兩種可能性,即聲音異常(識別結果為1)與聲音不異常(識別結果為0)。將視頻和音頻所得結果相加(乘以各自所占權重),若值大于0.6,則立即向用戶郵箱發(fā)送告警消息。
圖2 郵箱告警流程
例如:當視頻檢測到被監(jiān)視目標摔倒的可能性為0.55,聲音檢測為異常,此時系統(tǒng)所得結果為0.55×0.8+1×0.2=0.64,系統(tǒng)應向用戶報警。
語音識別測試用時長7 s,采樣率16 K,比特率256 kbps的wav格式音頻,當檢測到漢字“救命”時輸出“bingo!”。
圖3為Zabbix向用戶發(fā)送告警郵件的示意圖,其發(fā)送郵件的命令為:echo "zabbix test mail" |mail -s "zabbix" user@qq.com。
圖3 Zabbix向用戶發(fā)送郵件測試圖
為驗證系統(tǒng)性能,選用半球攝像機在光線充足、噪聲較小的室內環(huán)境進行設備的在線測試,攝像機分辨率是800*480,并在Matlab軟件下運行人體運動目標檢測程序。鑒于上文所描述的三種摔倒檢測算法,現(xiàn)對實驗案例中的四組視頻進行相應的定量分析,每段檢測的視頻大約40 s。首先設定高度變化的閾值、檢測摔倒的速度閾值、檢測摔倒中心變化率、檢測摔倒有效面積比四個變量,用以記錄比較從視頻中獲取的有效面積、重心、中心變化率、高寬比檢測信息。
在視頻中對整個視頻進行抽幀、二值化處理,獲取到對應幀當中的二值圖像,在二值圖像中,設定一組內接于差分圖像的橢圓,根據橢圓面積公式不斷刷新不同幀時對應的橢圓面積來表示檢測對象的實時有效面積,并對兩組有效面積的比設定了一組閾值,用以確定有效面積的突變情況。
在圖像中,取有效面積的中心點來設定該檢測對象的中心位置。根據不同幀的檢測對象的中心位置變化的速率對其中心變化率進行計算[15],同時與經過實驗設定的閾值進行比較,從而判斷檢測對象的運動趨勢是否為突變行為。
實驗結果表明,系統(tǒng)可以有效測出人體的靜坐、直立行走、下蹲、摔倒等動作。圖4即為輸出的人體下蹲和摔倒行為檢測圖。但是也發(fā)現(xiàn),由于逐幀相減法對一些非關注檢測目標的抗干擾性有一定的局限性,所以若視頻的拍攝環(huán)境存在倒影、光照或者移動物體,將會影響測試結果。
圖4 人體下蹲和摔倒行為檢測圖
文中改進了智能攝像頭監(jiān)控系統(tǒng)并且基本實現(xiàn)了通過智能算法判斷出視頻中的檢測目標有摔倒行為,能夠較準確地翻譯出測試環(huán)境中的聲音。系統(tǒng)各個模塊都可以獨立進行工作。但是系統(tǒng)也存在一定局限并且尚有一些細節(jié)未完成,如在視頻檢測中,人體走動或者自然光照射角度引起的光影變化會使最終判斷結果出現(xiàn)誤差,并且被監(jiān)測目標不能被物體遮擋;在語音檢測中,識別語言只能為普通話。
目前,基于視頻的摔倒檢測監(jiān)控預警系統(tǒng)的研究仍處于實驗階段,在未來的研究中,為了使該視頻監(jiān)控
預警系統(tǒng)盡快走向實用,需要做進一步的探索:改進視頻檢測算法,使系統(tǒng)能在目標人物被其他物體遮擋時也能準確判斷目標行為;單個攝像機的視野有局限性,可以嘗試用多個攝像頭監(jiān)視同一個場景提高目標行為識別的準確率;豐富語音識別的功能,使系統(tǒng)不僅能將聲音翻譯為文字,也能較準確地判斷聲音來源。
參考文獻:
[1] 黃凱奇,陳曉棠,康運鋒,等.智能視頻監(jiān)控技術綜述[J].計算機學報,2015,38(6):1093-1118.
[2] 黃鐵軍,鄭 錦,李 波,等.多媒體技術研究:2013—面向智能視頻監(jiān)控的視覺感知與處理[J].中國圖象圖形學報,2014,19(11):1539-1562.
[3] 肖春光.使用消息推送技術發(fā)布預警信息[J].信息技術與信息化,2015(8):103-104.
[4] HUANG Kaiqi,TAN Tieniu.Vs-star:a visual Interpretation system for visual surveillance[J].Pattern Recognition Letters,2010,31(14):2265-2285.
[5] 張璐璐.視頻監(jiān)控終端系統(tǒng)聲音檢測及告警功能軟件設計[D].杭州:浙江大學,2013.
[6] 董 坤.視頻監(jiān)控中運動人體檢測與異常行為分析研究[D].南京:南京郵電大學,2013.
[7] 高泓昱.基于網絡傳輸算法的多攝像頭行為識別和事件檢測[D].上海:上海交通大學,2013.
[8] DIROLF K C M.Mongo-DB:the definitive guide[M].北京:人民郵電出版社,2011.
[9] DAVID C,GUI V.Automatic background subtraction in a sparse representation framework[C]//Proceedings of the systems,signals and image processing.[s.l.]:[s.n.],2013:63-66.
[10] BENEZETH Y,JODOIN P M,EMILE B,et al.Review and evaluation of commonly-implemented background subtraction algorithms[C]//19th international conference on pattern recognition.[s.l.]:[s.n.],2008:1-4.
[11] 黃源源.視頻監(jiān)控系統(tǒng)中一些關鍵技術的研究[D].成都:電子科技大學,2013.
[12] WREN C R,AZARBAYEJANI A,DARRELL T,et al.Real-time tracking of the human body[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1997,19(7):780-785.
[13] 左常玲.基于視頻的自動摔倒檢測研究與實現(xiàn)[D].合肥:安徽大學,2012.
[14] 馮 哲.基于內容的視頻檢索中的音頻處理[D].上海:復旦大學,2004.
[15] 胡 瓊,秦 磊,黃慶明.基于視覺的人體動作識別綜述[J].計算機學報,2013,36(12):2512-2524.