蘇 獲,劉曉東
(1.武漢郵電科學(xué)研究院 湖北 武漢 430027;2.武漢虹旭信息技術(shù)有限責(zé)任公司 湖北 武漢 430027)
基于OpenCV的智能視頻監(jiān)控告警系統(tǒng)的研究
蘇 獲1,2,劉曉東1,2
(1.武漢郵電科學(xué)研究院 湖北 武漢 430027;2.武漢虹旭信息技術(shù)有限責(zé)任公司 湖北 武漢 430027)
針對智能視頻監(jiān)控告警功能進(jìn)行研究,通過OpenCV、C++及相關(guān)算法來更有效地進(jìn)行圖像識別,達(dá)到智能捕獲可疑異常情況及告警功能。該系統(tǒng)包括圖像采集模塊,圖像預(yù)處理模塊,運(yùn)動檢測模塊,人臉檢測,人臉識別模塊,短信模塊等。通過對以上模塊的研究與實(shí)驗(yàn),達(dá)到了設(shè)計(jì)要求。
智能視頻監(jiān)控;短信告警;OpenCV;人臉識別;C++
隨著社會的高速發(fā)展,物質(zhì)水平的提高及我國大規(guī)模人口流動的現(xiàn)狀,安全防范意識逐漸被提上日程。近年來,有關(guān)安全問題的報(bào)導(dǎo)也層出不窮,人們開始愈發(fā)關(guān)注自身及其財(cái)產(chǎn)安全。并且,計(jì)算機(jī)應(yīng)用的發(fā)展也給安防帶來了新一輪的生機(jī),視頻監(jiān)控作為安防的一種重要手段越來越多的被社會所認(rèn)可。智能監(jiān)控作為新時(shí)代科技的產(chǎn)物,更加具有使用的價(jià)值及研究的意義。
該系統(tǒng)將基于傳統(tǒng)的視頻監(jiān)控系統(tǒng),研究如何讓他更智能。利用C++[1]、OpenCV計(jì)算機(jī)視覺庫[2]及PCA(主成分分析算法)來完成運(yùn)動目標(biāo)的檢測、人臉的識別,可疑人物的判斷;利用GSM短信模塊結(jié)合AT命令來完成在發(fā)現(xiàn)異常情況以后,實(shí)現(xiàn)短信告警功能。
圖1 系統(tǒng)組成框圖Fig.1 Structure diagram of the system
的圖像數(shù)據(jù)后,進(jìn)行數(shù)據(jù)的分析處理。檢測是否有運(yùn)動目標(biāo),識別人臉[3],并與事先錄入的人臉庫進(jìn)行比對,判斷是否為人臉庫中的人臉。若不是,則判斷為陌生人,將啟動GSM模塊發(fā)送告警短信。文章后面會進(jìn)行詳細(xì)討論。
GSM短信模塊:短信貓、破解的上網(wǎng)卡都能完成發(fā)送短信的任務(wù)。利用串口結(jié)合AT指令直接操作短信貓或者上網(wǎng)卡發(fā)送告警短信。
用戶手機(jī):用來接收告警短信。
視頻數(shù)據(jù)采集端:高清攝像頭。根據(jù)需求的不同,采集端與接收端可以采用不同的連接方式。若是遠(yuǎn)距離監(jiān)控,可以通過無線或者有線方式連接互聯(lián)網(wǎng)進(jìn)行采集端與接收端間數(shù)據(jù)的傳輸。若有特殊需求,也可將視頻采集端與接收端集成在一個機(jī)器內(nèi),由于本文研究重點(diǎn)是監(jiān)控智能化,就不詳細(xì)敘述了。
視頻數(shù)據(jù)接收處理端:處理器。當(dāng)接收到由采集端傳來
2.1流程圖
接收端在接收到由采集端發(fā)送過來的圖像數(shù)據(jù)以后,并不是馬上進(jìn)行運(yùn)動物體檢測及人臉校驗(yàn),而是先將圖像進(jìn)行預(yù)處理,消除噪聲干擾,具體包括二值化圖像、中值濾波、向下采樣去噪、直方圖均衡化、邊緣檢測處理等,后面會有效果的展示及對比。
圖2 接收端程序流程圖Fig.2 Flow diagram of the receiver
因?yàn)楫惓5膱D像往往都是突然發(fā)生了變化的圖像,所以我們感興趣的圖像應(yīng)該是有過變化的圖片,這樣可以大大降低系統(tǒng)處理的時(shí)間。并且,現(xiàn)代社會中,異常的圖像絕大部分都是人的行為導(dǎo)致的,故判斷人臉的出現(xiàn)也是可以選擇性加入的。所以,執(zhí)行完圖像預(yù)處理后,就需要判斷兩點(diǎn):1)判斷當(dāng)前圖像是否與前一圖像不同,即發(fā)生了變化。2)判斷圖像中是否有人臉的出現(xiàn)。
為了更加人性化,系統(tǒng)加入白名單功能。判斷完人臉后,需要比對人臉庫,這個人臉庫就類似于白名單。若圖像中出現(xiàn)庫中人臉,應(yīng)該自動排除,不做處理。而出現(xiàn)庫以外的人臉,就應(yīng)當(dāng)進(jìn)行告警操作,通知GSM模塊發(fā)出告警短信。
2.2運(yùn)動物體檢測
運(yùn)動物體檢測究其根本是將后一幀與前一幀的圖像進(jìn)行對比,找出兩幀中明顯不同的地方,如果能找到則表示兩幅圖像變化了,即發(fā)現(xiàn)運(yùn)動。過程如下所述,首先對前后兩幀圖像做幀差處理,此時(shí)圖像中會將兩幀中不同的地方顯示出來,而相同的地方為黑色。
再將得到的結(jié)果進(jìn)行二值化處理,為了能提出一些低于或高于一定值的像素,所以采用二值化的方式。如果src(x,y)>threshold(閾值),dst(x,y)=Max;否則dst(x,y)=0。具體到我們的應(yīng)用中,可以理解為超過閾值的點(diǎn)為黑色,而低于閾值的點(diǎn)為白色。
此時(shí),我們也許會發(fā)現(xiàn),結(jié)果圖像中有許多的噪聲。為了去噪并減少圖像上的噪聲和失真,采用平滑處理,平滑操作種類挺多。這里,我們采取中值模糊,將每個像素以領(lǐng)域(以當(dāng)前像素為中心的正方形區(qū)域)像素的中值代替。
最后,用尋找輪廓的方式找出所有運(yùn)動的地方。如果找到,則認(rèn)為存在運(yùn)動物體。反之,則圖像中沒有運(yùn)動物體。
2.3人臉檢測
2.3.1原理
人臉檢測是利用分類器篩選不同特征完成的。該分類器的訓(xùn)練方法較為復(fù)雜,需要使用大量訓(xùn)練樣本的haar特征來進(jìn)行訓(xùn)練,這些樣本被分為待檢測目標(biāo)樣本(正樣本)和任意干擾圖像(負(fù)樣本),且不管正樣本還是負(fù)樣本都要轉(zhuǎn)換成同一尺寸,然后獲得一個級聯(lián)的boosted分類器,可以叫做強(qiáng)分類器。
得到分類器以后,我們就可以用它來檢測圖象中的人臉了。大致原理如下,當(dāng)發(fā)現(xiàn)人臉時(shí),分類器會給出提示結(jié)果為1,反之,結(jié)果為0。當(dāng)然,為了更加有效的在整幅圖象中尋找目標(biāo),我們可以以挪動搜索窗口的方式來對圖像中每個位置檢測。并且可以通過改變分類器檢測窗口尺寸來更精確地搜索出不同大小的人臉。
另外,為了使檢驗(yàn)結(jié)果更加準(zhǔn)確,可以將用于人臉檢測的強(qiáng)分類器串聯(lián)起來,對等待檢測的窗口進(jìn)行逐步篩選排除。每到達(dá)一個分類器,符合條件的子窗口會進(jìn)入下一個分類器,而不符合條件的子窗口則會被丟棄。分類器的篩選能力也是由弱到強(qiáng),即位于前面的分類器擁有的harr-like矩形特征數(shù)目少,而位于后面的較多,檢測能力則會越來越強(qiáng)。
2.3.2幾種邊緣檢測的比較
為了加快人臉檢測的速率,需要在圖片邊緣檢測的過程中,將一些邊緣較少或較多的圖象區(qū)域消除,因?yàn)檫@些地方一般沒有檢測的目標(biāo)。下面將對目前比較常用的Canny、Laplace、Sobel邊緣檢測[5]進(jìn)行比較。
以下圖像是將同一張圖像由左到右分別進(jìn)行Canny、Laplace、Sobel邊緣檢測后的結(jié)果:
圖3 邊緣檢測比較Fig.3 Diagram of the compare for the edge detection
Canny邊緣檢測的原理是檢測出圖像中所有灰度值變化最大的點(diǎn)(具體就是在X和Y方向求一階導(dǎo)數(shù)),而且這些點(diǎn)連接起來就構(gòu)成了若干條線,這些線條就可以稱為圖像的邊緣。因?yàn)镃anny算法是以獨(dú)立邊的候選像素拼接成輪廓為原理的,所以需要有閾值機(jī)制去進(jìn)行篩選,分別是上限閾值和下限閾值。假如一個像素的梯度大于上限閾值,會被以為是邊緣像素,假如低于下限閾值,會被丟棄。如果介于兩個值中間,惟有當(dāng)這個像素連接高于上限閾值的像素時(shí),才被認(rèn)可。
Laplace算子是沿著二維坐標(biāo)軸的橫軸和縱軸的二次導(dǎo)數(shù)之和,那么說明如果周圍是更高值的點(diǎn)會使其和最大,相反,附近若是更低值的點(diǎn)將會使其和負(fù)值最大。基于這個想法,拉普拉斯算子可作為邊緣檢測的工具。當(dāng)我們逼近類似邊緣的不連續(xù)地方時(shí),一階導(dǎo)數(shù)會快速增長,而穿過這些不連續(xù)地方時(shí)導(dǎo)數(shù)又會快速減小。所以一階導(dǎo)數(shù)會在此范圍內(nèi)有局部極值。這樣,局部最大值就位于二階導(dǎo)數(shù)為0的地方。
Sobel算子結(jié)合了高斯平滑與微分求導(dǎo),用來對圖像灰度函數(shù)的近似梯度進(jìn)行計(jì)算,因而求出變化最大的點(diǎn),依此檢測圖像中的邊緣。
由對比結(jié)果圖可以看出Canny邊緣檢測出來的結(jié)果較為清晰,棱角分明,擁有低錯誤率、高定位性等優(yōu)點(diǎn),故能很好的應(yīng)用于人臉檢測之中。
2.4主成分分析算法
利用主成分分析算法(PCA)來實(shí)現(xiàn)比對人臉的工作,判別出近似臉的功能。
采用這種算法的原因如下,通常圖象都有著龐大的數(shù)據(jù)量,這其中很多數(shù)據(jù)其實(shí)對我們的研究是沒有實(shí)際意義的。所以,我們?yōu)橄麥p其數(shù)據(jù)量而采用了主成分分析算法來壓縮數(shù)據(jù),然后用壓縮后的圖像進(jìn)行圖像識別的進(jìn)一步應(yīng)用。
具體說來,對于一個訓(xùn)練集,s個樣例,特征是n維,那么它可以建立一個s*n的矩陣,作為樣本。求這個樣本的協(xié)方差矩陣,獲得一個n*n的協(xié)方差矩陣,然后求得這個協(xié)方差矩陣的特征值和特征向量,有n個特征值和特征向量,我們根據(jù)特征值的大小,取前m(m 遵從上述思想,程序中我們可以分為訓(xùn)練階段、識別階段來進(jìn)行PCA人臉識別。訓(xùn)練階段中,我們需要對采集到的樣例進(jìn)行處理,構(gòu)成對應(yīng)的子空間,并依次將樣例投影于子空間中,變換為降維后的投影矩陣。識別過程中,需要判別的樣本會被投影到這個子空間中,獲得降維后的人臉樣本。這樣,我們就能很方便的通過雙方的投影矩陣,計(jì)算出待識別的人臉樣本與每個參與訓(xùn)練的人臉樣本之間的距離 ηi(i= 1,2...n),其中n為訓(xùn)練樣本的總數(shù)。 如果?i,ηi≥θ(θ為我們預(yù)先給定的閾值),則被以為輸入圖象中含有未知人臉。 如果ωk=min{ηi},ωk<θ,則認(rèn)為第 k個訓(xùn)練樣本為輸入人臉。 2.5識別結(jié)果與分析 當(dāng)攝像頭捕捉到圖片后,系統(tǒng)會分別進(jìn)行運(yùn)動檢測和人臉檢測。為方便對比,圖4左邊為攝像頭捕捉到的原始圖像,右邊為進(jìn)行人臉檢測后標(biāo)注出來的圖像。左下角顯示運(yùn)動檢測的結(jié)果。由圖可以看出,程序能完全識別出運(yùn)動目標(biāo)和人臉目標(biāo)。 圖4 運(yùn)動檢測和人臉檢測效果圖Fig.4 The diagram of the motion detection and the face detection 發(fā)現(xiàn)運(yùn)動目標(biāo)與人臉后,進(jìn)入人臉匹配的環(huán)節(jié)。PCA識別的效果如下。圖5(a)為訓(xùn)練樣本圖像,圖5(b)為用于測試的人臉圖像。將(b)中人臉與(a)中測試樣本分別投影到子空間后,計(jì)算距離如下圖,根據(jù)最小距離,得出了匹配圖像,結(jié)果如圖5(c)。 圖5 人臉匹配效果圖Fig.5 The diagram of faces matching 本系統(tǒng)采用發(fā)送短信的方式實(shí)現(xiàn)告警功能。使用短消息告警主要是看中它有可靠性高、迅速、價(jià)格低廉等特點(diǎn)。 短信編碼的格式相對較多,目前主流的模式為PDU模式,因?yàn)樗惺謾C(jī)都支持PDU模式,不像Block模式和Text模式市場占有率小。PDU模式能夠支持全部字符集[6],故選用PDU模式結(jié)合AT指令來發(fā)送短信。 例如:編輯告警短信—“發(fā)現(xiàn)異常情況,請注意”。只需輸入相應(yīng)的AT命令(AT+CMGS=37)后,輸入如下PDU即可:“0031000D91685128178680F10008001653D173B05F025E386 0C551B5FF0C8BF76CE8610F3002”。 鑒于視頻監(jiān)控的廣泛應(yīng)用,更加智能化的視頻監(jiān)控是需要提升的一個重要方面。為了達(dá)到此目的,文中分析研究了使其智能化的方法,闡述了采用C++[7]和OpenCV實(shí)現(xiàn)運(yùn)動檢測、人臉檢測識別的方法,結(jié)合短信告警功能,讓監(jiān)控更加具有實(shí)時(shí)性。系統(tǒng)實(shí)現(xiàn)了圖像采集模塊、圖像預(yù)處理模塊、運(yùn)動檢測模塊、人臉檢測定位模塊、人臉識別模塊、短信模塊等,具有一定的應(yīng)用前景。但人臉識別算法仍有不足之處,如在較復(fù)雜的環(huán)境,人臉表情,角度,姿態(tài),遮擋等復(fù)雜因素對識別結(jié)果都會產(chǎn)生影響。因此,提高效率及準(zhǔn)確率仍然是一個需要突破的難點(diǎn),是需要進(jìn)一步研究的方向。 [1]候俊杰.深入淺出MFC[M].武漢:華中科技大學(xué)出版社,2001. [2]于仕琪,劉瑞禎.OpenCV教程:基礎(chǔ)篇[M].北京:北京航空航天大學(xué)出版社,2008. [3]王洋.基于OpenCV的人臉檢測方法研究[D].鞍山:遼寧科技大學(xué),2011. [4]劉子源,蔣承志.基于OpenCV和Harr特征分類器的圖像人臉檢測[J].遼寧科技大學(xué)學(xué)報(bào),2011,8,34(4):126-128. [5]于仕琪,劉瑞禎.學(xué)習(xí)OpenCV[M].北京:清華大學(xué)出版社,2009. [6]蔣麗娟.基于GSM的LED顯示屏遠(yuǎn)程控制設(shè)計(jì)[D].蘇州:蘇州大學(xué),2013. [7]任安虎,房彬,魏新建.人臉識別的智能門禁控制系統(tǒng)[J].電子設(shè)計(jì)工程,2013(12):1013-1018. The study of intelligent-monitoring and alarm system based on OpenCV SU Huo1,2,LIU Xiao-dong1,2 The paper studied the function of intelligent-monitoring and alarm system.Using OpenCV,C++and correlated algorithm to recognize images efficiently,the function of finding suspicious situation and alarm has been achieved.The system have function modules as follows.Images acquisition module,images preprocessing module,motion detection module,faces detection module,faces recognition module,SMS module,etc.Through studies and experiments to these modules,design requirements have been reached. intelligent monitoring;SMS alarm;OpenCV;face recognition;C++ TN919.8 A 1674-6236(2016)03-0026-03 2015-03-19稿件編號:201503266 蘇 獲(1990—),男,湖北武漢人,碩士。研究方向:計(jì)算機(jī)通信技術(shù)。3 短消息模塊
4 結(jié)束語
(1.Wuhan Research Institute of Posts and Telecommunications,Wuhan 430027,China;2.Wuhan Hongxu Information Technology Co.,Ltd,Wuhan 430027,China)