摘要:CamShift算法是一種實(shí)時(shí)的跟蹤算法,它是利用目標(biāo)的顏色直方圖模型得到每幀圖像的顏色投影圖,并根據(jù)上一幀跟蹤的結(jié)果自適應(yīng)調(diào)整搜索窗口的位置和大小,從而得到當(dāng)前圖像中目標(biāo)的尺寸和中心位置。本系統(tǒng)主要是基于CamShift的算法設(shè)計(jì)一個(gè)對(duì)運(yùn)動(dòng)目標(biāo)跟蹤檢測(cè)系統(tǒng),本系統(tǒng)既可以對(duì)室內(nèi)環(huán)境的運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤,也可以對(duì)視頻流中的運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤。
關(guān)鍵詞:實(shí)時(shí);目標(biāo)檢測(cè);CamShift算法;視頻流
中圖分類號(hào):TP391文獻(xiàn)標(biāo)識(shí)碼:B文章編號(hào):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
隨著計(jì)算機(jī)技術(shù)的進(jìn)步,圖象處理技術(shù)在工農(nóng)業(yè)生產(chǎn)、醫(yī)療設(shè)備及其它經(jīng)濟(jì)領(lǐng)域得到越來(lái)越廣泛的應(yīng)用,由于動(dòng)態(tài)圖象所含的信息量非常大,在處理過(guò)程中對(duì)處理機(jī)的要求非常高,Camshift跟蹤算法[1]受到越來(lái)越多的關(guān)注。Camshift算法是在Mean Shift算法[2]基礎(chǔ)上演變而來(lái)的,是一種靈活的運(yùn)用統(tǒng)計(jì)調(diào)查方法來(lái)尋找分布概率的模式。這是一種非常簡(jiǎn)單快捷的跟蹤方法,因?yàn)镃amshift算法是跟蹤物體的中心和大小的概率分布,典型的概率分布是來(lái)自直方圖。這種算法充分的體現(xiàn)了目標(biāo)跟蹤及時(shí)性的特點(diǎn),在動(dòng)態(tài)圖像中使用它來(lái)跟蹤運(yùn)動(dòng)的物體方便而且快速。Camshift算法能夠自動(dòng)調(diào)節(jié)窗口大小以適應(yīng)被跟蹤目標(biāo)在圖像中的大小,其實(shí)時(shí)性和魯棒性都比較好。
1 CamShift算法原理
CamShift是一種實(shí)時(shí)的跟蹤算法,其準(zhǔn)確性和魯棒性比較好。目前主要用于“用戶感知界面”中的人臉識(shí)別和跟蹤以及半自動(dòng)的運(yùn)動(dòng)目標(biāo)跟蹤[3]。根據(jù)對(duì)跟蹤算法的分類可知,一方面,CamShift算法應(yīng)該屬于基于區(qū)域的方法,它利用區(qū)域內(nèi)的顏色信息對(duì)目標(biāo)進(jìn)行跟蹤,另一方面,CamShift算法卻是一種非參數(shù)方法,它是通過(guò)聚類的方式搜尋運(yùn)動(dòng)目標(biāo)的。
使用CamShift的算法必須先將RGB顏色空間轉(zhuǎn)化為HSV顏色空間,然后再利用H分量的直方圖建立顏色概率模型。CamShift的算法流程如圖1所示。首先選擇初始搜索窗口,然后對(duì)窗口中每個(gè)像素的H通道上的值采樣,從而得到目標(biāo)的色調(diào)(Hue)直方圖,將該直方圖保存下來(lái)作為目標(biāo)的顏色直方圖模型。在跟蹤過(guò)程中,對(duì)視頻圖像處理區(qū)域中的每一個(gè)像素,通過(guò)查詢目標(biāo)的顏色直方圖模型,可以得到該像素為目標(biāo)像素的概率,圖像處理區(qū)域之外的其他區(qū)域作為概率為0 的區(qū)域。經(jīng)上述處理,視頻圖像轉(zhuǎn)換為目標(biāo)顏色概率分布圖,也稱為目標(biāo)顏色背投圖。為便于顯示,將投影圖轉(zhuǎn)化為8位的灰度投影圖,概率為1 的像素值設(shè)為255 ,概率為0的像素值為0,其他像素也轉(zhuǎn)換為相應(yīng)的灰度值。所以灰度投影圖中越亮的像素表明該像素為目標(biāo)像素的可能性越大。
設(shè)(x,y)為搜索窗口中的像素點(diǎn),I(x,y)是投影圖中對(duì)應(yīng)(x,y)點(diǎn)的像素值。定義搜索窗口的零階矩M00 和一階矩M10,M01如下:
可以求得搜索窗口內(nèi)的質(zhì)心位置為:
然后根據(jù)M00調(diào)整搜索窗口的大小,并將搜索窗口的中心移動(dòng)到質(zhì)心,如果移動(dòng)距離大于預(yù)設(shè)的固定閥值,則重新計(jì)算調(diào)整后的窗口質(zhì)心,進(jìn)行新一輪的窗口位置和尺寸調(diào)整。直到窗口中心與質(zhì)心間的移動(dòng)距離小于預(yù)設(shè)的固定閥值,或者循環(huán)運(yùn)算的次數(shù)達(dá)到某一最大值,認(rèn)為收斂條件滿足,進(jìn)入下一幀圖像進(jìn)行新的目標(biāo)搜索。相對(duì)于當(dāng)前幀,計(jì)算搜索窗口的二階矩M20,M02,M11:
假設(shè):
那么下一幀中搜索窗口的長(zhǎng)度(l) 和寬度(w) 分別為:
當(dāng)用Camshift 算法對(duì)特定顏色的目標(biāo)進(jìn)行跟蹤時(shí),不必計(jì)算每幀圖像所有像素點(diǎn)的顏色概率分布,只需計(jì)算比當(dāng)前搜索窗大一些的區(qū)域內(nèi)的像素點(diǎn)的顏色概率分布,這樣可大大減少計(jì)算量。視頻序列一幀一幀變化時(shí),就形成了連續(xù)的跟蹤。
2 算法的改進(jìn)
因?yàn)楸桓櫟哪繕?biāo)形狀大小是不規(guī)則的,并且容易受到相似顏色的干擾,當(dāng)被跟蹤的目標(biāo)在受到相似的顏色干擾時(shí),跟蹤窗口的大小就會(huì)改變,甚至是丟失。但是Camshift算法只是通過(guò)查詢目標(biāo)的顏色直方圖模型計(jì)算目標(biāo)區(qū)域內(nèi)像素的概率,并沒(méi)有考慮到被跟蹤目標(biāo)的形狀。為了解決這一問(wèn)題,我們可以設(shè)置被跟蹤物體的長(zhǎng)度H和寬度W,并設(shè)置Δh,Δω的值,使得被跟蹤的窗口的大小在范圍之內(nèi)。當(dāng)被跟蹤的窗口超過(guò)這個(gè)范圍時(shí),就表示受到外界顏色的干擾,則強(qiáng)制把搜索窗口的大小約束到這個(gè)范圍之內(nèi)。
此外,為了防止被跟蹤的目標(biāo)在跟蹤中丟失,可以對(duì)Camshift算法輸出的質(zhì)心坐標(biāo)進(jìn)行預(yù)測(cè),并將輸出送回Camshift算法進(jìn)行窗口質(zhì)心坐標(biāo)的更新,在這里我們采用簡(jiǎn)單的運(yùn)動(dòng)預(yù)測(cè)。假設(shè)目標(biāo)在短時(shí)間內(nèi)作勻速直線運(yùn)動(dòng),設(shè)Δx和Δy為目標(biāo)分別在水平和垂直方向上的預(yù)測(cè)位移,然后將搜索窗口按Δx和Δy進(jìn)行平移,若目標(biāo)像素有一部分落在窗口內(nèi),即可以繼續(xù)進(jìn)行Camshift搜索。
3 實(shí)驗(yàn)結(jié)果及分析
本實(shí)驗(yàn)在Intel Core 2.0GHz的CPU、1GB內(nèi)存的電腦上,在Windows XP系統(tǒng)下使用VC++6.0和OpenCV編寫(xiě)完成。本系統(tǒng)既可以對(duì)室內(nèi)環(huán)境中運(yùn)動(dòng)的物體進(jìn)行檢測(cè)和跟蹤,也可以對(duì)室外環(huán)境中獲取的視頻流文件進(jìn)行檢測(cè)和跟蹤;對(duì)室外環(huán)境我們選取的是在公路上行駛的汽車的運(yùn)動(dòng)的檢測(cè)與跟蹤。
圖2表示的是在室內(nèi)環(huán)境下對(duì)目標(biāo)物體的實(shí)時(shí)跟蹤,由圖2可知系統(tǒng)能夠?qū)τ谶M(jìn)入目標(biāo)區(qū)域中的運(yùn)動(dòng)目標(biāo)實(shí)時(shí)的檢測(cè)出來(lái)。
圖3表示的是對(duì)視頻文件中讀取視頻流對(duì)汽車的跟蹤,由圖3可以看出通過(guò)觀察視頻處理結(jié)果,發(fā)現(xiàn)視頻流能夠流暢的顯示,并沒(méi)有出現(xiàn)停滯和跳幀的情況,說(shuō)明實(shí)時(shí)性比較好。
4 結(jié)束語(yǔ)
本文的跟蹤算法是以Camshift算法為核心的,本實(shí)驗(yàn)主要是對(duì)室內(nèi)的目標(biāo)物體和視頻流中的目標(biāo)物體進(jìn)行跟蹤的。通過(guò)對(duì)本系統(tǒng)的測(cè)試可以看出該系統(tǒng)在功能性,實(shí)時(shí)性和魯棒性等方面比較好。但是當(dāng)受到大面積類似目標(biāo)顏色的干擾時(shí),Camshift算法的跟蹤效果不是很好。這些問(wèn)題需要在后續(xù)工作中進(jìn)一步研究。
參考文獻(xiàn):
[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算法的運(yùn)動(dòng)目標(biāo)實(shí)時(shí)跟蹤系統(tǒng)[J].自動(dòng)化技術(shù),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 的目標(biāo)跟蹤算法[J].計(jì)算機(jī)工程與設(shè)計(jì),2006,27(11):25-27.