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