劉美枝,楊 磊,高 海
(山西大同大學(xué)物理與電子科學(xué)學(xué)院,山西大同037009)
運動目標跟蹤一直以來都是機器視覺的一個重要研究方向,但是,環(huán)境背景和目標姿態(tài)發(fā)生變化,或者多目標出現(xiàn)相互干擾等因素都會加大目標跟蹤的難度。在目標跟蹤過程中,選用較好的目標特征和合適的搜索算法很重要。目標跟蹤算法主要從提高搜索匹配的速度和精度兩個方面來對運動目標的性能加以提高[1]。CamShift(Continuosly Adaptive Mean-Shift)算法是一種經(jīng)典的運動目標跟蹤算法,但該算法僅僅依靠目標的顏色特征,當出現(xiàn)相近顏色的目標或背景時,都會使跟蹤發(fā)生漂移,甚至失效。針對該問題,本文通過融合角點特征對CamShift算法進行改進,進而實現(xiàn)目標準確穩(wěn)定地跟蹤。
角點[2]是圖像的一個重要局部特征,Harris角點在光照、噪聲、旋轉(zhuǎn)、平移及灰度變化時具有不變性,所以在目標跟蹤領(lǐng)域有著重要的意義[3-5]。Harris 角點最直觀的解釋就是,在兩個相互垂直的方向,都有較大變化的點,數(shù)學(xué)描述如下。首先,定義自相關(guān)函數(shù):
在Harris角點檢測中,使用的是高斯窗口,wu,v表示的是高斯窗口中的權(quán)重。I為灰度值,E(x,y)表示的是圖像偏移導(dǎo)致窗口內(nèi)像素的平均變化。若窗口不變,則E(x,y)為x,y的函數(shù)。Harris 角點是當(x,y)在兩個相互垂直的方向上,E(x,y)取較大值的點。
若令D(x,y)=Ix+u,y+v-Iu,v,則D(x,y)在原點(0,0)Taylor展開,得到
顯然有D(0,0)=Ix,y-Ix,y=0 ,將高階無窮小0(x2,y2)忽略,可以將
代入自相關(guān)函數(shù)
從而有
其中
那么E(x,y)可表示為
由于
那么A,B分別表示x,y方向窗口中圖像的一階差分平方和,C表示窗口中x方向與y方向一階差分的乘積。用sobel 算子[6-9]求一階差分,即I?(-1,0,1)和I?(-1,0,1)T。那么可得到H矩陣,該矩陣是對E(x,y)的Hessian 矩陣的近似??山柚l率域研究,令
從而得到H是Hessian 矩陣的另一種表達,由于求導(dǎo)運算并不嚴格,所以只能認為這是一種近似。Harris 可以對任意方向統(tǒng)計,對于一個給定方向,只要取到合適(x,y),就能統(tǒng)計(x,y)對應(yīng)角度上窗口灰度值發(fā)生的變化。
如何去計算這個合適的(x,y)呢,對每一個角度都去計算,顯然是不合適的。這要從Harris 角點的定義來考慮,前面已經(jīng)說過Harris角點是當(x,y)取兩組相互垂直的值時,E(x,y)都取得較大值對應(yīng)的點。所以,首先考慮找出使E(x,y)取最大值的(x,y),如果該方向E(x,y)有較大的取值,再考慮其垂直方向。
要判斷一個點是否為特征點,本質(zhì)上是要求該點的H矩陣,以及H矩陣的兩個特征值的分布情況。
應(yīng)用Harris角點檢測方法提取圖像中角點的過程可以分成以下幾步:
1)計算每一幀圖像中像素點在水平方向和垂直方向上的梯度,以及兩者乘積的運算結(jié)果,得到一個如下所示的M矩陣:
2)對圖像進行高斯濾波,重新得到M矩陣。
3)計算圖像上對應(yīng)的每一個像素點的R值
式中:α為經(jīng)驗值,取值范圍介于[0.04,0.06]。
4)選取局部極值點。特征點反映的是局部范圍內(nèi)R極大值對應(yīng)的像素點。
5)設(shè)定閾值,選取一定的角點。
在實際應(yīng)用中,由于目標遮擋,形變等易造成部分角點丟失,而且由于Harris 角點檢測算法是通過手動設(shè)置閾值,實驗發(fā)現(xiàn):當取大閾值時,其提取的角點較準確,但是不能完全反映目標的角點信息;當取小閾值時,易產(chǎn)生虛假角點。在這樣的情況下,兩幅圖像提取到的角點個數(shù)不一定相等,這時就很有必要對它們進行角點匹配,得出一一對應(yīng)的角點對。
傳統(tǒng)的NCC 匹配算法[10-12]計算量比較大,復(fù)雜度較高,而且會產(chǎn)生誤匹配等問題。本文在NCC匹配的基礎(chǔ)上進行改進,使用距離約束減少搜索的范圍,距離約束的前提條件是認為兩幅圖像的相對位置和旋轉(zhuǎn)角度變化均不大,認為兩幅圖像的投影點的位置也相差不大。若要在圖像I2中找出與圖像I1匹配的特征點時,只需要計算I1在I2中給定范圍內(nèi)的特征點的NCC值,對不在范圍之內(nèi)的特征點則不予計算。
采用BGNCC方法的匹配步驟如下:
1)第一幅圖像I1中的特征點記為di,i=1,2…m1 ,坐標表示為在第二幅圖像I2中對應(yīng)坐標位置的(-4n,4n)鄰域內(nèi)搜索特征點(可能無,一個或多個),記為dj,若存在特征點,以第一幅圖像I2中特征點di的n×n區(qū)域為匹配窗口計算與第二幅圖像I2中特征點dj,j=1,2…m2 的等大小的窗口的相關(guān)系數(shù)。設(shè)定閾值a,若Cjj大于a,將滿足條件的特征點即為匹配點,依次類推得到第一組匹配點集。
2)根據(jù)互匹配原理,按照上面的方法搜索第二幅圖像I2中特征點dj,j=1,2…m2 在第一幅圖像I1中的匹配點,得到第二組匹配點集。
3)(第一組特征點集)?(第二組特征點集),至此完成特征點匹配。
圖1是通過對兩幅圖像采用雙向最大歸一化相關(guān)系數(shù)進行特征點匹配的結(jié)果圖。
圖1 圖像角點匹配結(jié)果
由圖1 兩幅圖像的匹配結(jié)果可知,在相鄰兩幀圖像中目標變化緩慢的情況下,采用雙向最大歸一化相關(guān)系數(shù)進行特征點匹配,在很大程度上可以去除一部分虛假角點,有利于目標進行正確的匹配。
本文采用結(jié)合角點特征和顏色特征的Cam-Shift 目標跟蹤算法,僅用經(jīng)過匹配后的每個特征點周圍N×N的區(qū)域建立目標的相關(guān)模型,那么得到的新的目標模型以少量特征點信息表示目標區(qū)域的主要特征。由于Harris 角點檢測算法和匹配算法的復(fù)雜度較高[7],采用少量的關(guān)鍵點信息在一定程度上降低了整個算法的復(fù)雜度,增強目標與背景的可分性,加速目標的收斂,減少迭代次數(shù)。下面是結(jié)合角點特征的CamShift 算法的流程圖,其中k表示幀數(shù),初始值為0。其算法流程圖如圖2所示。
圖2 結(jié)合角點的CamShift算法流程圖
實驗環(huán)境為Windows XP 系統(tǒng),在Visual Studio2010 下編程實現(xiàn)。測試的視頻為室內(nèi)顏色相近的多目標在短時間相互干擾的跟蹤情況。在實驗中,目標的初始位置通過手動標記,先后采用傳統(tǒng)CamShift 跟蹤算法和本文算法進行跟蹤,通過對比跟蹤結(jié)果,驗證本文算法的可行性。
圖3 是采用傳統(tǒng)CamShift 跟蹤算法的跟蹤結(jié)果,從圖中可以看出,當兩輛小車相距較遠時,跟蹤情況良好,從第58幀開始,兩輛顏色相近的小車慢慢靠近,跟蹤框開始漂移,到第72幀跟蹤框包含了兩輛小車,整個跟蹤失敗。這是由于兩輛小車的顏色相近,而CamShift跟蹤算法只是簡單的依據(jù)顏色信息進行跟蹤,所以就會出現(xiàn)跟蹤漂移,誤差累積到一定程度,出現(xiàn)跟蹤失效。
圖3 傳統(tǒng)CamShift跟蹤算法的跟蹤結(jié)果
圖4 是采用本文跟蹤算法的跟蹤結(jié)果,從圖中可以看出,開始目標相距較遠時,跟蹤效果與傳統(tǒng)算法相似,都可以完成準確有效地跟蹤,當目標慢慢靠近時,跟蹤框稍有形變,但形變不大,跟蹤過程中可以自適應(yīng)地調(diào)整跟蹤框的大小和形狀,順利完成跟蹤。由此可知本文算法與傳統(tǒng)算法相比,在很大程度上減少了背景信息,充分利用目標信息,使得較短時間相互靠近的目標能夠完全分離。通過上面的實驗可知,加入角點特征可以改善由于顏色特征產(chǎn)生的跟蹤的不穩(wěn)定現(xiàn)象,提高了目標跟蹤的魯棒性。
圖4 本文跟蹤算法的跟蹤結(jié)果
表1是對實驗分別采用原始的CamShift算法和基于角點的CamShift算法的跟蹤性能比較結(jié)果。
表1 跟蹤算法性能比較
由表1知,改進后算法的平均誤差相比傳統(tǒng)的CamShift 跟蹤算法有所減少,但由于Harris 角點的提取和匹配過程的計算量比較大,復(fù)雜度較高,所以導(dǎo)致基于Harris角點的CamShift 跟蹤算法的每幀的迭代次數(shù)和平均處理時間比傳統(tǒng)的CamShift跟蹤算法大。
本文采用基于角點特征和顏色特征的CamShift目標跟蹤算法。首先進行Harris 角點提取,由于Harris 角點的提取過程中,閾值是人為設(shè)定的,而且受周圍環(huán)境的影響,每一幀中提取出來的角點的個數(shù)是不固定的,為了剔除虛假角點,確定目標的真實角點,采用BGNCC角點匹配方法,提取匹配后的角點特征周圍N×N區(qū)域,將此區(qū)域設(shè)為感興趣區(qū)域并生成直方圖,將生成的直方圖轉(zhuǎn)化為概率密度反向投影,最后利用MeanShift 算法搜索目標。實驗結(jié)果表明該算法能夠有效解決多目標運動時產(chǎn)生的干擾現(xiàn)象。