【摘 要】OpenCV是一個基于(開源)發(fā)行的跨平臺計(jì)算機(jī)視覺庫,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。本文主要簡述了基于OPENCV開源代碼庫的運(yùn)動目標(biāo)的檢測與跟蹤的原理及算法實(shí)現(xiàn)。在VC++6.0編譯環(huán)境下,用C++語言編寫,利用USB攝像頭作為視頻采集器,實(shí)現(xiàn)了對可疑目標(biāo)的持續(xù)跟蹤。
【關(guān)鍵詞】OPENCV 運(yùn)動目標(biāo) 檢測 跟蹤 背景差分 CamShift算法
Abstract:OpenCV is based on (open) issued a cross-platform computer vision library that implements many common algorithms of image processing and computer vision.This paper outlines the principles and algorithms of OpenCV-based moving target detection and tracking. Compiled under VC + +6.0 environment, using C + + language,using USB camera as a video capture device, to achieve a continuous tracking of suspicious targets.
Keywords:OPENCV;Moving target;detection;tracking;Background difference; CamShift algorithm
一、項(xiàng)目背景
以往的監(jiān)控系統(tǒng)要監(jiān)視各廳室的所有角落,需要在多方位安裝監(jiān)控?cái)z像頭,隨著防盜系統(tǒng)向著網(wǎng)絡(luò)遠(yuǎn)程化、智能化和自動化方向的發(fā)展,設(shè)計(jì)一種室內(nèi)監(jiān)控?cái)z像頭自動跟蹤目標(biāo)的控制系統(tǒng)勢在必行,可以通過分析攝像頭所傳輸?shù)膱D像信息,鎖定可疑目標(biāo),然后帶動步動電機(jī)轉(zhuǎn)向,將可疑目標(biāo)控制在攝像頭范圍內(nèi)。作為具有廣泛的應(yīng)用前景和潛在的經(jīng)濟(jì)價值的新領(lǐng)域,智能監(jiān)控已經(jīng)從早期少數(shù)研究人員的學(xué)術(shù)興趣,發(fā)展為科學(xué)、工業(yè)、空間技術(shù)和政府應(yīng)用中的重要角色。由于算法和實(shí)現(xiàn)方法的的進(jìn)展,智能監(jiān)控已成為一項(xiàng)重要而成熟的成本劃算的技術(shù)。
二、檢測跟蹤的整體思路
逐幀讀入視頻流圖像,選擇檢測算法(背景差分或者幀間差分)對當(dāng)前幀與背景幀或前一幀進(jìn)行差分運(yùn)算,檢測出運(yùn)動目標(biāo), 再利用目標(biāo)分割的方法把運(yùn)動目標(biāo)從背景中分離出來。然后利用CamShift算法自適應(yīng)的跟蹤目標(biāo)。
三、運(yùn)動目標(biāo)檢測
運(yùn)動目標(biāo)檢測的主要目的是:從視頻流中提取出運(yùn)動目標(biāo),并獲得運(yùn)動目標(biāo)的關(guān)鍵信息,如形狀和輪廓等特征。
由于運(yùn)動只有在圖像序列中才能得到體現(xiàn),因此運(yùn)動目標(biāo)檢測問題所討論的焦點(diǎn)就是:如何從圖像中將目標(biāo)或部分目標(biāo)分割出來。
3.1幀間差分法
3.1.1定義
幀間差分法是一種通過對視頻圖像序列中相鄰兩幀作差分運(yùn)算來獲得運(yùn)動目標(biāo)輪廓的方法。
3.1.2幀間差分法的優(yōu)缺點(diǎn)
幀間差分法的優(yōu)點(diǎn)是:算法實(shí)現(xiàn)簡單,程序設(shè)計(jì)復(fù)雜度低;對光線等場景變化不太敏感,能夠適應(yīng)各種動態(tài)環(huán)境,穩(wěn)定性較好。其缺點(diǎn)是:不能提取出對象的完整區(qū)域,只能提取出邊界;同時依賴于選擇的幀間時間間隔。對快速運(yùn)動的物體,需要選擇較小的時間間隔,如果選擇不合適,當(dāng)物體在前后兩幀中沒有重疊時,會被檢測為兩個分開的物體:而對慢速運(yùn)動的物體,應(yīng)該選擇較大的時間差,如果時間選擇不適當(dāng),當(dāng)物體在前后兩幀中幾乎完全重疊時,則檢測不到物體。
3.2背景差分法
3.2.1 定義
背景差分法是采用圖像序列中的當(dāng)前幀和背景參考模型比較來檢測運(yùn)動物體的一種方法,其性能依賴于所使用的背景建模技術(shù)。
3.2.2常用的背景建模方法
(1)中值法背景建模:顧名思義,就是在一段時間內(nèi),取連續(xù)N幀圖像序列,把這N幀圖像序列中對應(yīng)位置的像素點(diǎn)灰度值按從小到大排列,然后取中間值作為背景圖像中對應(yīng)像素點(diǎn)的灰度值;
(2)均值法背景建模:均值法建模算法非常簡單,就是對一些連續(xù)幀取像素平均值。這種算法速度很快,但對環(huán)境光照變化和一些動態(tài)背景變化比較敏感。其基本思想是,在視頻圖像中取連續(xù)N幀,計(jì)算這N幀圖像像素灰度值的平均值來作為背景圖像的像素灰度值;
(3) 單高斯分布模型:其基本思想是,將圖像中每一個像素點(diǎn)的灰度值看成是一個隨機(jī)過程X,并假設(shè)該點(diǎn)的某一像素灰度值出現(xiàn)的概率服從高斯分布。
(4)卡爾曼濾波器模型:該算法把背景認(rèn)為是一種穩(wěn)態(tài)的系統(tǒng),把前景圖像認(rèn)為是一種噪聲,用基于Kalman濾波理論的時域遞歸低通濾波來預(yù)測變化緩慢的背景圖像,這樣既可以不斷地用前景圖像更新背景,又可以維持背景的穩(wěn)定性消除噪聲的干擾;
3.2.3背景差分法的優(yōu)勢
幀間差分法兩幀間同一運(yùn)動目標(biāo)的重疊部分不容易檢測出來,即只能檢測出前后兩幀中目標(biāo)的一部分。當(dāng)閾值選取比較低的時候,會出現(xiàn)目標(biāo)在運(yùn)動方向上前后分裂并拉長的現(xiàn)象。當(dāng)閾值調(diào)高,帶來的問題是前景像素的數(shù)量減少,不利于發(fā)現(xiàn)運(yùn)動目標(biāo)。使用背景差分法能夠較為穩(wěn)定的提取出前景目標(biāo)。
四、運(yùn)動目標(biāo)跟蹤
4.1 Mean-shift算法
Mean-shift算法可用于多種應(yīng)用的通用的數(shù)據(jù)分析方法,計(jì)算機(jī)視覺正是這些應(yīng)用之一。
4.1.1Mean-shift算法的過程
(1)選擇搜索窗口,確定窗口的初始位置,類型,形狀,大小。
(2)計(jì)算窗口(可能是帶權(quán)重的)的重心。
(3)將窗口的中心設(shè)置在計(jì)算出的重心處。
(4)循環(huán)第二步,直至窗口位置不再變化。
4.1.2Mean-shift算法的計(jì)算公式
得到這些公式可用一個矩形的核進(jìn)行簡化,將mean-shift矢量等式簡化為計(jì)算圖像像素分布的重心:,
這里,零階矩的計(jì)算如下:
一階矩的計(jì)算為:和。
Mean-shift矢量告訴我們?nèi)绾螌ean-shift窗口的中心重新移動到由計(jì)算得出的此窗口的重心的位置。很顯然,窗口的移動造成了窗口內(nèi)容的改變,于是我們又重復(fù)剛才重新定位窗口中心的步驟。窗口中心重定位的過程通常會收斂到Mean-shift矢量為0(也就是,窗口不能再移動)。收斂的位置在窗口中像素分布的局部最大值(峰值)處。由于峰值本身是一個對尺度變化敏感的量,所以窗口大小不同,峰值的位置也不一樣。
4.1.3Mean-shift算法的形式
int cvMeanShift(
Const CvArr* prob_image,
CvRect window,
CvTermCriteria criteria,
CvConnectedComp* comp,
);
4.2 Camshift算法
Camshift算法是MeanShift算法的改進(jìn),稱為連續(xù)自適應(yīng)的MeanShift算法,它的關(guān)鍵就在于當(dāng)目標(biāo)的大小發(fā)生改變的時候,此算法可以自適應(yīng)調(diào)整目標(biāo)區(qū)域繼續(xù)跟蹤。 如果有一個易于分割的分布(例如保持緊密的人臉特征),此算法可以根據(jù)人在走近或遠(yuǎn)離攝像機(jī)時臉的尺寸而自動調(diào)整窗口的尺寸。
4.2.1Camshift算法的流程
首先選擇大小為S的初始搜索窗口,然后對該窗口中每一個像素點(diǎn)的H通道上采樣,得到運(yùn)動目標(biāo)的色調(diào)(Hue)直方圖,再將該直方圖保存下來作為搜索目標(biāo)的顏色直方圖模型。在目標(biāo)跟蹤過程中,對攝像頭當(dāng)前幀圖像的每一個像素,通過查詢目標(biāo)的顏色直方圖模型,可以得到該像素為目標(biāo)像素的概率。經(jīng)上述預(yù)處理,視頻中每一幀圖像都轉(zhuǎn)化為目標(biāo)顏色概率分布圖。也稱為目標(biāo)顏色投影圖。在一般情況下,將投影圖轉(zhuǎn)化為8位的灰度投影圖,概率為1的像素值設(shè)為255,概率為0的像素值為0,其他像素也轉(zhuǎn)換為相應(yīng)的灰度值。
4.2.2CamShift算法的形式
int cvCamShift(
Const CvArr* prob_image,
CvRect window,
CvTermCriteria criteria,
CvConnectedComp* comp,
CvBox2D* box=1
);
五、運(yùn)行結(jié)果與分析
在本實(shí)驗(yàn)中,用一個攝像頭來跟蹤一運(yùn)動物體,下面圖7~圖8一系列圖像是采用CAMSHIFT算法跟蹤運(yùn)動物體部分圖像。
參考文獻(xiàn):
[1]Gary Bradski Adrian Kaebler 著 于仕琪 劉瑞禎譯 學(xué)習(xí)OpenCV(中文版)清華大學(xué)出版社 2009年10月第一版
[2]劉瑞禎;于仕琪 OpenCV教程-基礎(chǔ)篇2007
[3]葉鋒.范曼曼.鄭子華.尹鵬 一種改進(jìn)的基于平均背景模型的運(yùn)動目標(biāo)檢測算法[期刊論文]-福建師范大學(xué)學(xué)報
[4]李國輝;涂丹 監(jiān)控視頻運(yùn)動目標(biāo)檢測減背景技術(shù)的研究現(xiàn)狀和展望[期刊論文]-中國圖象圖形學(xué)報A
[5]Baoxia Li;Lixi Wan;Yao Lv;Wei Gao;Chengyue Yang;Zhihua Li;Xu Zhang; Low-cost high-efficiency optical coupling using through-silicon-hole in parallel optical transceiver module [J]. Applied Physics A, 2009