智能視頻監(jiān)控技術(shù)是利用計(jì)算機(jī)視覺(jué)技術(shù)對(duì)監(jiān)控場(chǎng)景的視頻圖像內(nèi)容進(jìn)行分析,自動(dòng)檢測(cè)監(jiān)控畫面中的異常情況,,并警報(bào)和提供有用信息,,從而能夠更加有效地提醒安防人員及時(shí)處理非法入侵。
目前,,智能視頻監(jiān)控技術(shù)中入侵檢測(cè)算法常見(jiàn)的有幀間差分法、背景減法和光流法,。它們從視頻序列中檢測(cè)運(yùn)動(dòng)目標(biāo)來(lái)實(shí)現(xiàn)入侵報(bào)警功能,。但是,這些算法集中于對(duì)一個(gè)視頻場(chǎng)景中移動(dòng)物體偵測(cè)的研究,,而監(jiān)控系統(tǒng)往往是多個(gè)區(qū)域同時(shí)監(jiān)控,。為此,給出了一種適用于多區(qū)域視頻監(jiān)控系統(tǒng)中智能入侵報(bào)警的實(shí)現(xiàn)方法,。該方法采用混合高斯背景建模移動(dòng)偵測(cè)算法,、OpenCV、多線程等技術(shù)實(shí)現(xiàn)了對(duì)入侵目標(biāo)的有效檢測(cè)報(bào)警功能,。
1 混合高斯背景建模移動(dòng)偵測(cè)算法
混合高斯背景建模移動(dòng)偵測(cè)算法屬于減背景移動(dòng)偵測(cè)算法的一種,。減背景移動(dòng)偵測(cè)算法是通過(guò)當(dāng)前幀與背景圖像差分來(lái)得到移動(dòng)目標(biāo)區(qū)域。這種算法對(duì)背景圖像的要求是:1)不含運(yùn)動(dòng)目標(biāo),;2)不斷地更新以適應(yīng)背景不斷變化,。構(gòu)建背景圖像的方法很多,混合高斯背景建模算法是其中典型的一種,,該算法對(duì)外界環(huán)境不斷變化的適應(yīng)性較好,。
1.1 混合高斯背景建模
對(duì)視頻幀中的每一個(gè)像素定義K個(gè)狀態(tài),每個(gè)狀態(tài)用一個(gè)高斯分布函數(shù)表示,。這些狀態(tài)中有一部分表示背景的像素值,,而另一部分則表示前景的像素值。若每個(gè)像素點(diǎn)像素值用變量Xt表示,,則其概率密度函數(shù)可用K個(gè)高斯分布函數(shù)描述,,如式(1)所示:
1.2 混合高斯背景建模參數(shù)更新
當(dāng)獲得某一點(diǎn)t時(shí)刻像素值It時(shí),首先利用序貫相似性檢測(cè)算法檢測(cè)所有高斯分布函數(shù)中那個(gè)與當(dāng)前像素值It匹配,,其步驟如下:
1)設(shè)定偏差門限T,;
2)選取均值μi,t與像素值It最接近的高斯分布函數(shù),并檢測(cè)兩者之差的絕對(duì)值是否小于Tσi,t-1,,如果|It-μi,t-1|≤Tσi,t-1成立,,則判定該高斯分布函數(shù)與當(dāng)前像素值匹配,并按式(2)~式(4)更新相關(guān)參數(shù);如果|It-μi,t-1|≤Tσi,t-1不成立,,則判定無(wú)高斯分布函數(shù)與當(dāng)前像素值匹配,,并將權(quán)重最小的高斯分布函數(shù)以一個(gè)新的高斯分布函數(shù)替代。新的高斯分布函數(shù)均值μi,t為It,,標(biāo)準(zhǔn)差σi,t為最大初始標(biāo)準(zhǔn)差,,權(quán)重ωi,t為最小初始權(quán)重。
式中,,α為模型學(xué)習(xí)率,,用于控制權(quán)重ωi,t的修正速度;ρ為參數(shù)學(xué)習(xí)率,,近似為ρ≈(α/ωi,t),。
3)其他高斯分布函數(shù)參數(shù)不變,只歸一化它們的權(quán)重,。
1.3 背景像素判斷
混合高斯背景建模算法通過(guò)計(jì)算模型中每個(gè)高斯分布函數(shù)的ωi,t/σi的值來(lái)判斷該高斯分布函數(shù)所表示的狀態(tài)是否表示背景像素值,。值越高,則越可能是背景像素,。
2 混合高斯背景建模入侵檢測(cè)
OpenCV是Intel公司支持的基于C/C++語(yǔ)言開(kāi)發(fā)的圖像處理和計(jì)算機(jī)視覺(jué)開(kāi)源函數(shù)庫(kù),。其中大部分函數(shù)是基于Intel處理器指令集的優(yōu)化代碼,能最大程度的發(fā)揮處理器的性能,。
OpenCV具有強(qiáng)大的圖像和矩陣運(yùn)算能力,,是計(jì)算機(jī)視覺(jué)、圖像處理二次開(kāi)發(fā)的理想工具,。
OpenCV提供了混合高斯背景建模函數(shù),,其主要函數(shù)如下:
功能:利用一幀圖像數(shù)據(jù)初始化混合高斯背景模型。
參數(shù):first_frame為混合高斯背景建模第一幀圖像數(shù)據(jù),;parameters為混合高斯背景建模初始化參數(shù),。
本文使用函數(shù)默認(rèn)設(shè)置:狀態(tài)數(shù)K=5,即混合高斯背景模型內(nèi)含5個(gè)高斯分布,,偏差門限T=2.5,,模型學(xué)習(xí)率α,最大初始方差,,背景點(diǎn)判定閾值ωi,t/σi>0.7,。
功能:更新混合高斯背景模型。
參數(shù):pFrame為更新高斯背景模型的視頻流幀圖像數(shù)據(jù),;bg_model為混合高斯背景模型指針,,通過(guò)bg_model->background和bg_model->foreground即可獲得背景和前景圖像。
功能:釋放高斯背景模型參數(shù)占用的內(nèi)存,。
前景圖像再經(jīng)形態(tài)學(xué)處理后,,可檢測(cè)出一定大小的移動(dòng)區(qū)域,,即判定有人入侵。結(jié)果如圖1所示,。
3 視頻監(jiān)控圖像數(shù)據(jù)獲取及轉(zhuǎn)換
3.1 視頻監(jiān)控圖像數(shù)據(jù)捕獲
使用天敏公司的SDK-2500型視頻監(jiān)控卡自帶函數(shù)庫(kù)編程與使用VFW函數(shù)庫(kù)編程獲得的監(jiān)控畫質(zhì)差別很大,。使用自帶函數(shù)庫(kù)可充分發(fā)揮視頻監(jiān)控卡處理器的性能,監(jiān)控畫質(zhì)高,,顯示分辨率可達(dá)720x576(PAL),,而使用VFW函數(shù)庫(kù)時(shí),顯示分辨率僅為320x240,。兩種方法所獲監(jiān)控畫質(zhì)比較如圖1所示,。為獲得高分辨率監(jiān)控畫質(zhì),本文使用視頻監(jiān)控卡自帶函數(shù)庫(kù)開(kāi)發(fā)視頻監(jiān)控系統(tǒng)軟件,。
視頻監(jiān)控卡自帶函數(shù)庫(kù)提供了兩類捕獲當(dāng)前幀圖像數(shù)據(jù)的函數(shù),。一類將圖像數(shù)據(jù)以文件形式保存在磁盤上,另一類將圖像數(shù)據(jù)復(fù)制到剪貼板上,。由于剪貼板是Windows系統(tǒng)中單獨(dú)預(yù)留出來(lái)的一塊內(nèi)存,由于內(nèi)存讀寫速度是硬盤讀寫速度十倍以上,,同時(shí)使用剪貼板也可避免對(duì)硬盤的反復(fù)讀寫,,因此利用剪貼板捕獲圖像數(shù)據(jù),代碼如下:
參數(shù)說(shuō)明:int n為視頻監(jiān)控卡卡號(hào):LPBITMAPINFO lpBI為指BITMAPINFO結(jié)構(gòu)的指針,;void*pDIBBits為指向位圖數(shù)據(jù)的指針,。
3.2 DIB到IPLImage數(shù)據(jù)格式的轉(zhuǎn)換
由于剪貼板捕獲的圖像數(shù)據(jù)格式為DIB,而OpenCV函數(shù)庫(kù)中圖像的基本格式為IPlImage*,,因此,,需要將DIB圖像數(shù)據(jù)格式轉(zhuǎn)為IPLImage*圖像數(shù)據(jù)格式,其代碼如下:
4 多區(qū)域?qū)崟r(shí)移動(dòng)偵測(cè)
32位Windows操作系統(tǒng)采用搶先式多任務(wù)方式運(yùn)行應(yīng)用程序,。當(dāng)一個(gè)程序運(yùn)行后,,操作系統(tǒng)就啟動(dòng)了一個(gè)進(jìn)程。為了讓進(jìn)程完成一些工作,,每個(gè)進(jìn)程必須包含至少一線程,。線程負(fù)責(zé)執(zhí)行包含在進(jìn)程地址空間中的代碼,每個(gè)線程共享所有的進(jìn)程資源,,包括打開(kāi)的文件,、信號(hào)標(biāo)識(shí)及動(dòng)態(tài)分配的內(nèi)存等。
線程是系統(tǒng)分配CPU時(shí)間的基本實(shí)體,,它也是代碼執(zhí)行的最小單位,。實(shí)際上,同一時(shí)間只有一個(gè)線程在運(yùn)行,,由于每個(gè)線程劃分的時(shí)間很小(20 ms左右),,CPU通過(guò)分時(shí)在各個(gè)線程之間頻繁地切換,,使得系統(tǒng)看起來(lái)有多道程序在同時(shí)運(yùn)行。
Windows提供了2種線程——輔助線程和用戶界面線程,。兩種線程均為MFC庫(kù)所支持,。用戶界面線程通常有窗口,因此,,它具有自己的消息循環(huán),。輔助線程沒(méi)有窗口,因此,,它不需要處理消息,。
用戶界面線程用于響應(yīng)用戶操作和程序的其他控制,輔助線程用于多個(gè)區(qū)域視頻圖像的捕獲,,并利用移動(dòng)偵測(cè)算法實(shí)現(xiàn)實(shí)時(shí)入侵報(bào)警功能,。程序流程如圖2所示。
5 實(shí)驗(yàn)結(jié)果
為了驗(yàn)證本文提出的多區(qū)域視頻監(jiān)控入侵檢測(cè)報(bào)警方法的性能,,實(shí)驗(yàn)采用兩塊SDK-2500型視頻監(jiān)控卡同時(shí)對(duì)室內(nèi),、室外兩個(gè)區(qū)域進(jìn)行長(zhǎng)時(shí)間的視頻監(jiān)控,監(jiān)控視頻幀率為30幀/秒,。為捕獲穩(wěn)定的視頻圖像,,在輔助線程內(nèi)添加了100 ms的等待時(shí)間。隨機(jī)抽取100次報(bào)警結(jié)果,,其結(jié)果如表1所示,。
從測(cè)試結(jié)果可以看出,本文方法室內(nèi)誤報(bào)率為1%,,室外誤報(bào)率為2%,。根據(jù)保存的視頻圖像分析得知:室內(nèi)誤報(bào)警發(fā)生于開(kāi)燈情況下,是因環(huán)境亮度急劇變化引起的,;室外兩次誤報(bào)警均發(fā)生于刮風(fēng)情況下,,由于樹(shù)枝大幅度搖擺造成的。
6 結(jié)束語(yǔ)
本文利用多線程技術(shù)實(shí)現(xiàn)了視頻監(jiān)控系統(tǒng)中多區(qū)域移動(dòng)偵測(cè)入侵報(bào)警自動(dòng)化,。該方法利用視頻監(jiān)控卡自帶函數(shù)庫(kù),,充分發(fā)揮了視頻監(jiān)控卡處理器的性能,獲得了較高的監(jiān)控畫質(zhì),;該方法誤報(bào)率較低,,可廣泛適用于各種視頻監(jiān)控系統(tǒng)中。