近年來,隨著我國職業(yè)院校的不斷發(fā)展,校園建筑面積和規(guī)模逐步擴(kuò)大,校園的流動人口大量增加,治安形勢錯(cuò)綜復(fù)雜,做好校園的安保工作,僅靠簡單的增加人力和物力,采取常規(guī)的防范措施已經(jīng)很難適應(yīng)新形勢的需要。為了加強(qiáng)校園安全防范整體力量,有效保護(hù)校園與學(xué)生的財(cái)產(chǎn)安全,利用先進(jìn)的科技手段建立一套功能完善、覆蓋范圍廣泛的監(jiān)控系統(tǒng)是維護(hù)學(xué)生正常學(xué)習(xí)、生活,創(chuàng)造平安校園的必要條件。
智能視頻監(jiān)控是綜合利用圖像處理、機(jī)器視覺和計(jì)算機(jī)視覺知識進(jìn)行研究的一個(gè)新興的研究方向和備受關(guān)注的前沿課題。與傳統(tǒng)的模擬監(jiān)控不同,智能監(jiān)控系統(tǒng)能實(shí)時(shí)的對攝像機(jī)捕捉到的視頻序列進(jìn)行處理和分析,自動完成動態(tài)目標(biāo)的檢測、識別和跟蹤,并在此基礎(chǔ)上可以進(jìn)一步對目標(biāo)的行為進(jìn)行分析和理解。本文構(gòu)建的校園智能視頻監(jiān)控系統(tǒng)利用OpenCV實(shí)現(xiàn)了對視頻圖像中動態(tài)目標(biāo)的行為快速有效地進(jìn)行監(jiān)控和分析,并實(shí)現(xiàn)了對動態(tài)目標(biāo)的精確跟蹤。
OpenCV是Intel公司開發(fā)的用于數(shù)字圖像處理和計(jì)算機(jī)視覺的函數(shù)庫[1]。它由一系列C函數(shù)和少量C++類構(gòu)成,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。OpenCV其源代碼完全開放,運(yùn)行速度快,由于具有良好的可移植性和統(tǒng)一的結(jié)構(gòu)及其穩(wěn)定性,因此可以縮短系統(tǒng)設(shè)計(jì)的開發(fā)周期,使系統(tǒng)運(yùn)行更加穩(wěn)定。
鑒于OpenCV的特點(diǎn),它主要用于對視頻圖像進(jìn)行一些高級處理,如人臉識別、動態(tài)跟蹤、圖像分割及人機(jī)互動等。
當(dāng)動態(tài)目標(biāo)出現(xiàn)在可視范圍內(nèi),首先通過背景差分法將前景圖像與背景圖像分離,再對差值進(jìn)行二值化判斷,利用給定的閾值去除噪聲等干擾后,從場景中檢測出動態(tài)目標(biāo)。與之前檢測出的目標(biāo)做特征比對,如果是新目標(biāo)則加入到跟蹤序列中,如果是舊目標(biāo)則舍棄。目標(biāo)跟蹤階段,對跟蹤序列中的目標(biāo)采用CamShift跟蹤算法,提取目標(biāo)特征信息,并獲得其運(yùn)動軌跡,對目標(biāo)進(jìn)行實(shí)時(shí)跟蹤。其關(guān)鍵點(diǎn)在于目標(biāo)的特征信息提取和匹配,這是決定目標(biāo)跟蹤效果的重大因素。
動態(tài)目標(biāo)檢測是校園智能視頻監(jiān)控系統(tǒng)的重要組成部分。動態(tài)目標(biāo)檢測的主要目的是從視頻圖像中實(shí)時(shí)的提取出動態(tài)目標(biāo)并獲得動態(tài)目標(biāo)的特征信息,如色彩、形狀、輪廓等[2]。動態(tài)目標(biāo)提取的過程就是在連續(xù)的視頻圖像序列中尋找差異,并把由于目標(biāo)運(yùn)動和表現(xiàn)出來的差異提取出來。
動態(tài)目標(biāo)檢測常用的有四種常用方法:連續(xù)幀間差分法、背景差分法、光流法和運(yùn)動能量法[3]。由于背景差分法具有實(shí)現(xiàn)簡單,運(yùn)算速度快,因此最常用。它通過當(dāng)前幀圖像與背景圖像相減并提取出感興趣區(qū)域來檢測動態(tài)目標(biāo),固定場景下應(yīng)用背景差分法進(jìn)行動態(tài)目標(biāo)檢測,關(guān)鍵在于創(chuàng)建和維護(hù)一個(gè)可靠的背景。針對這種情況,背景模型應(yīng)運(yùn)而生。評價(jià)一個(gè)好的背景模型,應(yīng)該從兩個(gè)方面進(jìn)行考慮:第一,背景模型對背景變化的響應(yīng)速度要足夠快;第二,背景模型對運(yùn)動目標(biāo)要有較強(qiáng)的抗干擾能力。
3.2.1 提取前景圖像
假設(shè)環(huán)境溫度不變,視頻圖像的背景也不變,當(dāng)動態(tài)目標(biāo)出現(xiàn)時(shí).圖像相應(yīng)像素點(diǎn)的灰度值會發(fā)生明顯的改變,利用圖像減法就可以得到差分灰度圖像[4]。差分灰度圖像包含了動態(tài)目標(biāo)信息,相對于背景圖像又稱之為前景圖像。相減的結(jié)果中每一像素的值和一個(gè)預(yù)先設(shè)定的閾值相比較,若這個(gè)像素的值大于閾值,則認(rèn)為這點(diǎn)是前景圖像,否則是背景圖像。假設(shè)利用圖像平均法可得到當(dāng)前背景圖像BK(x,y),當(dāng)前的輸入圖像為CK(x,y),則前景圖像DK(x,y)可以表示為當(dāng)前圖像與背景圖像差的絕對值即:DK(x,y)=|CK(x,y)-BK(x,y)|
3.2.2 差分圖像二值化
選取T為閾值,對差分圖像進(jìn)行二值化[5]:
其中,EK為進(jìn)行二值化后的圖像,當(dāng)差分圖像中像素值大于某一給定的閾值T時(shí),則認(rèn)為該像素為前景像素,即認(rèn)為該像素可能為目標(biāo)上的一點(diǎn),反之則認(rèn)為是背景像素。
在OpenCV中,差分圖像的二值化是由函數(shù)void cvTheshold實(shí)現(xiàn)的。
由于背景差分法受外界光線的變化、背景中含有輕微擾動的對象,如樹枝、樹葉的搖動等的影響,因此對前景圖像還要進(jìn)行一系列的圖像處理。包括:平滑處理,形態(tài)學(xué)膨脹、腐蝕,二值化操作,輪廓提取等。但是并不是所有的輪廓都是由目標(biāo)產(chǎn)生的,有些是目標(biāo)的子輪廓或者是噪聲產(chǎn)生的輪廓,因此必須對輪廓進(jìn)行篩選,淘汰偽目標(biāo)的輪廓,把目標(biāo)輪廓篩選出來后加入到跟蹤隊(duì)列。
在校園智能視頻監(jiān)控系統(tǒng)中,動態(tài)目標(biāo)跟蹤起著承上啟下的作用,它是利用圖像處理和計(jì)算機(jī)視覺等相關(guān)技術(shù)對視頻圖像序列進(jìn)行處理和分析,在連續(xù)的圖像序列中找到動態(tài)目標(biāo)的位置和相關(guān)信息,比如動態(tài)目標(biāo)的速度、形狀等。為了實(shí)現(xiàn)該功能,本文采用了OpenCV中的CamShift目標(biāo)跟蹤算法。它主要通過視頻圖像中動態(tài)目標(biāo)的顏色信息來達(dá)到跟蹤的目的。
3.3.1 CamShift算法簡介
Gary R.Bradski提出的CamShift算法,是以顏色直方圖為目標(biāo)模式的目標(biāo)跟蹤算法,是對MeanShift算法的改良,可以有效地解決目標(biāo)變形和部分遮擋的問題,而且運(yùn)算效率很高。它的基本思想是將視頻圖像的所有幀做MeanShift運(yùn)算,將上一幀的運(yùn)算信息作為搜索窗口的初始值,并將初始值作為對下一幀圖像運(yùn)算的輸入,進(jìn)行迭代后實(shí)現(xiàn)對動態(tài)目標(biāo)在每一幀圖像序列中的連續(xù)跟蹤。由于RGB顏色空間對光照亮度變化比較敏感,為了減少光照亮度變化對跟蹤效果的影響,CamShift算法將圖像由RGB顏色空間轉(zhuǎn)化到HSV顏色模型,方便對動態(tài)目標(biāo)特征的提取。
3.3.2 CamShift算法實(shí)現(xiàn)
在OpenCV庫中,CvCamShiftTracker類就是用來實(shí)現(xiàn)CamShift算法的,使得進(jìn)行二次開發(fā)變得很簡單[7]。
其中,prob_image為目標(biāo)直方圖的反向投影;Window為初始搜索窗口;criteria為確定窗口搜索停止的準(zhǔn)則;comp為生成的結(jié)果,包含收斂的搜索窗口坐標(biāo)(comp→rect字段)與窗口內(nèi)部所有像素點(diǎn)的和(comp→area字段);box為目標(biāo)的最小矩形。如果非NULL,則包含目標(biāo)的尺寸和方向。
利用該函數(shù),在VC++2010開發(fā)環(huán)境下,就很容易實(shí)現(xiàn)CamShift算法跟蹤動態(tài)目標(biāo)。
本文設(shè)計(jì)的基于OpenCV的校園智能視頻監(jiān)控系統(tǒng),由于其較低的計(jì)算復(fù)雜度和較高的魯棒性,具有廣闊的應(yīng)用前景。采用了背景差分法作為動態(tài)目標(biāo)檢測的方法。檢測是跟蹤的前提,檢測結(jié)果的精確性直接影響跟蹤的可靠性。利用CamShift跟蹤算法提取每個(gè)動態(tài)目標(biāo)的顏色特征信息,實(shí)現(xiàn)對多個(gè)動態(tài)目標(biāo)的精確跟蹤,最后將動態(tài)目標(biāo)的輪廓和運(yùn)動軌跡描述出來。
該系統(tǒng)平臺簡單,大大縮短工作人員的開發(fā)周期,只需根據(jù)不同的需要進(jìn)行簡單的改進(jìn),就可以實(shí)現(xiàn)多種場合的不同應(yīng)用。實(shí)驗(yàn)證明,系統(tǒng)運(yùn)行穩(wěn)定,檢測結(jié)果真實(shí)可靠,具有較高的精確度。
[1]Gary Bradski,Adrian Kaehler.學(xué)習(xí)OpenCV[M].北京:清華大學(xué)出版社,2009.
[2]譚歆,武岳.基于OpenCV的運(yùn)動目標(biāo)檢測方法研究與應(yīng)用[J].視頻應(yīng)用與工程,2010,34(S1):184-187.
[3]尹俊超,劉直芳.基于OpenCV的運(yùn)動目標(biāo)檢測與跟蹤[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(8):2817-2820.
[4]林洪文,姚作,涂丹,李國輝.基于減背景技術(shù)的運(yùn)動目標(biāo)檢測方法研究[J].國防科技大學(xué)學(xué)報(bào),2003,25(3):66-69.
[5]侯宏錄,李寧烏,劉迪迪,陳杰.智能視頻監(jiān)控中運(yùn)動目標(biāo)檢測的研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(2):49-52.
[6]鄒鐵軍,張書偉,蔣杰,閆保中.基于OpenCV的運(yùn)動目標(biāo)定位跟蹤系統(tǒng)軟件設(shè)計(jì)[J].智能計(jì)算機(jī)與應(yīng)用,2012,2(3):60-63.
[7]李振偉,陳種,趙有.基于OpenCV的運(yùn)動目標(biāo)跟蹤及其實(shí)現(xiàn)[J].科學(xué)計(jì)算及信息處理,2008,20:128-130.