摘要:CamShift算法是一種實時的跟蹤算法,它是利用目標的顏色直方圖模型得到每幀圖像的顏色投影圖,并根據上一幀跟蹤的結果自適應調整搜索窗口的位置和大小,從而得到當前圖像中目標的尺寸和中心位置。本系統主要是基于CamShift的算法設計一個對運動目標跟蹤檢測系統,本系統既可以對室內環境的運動目標進行跟蹤,也可以對視頻流中的運動目標進行跟蹤。
關鍵詞:實時;目標檢測;CamShift算法;視頻流
中圖分類號:TP391文獻標識碼:B文章編號:1009-3044(2009)36-10532-02
Motive object Detection Based on Camshift Algorithm
DING Zhi-hui, LI Yi
(College of Computer Science, Sichuan University, Chengdu 610064, China)
Abstract: Camshift algorithm is a real-time tracking algorithm, which operates on a back-projection image produced from object histogram model, Computed information is used previously to adjust current search window size and location, then get the location and size of the color object. The system mainly design a motive object detection system based on Camshift algorithm, this system not only could track the moving target on the indoor environment, but also could track the object in the stream of the video.
Key words: real-time; object detection; Camshift algorithm; video streaming
隨著計算機技術的進步,圖象處理技術在工農業生產、醫療設備及其它經濟領域得到越來越廣泛的應用,由于動態圖象所含的信息量非常大,在處理過程中對處理機的要求非常高,Camshift跟蹤算法[1]受到越來越多的關注。Camshift算法是在Mean Shift算法[2]基礎上演變而來的,是一種靈活的運用統計調查方法來尋找分布概率的模式。這是一種非常簡單快捷的跟蹤方法,因為Camshift算法是跟蹤物體的中心和大小的概率分布,典型的概率分布是來自直方圖。這種算法充分的體現了目標跟蹤及時性的特點,在動態圖像中使用它來跟蹤運動的物體方便而且快速。Camshift算法能夠自動調節窗口大小以適應被跟蹤目標在圖像中的大小,其實時性和魯棒性都比較好。
1 CamShift算法原理
CamShift是一種實時的跟蹤算法,其準確性和魯棒性比較好。目前主要用于“用戶感知界面”中的人臉識別和跟蹤以及半自動的運動目標跟蹤[3]。根據對跟蹤算法的分類可知,一方面,CamShift算法應該屬于基于區域的方法,它利用區域內的顏色信息對目標進行跟蹤,另一方面,CamShift算法卻是一種非參數方法,它是通過聚類的方式搜尋運動目標的。
使用CamShift的算法必須先將RGB顏色空間轉化為HSV顏色空間,然后再利用H分量的直方圖建立顏色概率模型。CamShift的算法流程如圖1所示。首先選擇初始搜索窗口,然后對窗口中每個像素的H通道上的值采樣,從而得到目標的色調(Hue)直方圖,將該直方圖保存下來作為目標的顏色直方圖模型。在跟蹤過程中,對視頻圖像處理區域中的每一個像素,通過查詢目標的顏色直方圖模型,可以得到該像素為目標像素的概率,圖像處理區域之外的其他區域作為概率為0 的區域。經上述處理,視頻圖像轉換為目標顏色概率分布圖,也稱為目標顏色背投圖。為便于顯示,將投影圖轉化為8位的灰度投影圖,概率為1 的像素值設為255 ,概率為0的像素值為0,其他像素也轉換為相應的灰度值。所以灰度投影圖中越亮的像素表明該像素為目標像素的可能性越大。
設(x,y)為搜索窗口中的像素點,I(x,y)是投影圖中對應(x,y)點的像素值。定義搜索窗口的零階矩M00 和一階矩M10,M01如下:
可以求得搜索窗口內的質心位置為:
然后根據M00調整搜索窗口的大小,并將搜索窗口的中心移動到質心,如果移動距離大于預設的固定閥值,則重新計算調整后的窗口質心,進行新一輪的窗口位置和尺寸調整。直到窗口中心與質心間的移動距離小于預設的固定閥值,或者循環運算的次數達到某一最大值,認為收斂條件滿足,進入下一幀圖像進行新的目標搜索。相對于當前幀,計算搜索窗口的二階矩M20,M02,M11:
假設:
那么下一幀中搜索窗口的長度(l) 和寬度(w) 分別為:
當用Camshift 算法對特定顏色的目標進行跟蹤時,不必計算每幀圖像所有像素點的顏色概率分布,只需計算比當前搜索窗大一些的區域內的像素點的顏色概率分布,這樣可大大減少計算量。視頻序列一幀一幀變化時,就形成了連續的跟蹤。
2 算法的改進
因為被跟蹤的目標形狀大小是不規則的,并且容易受到相似顏色的干擾,當被跟蹤的目標在受到相似的顏色干擾時,跟蹤窗口的大小就會改變,甚至是丟失。但是Camshift算法只是通過查詢目標的顏色直方圖模型計算目標區域內像素的概率,并沒有考慮到被跟蹤目標的形狀。為了解決這一問題,我們可以設置被跟蹤物體的長度H和寬度W,并設置Δh,Δω的值,使得被跟蹤的窗口的大小在范圍之內。當被跟蹤的窗口超過這個范圍時,就表示受到外界顏色的干擾,則強制把搜索窗口的大小約束到這個范圍之內。
此外,為了防止被跟蹤的目標在跟蹤中丟失,可以對Camshift算法輸出的質心坐標進行預測,并將輸出送回Camshift算法進行窗口質心坐標的更新,在這里我們采用簡單的運動預測。假設目標在短時間內作勻速直線運動,設Δx和Δy為目標分別在水平和垂直方向上的預測位移,然后將搜索窗口按Δx和Δy進行平移,若目標像素有一部分落在窗口內,即可以繼續進行Camshift搜索。
3 實驗結果及分析
本實驗在Intel Core 2.0GHz的CPU、1GB內存的電腦上,在Windows XP系統下使用VC++6.0和OpenCV編寫完成。本系統既可以對室內環境中運動的物體進行檢測和跟蹤,也可以對室外環境中獲取的視頻流文件進行檢測和跟蹤;對室外環境我們選取的是在公路上行駛的汽車的運動的檢測與跟蹤。
圖2表示的是在室內環境下對目標物體的實時跟蹤,由圖2可知系統能夠對于進入目標區域中的運動目標實時的檢測出來。
圖3表示的是對視頻文件中讀取視頻流對汽車的跟蹤,由圖3可以看出通過觀察視頻處理結果,發現視頻流能夠流暢的顯示,并沒有出現停滯和跳幀的情況,說明實時性比較好。
4 結束語
本文的跟蹤算法是以Camshift算法為核心的,本實驗主要是對室內的目標物體和視頻流中的目標物體進行跟蹤的。通過對本系統的測試可以看出該系統在功能性,實時性和魯棒性等方面比較好。但是當受到大面積類似目標顏色的干擾時,Camshift算法的跟蹤效果不是很好。這些問題需要在后續工作中進一步研究。
參考文獻:
[1] Bradski G R. Computer Video Face Tracking for use in a Perceptual User Interface[EB/OL].
[2] COMANICIUD, MEERP. Robust Analysis of Feature Spaces: Color Image egmentation[C].In International Conference on Computer Vision and Pattern Recognition ,San Juan,Puerto Rico,1997:750-755.
[3] 董蓓,謝勤嵐,賈茜.基于Camshift算法的運動目標實時跟蹤系統[J].自動化技術,2007-04-15:115-117.
[4] Cheng Y. Mean Shift, Mode Seeking, and Clustering[J].IEEE Trans. Pattern Anal. Machine Intell.1995(17):790-799.
[5] 張志宏,張金換,岳卉.基于CamShift 的目標跟蹤算法[J].計算機工程與設計,2006,27(11):25-27.