基于OpenCV的智能視頻監控設計
這個(gè)算法基于的條件是運動(dòng)目標相鄰兩幀之間在畫(huà)面上存在的交集,此算法不用外推和相關(guān)分析以及軌跡后處理就可以清晰地顯示出目標的軌跡、速度與方向。用該算法基于運動(dòng)目標檢測運動(dòng)目標前景圖像的具體過(guò)程可描述如下:
◇存儲檢測出來(lái)的目標前景圖像,并使過(guò)去的幀灰度遞減:
◇在當前幀打上時(shí)間戳疊加存儲到歷史圖像后綴;
◇形成梯度漸變圖像;
◇由分割得到的梯度漸變圖像得到目標位置,并計算漸變梯度,以得到目標的速度和方向,并加上批號標記。
該算法簡(jiǎn)化了目標相關(guān)性的運算,可在初始狀態(tài)下對于目標運動(dòng)趨勢不了解的情況下實(shí)施對目標的穩定跟蹤,同時(shí)具有良好的實(shí)時(shí)性能。本文引用地址:http://dyxdggzs.com/article/166550.htm
3 相關(guān)函數
通過(guò)函數cvUpdateMotionHistory可使用下列方式更新運動(dòng)歷史圖像:
也就是說(shuō),MHI(motion history image)中運動(dòng)所發(fā)生的象素點(diǎn)被設置為當前時(shí)間,而運動(dòng)發(fā)生較久的象素點(diǎn)將被清除。
函數cvCalcMotionGradient用于計算MHI的差分Dx和Dy,然后計算梯度方向,其公式為:
orientation(x,y)=arcztan(Dy(x,y)/Dx(x,y))
其中要考慮Dx(x,y)和Dy(x,y)的符號。然后填充mask以表示哪些方向是正確的。
函數cvCalcGlobalOrientation用于在選擇的區域內計算整個(gè)運動(dòng)方向。并返回0°到360°之間的角度值。首先由函數創(chuàng )建運動(dòng)直方圖,并尋找基本方向做為直方圖最大值的坐標。然后通過(guò)函數計算與基本方向的相對偏移量,并將其做為所有方向向量的加權和(運行越近,權重越大)。所得到的角度就是基本方向和偏移量的循環(huán)和。
函數cvSegmentMotion可尋找所有的運動(dòng)分割,并在seg_mask用不同的單獨數字(1,2,…)標識它們。它也可返回一個(gè)具有CvConnected-
Comp結構的序列。其中每個(gè)結構對應一個(gè)運動(dòng)部件。在這之后,每個(gè)運動(dòng)部件的運動(dòng)方向就可以被函數cvCalcGlobalOrientation利用提取的特定部件的掩模(mask)計算出來(lái)。此外,每個(gè)運動(dòng)部件的質(zhì)心位置也可由返回的圖像ROI位置來(lái)確定,由此便可確定運動(dòng)目標的位置。
4 實(shí)驗結果
在實(shí)驗中,可采取標準視頻圖像源來(lái)有效檢測跟蹤出圖像中的運動(dòng)目標,圖2所示是其實(shí)驗結果示意圖。其中通過(guò)圖2(a)能夠根據CvCon-
neetedComp中所獲取的運動(dòng)分割形狀大小,濾掉所不關(guān)心的運動(dòng)目標;而對于圖2(b),如果把限定閾值取大。則視頻中的騎自行車(chē)的人將不會(huì )被跟蹤顯示;
圖2(c)中,假定豎直線(xiàn)右側為警戒區域,當有目標進(jìn)入該區域時(shí)。即運動(dòng)目標的質(zhì)心位置為某一區間值時(shí),則對該目標進(jìn)行標記,從而達到智能判斷的效果。圖中直線(xiàn)方向表示運動(dòng)物體的運動(dòng)方向,在實(shí)際的運用場(chǎng)景中,可由此判斷物體是否逆行以達到智能監控和識別的效果。
5 結束語(yǔ)
本文介紹了openCV中運動(dòng)模板的檢測方法,該方法可以有效正確檢測和跟蹤視頻圖像中的運動(dòng)目標,并能獲得該目標的運動(dòng)方向與相應位置,從而實(shí)現智能視頻監控和智能判斷。但實(shí)際上,該方法仍然會(huì )存在運動(dòng)背景差不精確、運動(dòng)目標形狀大小不一等問(wèn)題,因此,還需進(jìn)一步研究或與其他方法相結合,以達到更好的效果。
評論