《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于OpenCV的智能視頻監(jiān)控設(shè)計(jì)
基于OpenCV的智能視頻監(jiān)控設(shè)計(jì)
國(guó)外電子元器件
岑 銀
西南交通大學(xué)
摘要: 采用智能視頻分析技術(shù)的智能監(jiān)控系統(tǒng)能夠最大限度地減少人為干預(yù),提高監(jiān)控效率,減輕人的工作負(fù)擔(dān),并可對(duì)動(dòng)態(tài)場(chǎng)景視頻中的目標(biāo)物體進(jìn)行檢測(cè)、分離、跟蹤與有效識(shí)別。文中介紹了opencv中的運(yùn)動(dòng)模板檢測(cè)方法,并給出了使用該檢測(cè)方法來對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行檢測(cè)、跟蹤與智能判斷的實(shí)驗(yàn)結(jié)果。
Abstract:
Key words :

O 引言

智能視頻監(jiān)控以數(shù)字化、網(wǎng)絡(luò)化視頻監(jiān)控為基礎(chǔ),但又有別于一般的網(wǎng)絡(luò)化視頻監(jiān)控,它是一種更高端的視頻監(jiān)控應(yīng)用。智能視頻監(jiān)控系統(tǒng)能夠識(shí)別不同的物體。發(fā)現(xiàn)監(jiān)控畫面中的異常情況,并能以最快和最佳的方式發(fā)出警報(bào)和提供有用信息,從而能夠更加有效地協(xié)助安全人員處理危機(jī),并最大限度地降低誤報(bào)和漏報(bào)現(xiàn)象。智能視頻監(jiān)控中的運(yùn)動(dòng)目標(biāo)檢測(cè)與跟蹤技術(shù)則是實(shí)現(xiàn)這一環(huán)節(jié)的關(guān)鍵技術(shù)。目前比較常用的運(yùn)動(dòng)目標(biāo)檢測(cè)方法是幀間差分法、背景差分法和光流法。而幾種較受關(guān)注的目標(biāo)跟蹤算法則有粒子濾波、基于邊緣輪廓的跟蹤和基于模板的目標(biāo)建模等方法。

通過計(jì)算機(jī)開源視覺庫(kù)(openCV)中的運(yùn)動(dòng)模板檢測(cè)能對(duì)視頻圖像中運(yùn)動(dòng)目標(biāo)有效地進(jìn)行檢測(cè)與跟蹤,本文首先介紹了openCV算法,然后在該算法的基礎(chǔ)上,給出了實(shí)現(xiàn)智能視頻監(jiān)控中對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤,并根據(jù)運(yùn)動(dòng)目標(biāo)的質(zhì)心位置作出相應(yīng)智能判斷的具體方法。

1 0penCV簡(jiǎn)介

OpenCV是“Open Source Computer Vision Library”的簡(jiǎn)寫,是Intel開源計(jì)算機(jī)視覺庫(kù)。它由一系列C函數(shù)和少量的C++類構(gòu)成,是可實(shí)現(xiàn)圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。OpenCV擁有包括300多個(gè)C函數(shù)的、跨平臺(tái)的中、高層API,它不依賴與其它的外部庫(kù)。Op-enCV對(duì)非商業(yè)應(yīng)用和商業(yè)應(yīng)用都是免費(fèi)的;另外,OpenCV為Intel的IPP也提供了透明接口。這意味著,如果有為特定處理器優(yōu)化的IPP庫(kù),那么,OpenCV將在運(yùn)行時(shí)自動(dòng)加載這些庫(kù),以使函數(shù)性能達(dá)到最好。OpenCV的優(yōu)點(diǎn)是開放源代碼,具有基于Intel處理器指令集開發(fā)的優(yōu)化代碼,統(tǒng)一的結(jié)構(gòu)和功能定義,強(qiáng)大的圖像和矩陣運(yùn)算能力,以及方便靈活的用戶接口,同時(shí)支持MS-Windows和Linux平臺(tái)。

最新的OpenCV庫(kù)已經(jīng)包含有大量的函數(shù)和例子,可用來處理計(jì)算機(jī)視覺領(lǐng)域中常見的問題,其中主要涉及到以下幾個(gè)方面的內(nèi)容:
    (1) Motion Analysis and Objection Tracking-運(yùn)動(dòng)分析和目標(biāo)跟蹤;
    (2)Image Analysis-圖像分析;
    (3) StructuralA nalysis-結(jié)構(gòu)分析;
    (4)ObjectR ecognition-目標(biāo)識(shí)別;
    (5)3D Reconstruction-3D重建。

2 算法流程

運(yùn)動(dòng)模塊檢測(cè)算法的流程圖如圖1所示。該流程首先是獲得當(dāng)前幀與上一幀的差,接著對(duì)差圖像進(jìn)行二值化,以去掉超時(shí)影響,更新運(yùn)動(dòng)歷史圖像,然后計(jì)算運(yùn)動(dòng)歷史圖像的梯度方向,并將整個(gè)運(yùn)動(dòng)分割為獨(dú)立的運(yùn)動(dòng)部分,再用一個(gè)結(jié)構(gòu)序列標(biāo)記每一個(gè)運(yùn)動(dòng)分割,最后計(jì)算選擇區(qū)域的全局運(yùn)動(dòng)方向,從而獲得運(yùn)動(dòng)目標(biāo)的質(zhì)心位置與運(yùn)動(dòng)方向。

這個(gè)算法基于的條件是運(yùn)動(dòng)目標(biāo)相鄰兩幀之間在畫面上存在的交集,此算法不用外推和相關(guān)分析以及軌跡后處理就可以清晰地顯示出目標(biāo)的軌跡、速度與方向。用該算法基于運(yùn)動(dòng)目標(biāo)檢測(cè)運(yùn)動(dòng)目標(biāo)前景圖像的具體過程可描述如下:

◇存儲(chǔ)檢測(cè)出來的目標(biāo)前景圖像,并使過去的幀灰度遞減:
    ◇在當(dāng)前幀打上時(shí)間戳疊加存儲(chǔ)到歷史圖像后綴;
    ◇形成梯度漸變圖像;
    ◇由分割得到的梯度漸變圖像得到目標(biāo)位置,并計(jì)算漸變梯度,以得到目標(biāo)的速度和方向,并加上批號(hào)標(biāo)記。

該算法簡(jiǎn)化了目標(biāo)相關(guān)性的運(yùn)算,可在初始狀態(tài)下對(duì)于目標(biāo)運(yùn)動(dòng)趨勢(shì)不了解的情況下實(shí)施對(duì)目標(biāo)的穩(wěn)定跟蹤,同時(shí)具有良好的實(shí)時(shí)性能。

3 相關(guān)函數(shù)

通過函數(shù)cvUpdateMotionHistory可使用下列方式更新運(yùn)動(dòng)歷史圖像:

也就是說,MHI(motion history image)中運(yùn)動(dòng)所發(fā)生的象素點(diǎn)被設(shè)置為當(dāng)前時(shí)間,而運(yùn)動(dòng)發(fā)生較久的象素點(diǎn)將被清除。

函數(shù)cvCalcMotionGradient用于計(jì)算MHI的差分Dx和Dy,然后計(jì)算梯度方向,其公式為:

orientation(x,y)=arcztan(Dy(x,y)/Dx(x,y))

其中要考慮Dx(x,y)和Dy(x,y)的符號(hào)。然后填充mask以表示哪些方向是正確的。

函數(shù)cvCalcGlobalOrientation用于在選擇的區(qū)域內(nèi)計(jì)算整個(gè)運(yùn)動(dòng)方向。并返回0°到360°之間的角度值。首先由函數(shù)創(chuàng)建運(yùn)動(dòng)直方圖,并尋找基本方向做為直方圖最大值的坐標(biāo)。然后通過函數(shù)計(jì)算與基本方向的相對(duì)偏移量,并將其做為所有方向向量的加權(quán)和(運(yùn)行越近,權(quán)重越大)。所得到的角度就是基本方向和偏移量的循環(huán)和。

函數(shù)cvSegmentMotion可尋找所有的運(yùn)動(dòng)分割,并在seg_mask用不同的單獨(dú)數(shù)字(1,2,…)標(biāo)識(shí)它們。它也可返回一個(gè)具有CvConnected-
Comp結(jié)構(gòu)的序列。其中每個(gè)結(jié)構(gòu)對(duì)應(yīng)一個(gè)運(yùn)動(dòng)部件。在這之后,每個(gè)運(yùn)動(dòng)部件的運(yùn)動(dòng)方向就可以被函數(shù)cvCalcGlobalOrientation利用提取的特定部件的掩模(mask)計(jì)算出來。此外,每個(gè)運(yùn)動(dòng)部件的質(zhì)心位置也可由返回的圖像ROI位置來確定,由此便可確定運(yùn)動(dòng)目標(biāo)的位置。

4 實(shí)驗(yàn)結(jié)果

在實(shí)驗(yàn)中,可采取標(biāo)準(zhǔn)視頻圖像源來有效檢測(cè)跟蹤出圖像中的運(yùn)動(dòng)目標(biāo),圖2所示是其實(shí)驗(yàn)結(jié)果示意圖。其中通過圖2(a)能夠根據(jù)CvCon-neetedComp中所獲取的運(yùn)動(dòng)分割形狀大小,濾掉所不關(guān)心的運(yùn)動(dòng)目標(biāo);而對(duì)于圖2(b),如果把限定閾值取大。則視頻中的騎自行車的人將不會(huì)被跟蹤顯示;

圖2(c)中,假定豎直線右側(cè)為警戒區(qū)域,當(dāng)有目標(biāo)進(jìn)入該區(qū)域時(shí)。即運(yùn)動(dòng)目標(biāo)的質(zhì)心位置為某一區(qū)間值時(shí),則對(duì)該目標(biāo)進(jìn)行標(biāo)記,從而達(dá)到智能判斷的效果。圖中直線方向表示運(yùn)動(dòng)物體的運(yùn)動(dòng)方向,在實(shí)際的運(yùn)用場(chǎng)景中,可由此判斷物體是否逆行以達(dá)到智能監(jiān)控和識(shí)別的效果。

5 結(jié)束語

本文介紹了openCV中運(yùn)動(dòng)模板的檢測(cè)方法,該方法可以有效正確檢測(cè)和跟蹤視頻圖像中的運(yùn)動(dòng)目標(biāo),并能獲得該目標(biāo)的運(yùn)動(dòng)方向與相應(yīng)位置,從而實(shí)現(xiàn)智能視頻監(jiān)控和智能判斷。但實(shí)際上,該方法仍然會(huì)存在運(yùn)動(dòng)背景差不精確、運(yùn)動(dòng)目標(biāo)形狀大小不一等問題,因此,還需進(jìn)一步研究或與其他方法相結(jié)合,以達(dá)到更好的效果。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。