摘 要:提出改進的Camshift算法跟蹤手勢,首先用Haar特征和單高斯膚色模型定位手掌手勢,將手掌手勢的外接矩形作為Camshift初始搜索窗口,從而實現(xiàn)全自動跟蹤;用面向?qū)ο蟮乃枷雽amshfit算法封裝成類,為每個手勢建立一個類對象,從而實現(xiàn)雙手手勢跟蹤;在跟蹤過程中加入Kalman濾波算法預(yù)測手勢位置,避免目標(biāo)丟失問題。
關(guān)鍵詞:手勢跟蹤;膚色模型;Haar特征;Camshfit;Kalman
中圖分類號:TP391
手勢跟蹤是計算機視覺領(lǐng)域研究熱點之一。人手是柔性物體,自由度大且手勢變化多樣,給跟蹤帶來很大困難。Camshift算法[1][4],具有速度快、魯棒性好的優(yōu)點,對跟蹤目標(biāo)的形變不敏感,可以應(yīng)用在手勢跟蹤中。但Camshift有三個重要的缺點:(1)需手動初始化跟蹤窗口,是一種半自動化的算法;(2)初始化窗口操作只能進行一次,意味著Camshift只能進行單目標(biāo)跟蹤;(3)由于沒有預(yù)測機制,在目標(biāo)被嚴(yán)重遮擋、受大面積相似背景顏色干擾或運動速度過快的情況下,易丟失跟蹤目標(biāo)。針對Camshift這三個缺點,本文提出了改進的算法。
1 手掌手勢定位算法
1.1 基于Haar特征和Adaboost算法訓(xùn)練手掌手勢分類器
Paul Viola和Michael Jones[2]提出了Haar特征和Adaboost算法。Haar特征包括五個基本矩形特征,如圖1所示。前兩個表示圖像的邊緣特征,中間兩個表示線性特征,最后一個表示中心特征。
圖1 Haar基本特征
Adaboost的中心思想是把多個弱分類器疊加成一個強分類器,再把多個強分類器級聯(lián)起來,從而提高分類器的精度。本文采用200個正樣本、1000個負(fù)樣本、24*24的檢測窗口,訓(xùn)練出一個手掌手勢分類器。
圖2 手掌手勢正樣本和負(fù)樣本
1.2 單高斯膚色模型
研究表明,在YCbCr顏色空間中膚色的聚類性較好且服從正態(tài)分布。設(shè)膚色像素點在YcbCr顏色空間內(nèi)服從正態(tài)分布N(M,C),M表示均值向量,C表示協(xié)方差矩陣,則:
其中,x=[Cb,Cr]T表示一個輸入像素的色度向量,x代表的像素點是膚色點的概率為:
對于輸入圖像的每個像素點xi,計算出對應(yīng)的膚色概率P(xi),歸一化到[0,256]灰度級空間,即可得到膚色概率分布圖。像素點值越大,是膚色的概率越高;反之,像素點值越小,是膚色的概率越低,如圖3所示。
圖3 膚色概率分布圖
1.3 手掌手勢定位算法
本文提出一種結(jié)合Haar特征和單高斯膚色模型的手掌檢測方法:首先用訓(xùn)練好的Haar特征文件檢測視頻幀,得出候選手掌區(qū)域,其中可能包含誤檢區(qū)域;然后利用單高斯膚色模型,求出每個候選區(qū)域的膚色概率分布圖;最后用Otsu算法二值化膚色概率分布圖,計算每個候選區(qū)域中膚色面積的比例,若大于一個閾值(本文設(shè)為0.7),則判定為真實手掌區(qū)域;反之,則判定為誤檢的區(qū)域。若恰好有兩個候選區(qū)域符合要求,則視為定位雙手手掌手勢成功。
2 結(jié)合Camshift和Kalman濾波的手勢跟蹤算法
2.1 Camshfit算法
利用目標(biāo)的顏色分布進行跟蹤,算法包括三個部分:
(1)Back Project算法:將圖像的顏色空間從RGB轉(zhuǎn)到HSV,提取H分量,計算H分量的直方圖模型,用直方圖模型中的統(tǒng)計值代替源像素點值,生成反向投影圖;
(2)Mean Shift算法:設(shè)I(x,y)表示目標(biāo)的反向投影圖,計算零階矩:M00=ΣxΣyI(x,y),計算一階矩:M10=ΣxΣyx·I(x,y),M01=ΣxΣyy·I(x,y)。搜索窗口內(nèi)反向投影圖的質(zhì)心為(xc,yc)=(M10/M00,M01/M00)。計算搜索窗口寬度w和長度l:,l=1.2w。將搜索窗口的中心移動到質(zhì)心(xc,yc),重復(fù)以上步驟,直到滿足收斂條件或移動距離小于設(shè)定的閾值。
(3)Camshift算法:將Mean Shift算法應(yīng)用在視頻流連續(xù)的幀中,把上一幀的跟蹤結(jié)果窗口作為下一幀的初始化搜索窗口,不斷迭代下去,從而實現(xiàn)連續(xù)的目標(biāo)跟蹤。
2.2 Kalman濾波算法
Kalman濾波是一個最優(yōu)化自回歸數(shù)據(jù)處理算法[3],中心思想是通過“預(yù)測—測量—修正”的方式不斷估計系統(tǒng)的最優(yōu)值,原理如下:
(1)預(yù)測方程:X′k=A·X′k-1+Wk P′k=A·P′k-1·AT+Q
(2)測量方程:Zk=H·Xk+Vk
其中,Xk表示狀態(tài)向量,A表示狀態(tài)轉(zhuǎn)移矩陣,P′k表示誤差協(xié)方差矩陣;Zk表示測量向量,H表示測量矩陣,Wk和Vk是協(xié)方差分別為Q和R的高斯白噪聲。
(3)修正方程:Xk=X′k+Kk·(Zk-H·X′k) Pk=(I-Kk·H)·P′k
其中Kk表示Kalman增益系數(shù):Kk=P′k·HT·(H·P′k·HT+R)-1
在實際使用時,需初始化狀態(tài)轉(zhuǎn)移矩陣A,測量矩陣H,狀態(tài)向量Xk-1,誤差協(xié)方差矩陣Pk-1。
2.3 本文算法流程
(1)應(yīng)用2.3節(jié)中的手掌檢測算法,定位兩個手掌手勢并得出其外接矩形坐標(biāo),假設(shè)為初始矩形1和初始矩形2,兩個手勢分別為目標(biāo)1和目標(biāo)2;
(2)將Camshift封裝成類,為目標(biāo)1和2建立兩個Camshift類對象,對雙手進行獨立跟蹤;
(3)分別初始化兩個Camshift類對象的初始搜索窗口為初始矩形1和2,實現(xiàn)Camshift的全自動跟蹤;
(4)將Kalman封裝成類,分別為目標(biāo)1和2建立兩個Kalman類對象。使用Kalman濾波算法,首先要建立目標(biāo)的運動方程。由于連續(xù)兩幀時間間隔很短,可以把手勢運動看成勻速運動。這樣只需知道上一幀手勢中心點坐標(biāo)(xk-1,yk-1)和速度(vxk-1,vyk-1),就可得出預(yù)測公式和測量公式:
(5)FOR EACH FRAME IN VIDEO…DO:1)用Kalman預(yù)測目標(biāo)1和2的中心點,設(shè)為K1和K2;2)設(shè)置Camshift搜索窗口的中心點為Kalman預(yù)測的目標(biāo)中心點,即:Camshift類對象1的搜索窗口中心點為K1,Camshift類對象2的搜索窗口中心點為K2。搜索窗口的大小設(shè)為上一幀跟蹤結(jié)果窗口的大??;3)運行Camshift算法,記錄兩個Camshift類對象跟蹤結(jié)果窗口中心點坐標(biāo)C1和C2,此坐標(biāo)作為Kalman濾波的測量值,即:Z1=C1,Z2=C2;4)根據(jù)Kalman修正公式,用Z1和Z2修正Kalman預(yù)測結(jié)果。
(6)視頻結(jié)束,跳出步驟(5)的循環(huán),算法結(jié)束。
2.4 實驗結(jié)果分析
實驗軟件環(huán)境:Win7,VS 2012和OpenCV 2.4.5;硬件環(huán)境:Intel Pentium CPU-2.3G,2G內(nèi)存。視頻分辨率為640*480,24FPS。如圖5所示,手掌手勢定位階段,在16幀時成功定位雙手手掌,其中有2幀誤檢,無漏檢。結(jié)合單高斯膚色模型,手掌定位準(zhǔn)確率為100%。跟蹤階段,藍色點是上一幀中Kalman修正值,紅色點是Kalman預(yù)測值,綠色點是Camshift的跟蹤結(jié)果,即測量值。跟蹤過程中沒有出現(xiàn)目標(biāo)丟失的情況,可以實現(xiàn)實時跟蹤。
圖5 實驗結(jié)果圖
3 結(jié)束語
針對Camshift半自動化、不能跟蹤多目標(biāo)、容易受到干擾而丟失目標(biāo)的問題,本文提出了一種雙手徒手手勢全自動跟蹤的新方法。用Haar檢測和單高斯膚色模型算法檢測手掌手勢,作為Camshift跟蹤的初始化輸入,解決半自動問題;將Camshift封裝成類使其可以進行多目標(biāo)跟蹤;在跟蹤過程中加入Kalman濾波器對手勢位置進行預(yù)測,解決目標(biāo)易丟失問題。經(jīng)驗證,該方法魯棒性好,時間復(fù)雜度低,能滿足實時性要求。
參考文獻:
[1]Bakowski,A,Jones,G.A.Video surveillance tracking using color region adjacency graphs.Seventh International Conference on Image Processing and Its application in 1999.
[2]Viola P,Jones M.Rapid object detection using a boosted cascade of simple features[C]//Computer Vision and Pattern Recognition,2001.CVPR 2001.Proceedings of the 2001 IEEE Computer Society Conference on.IEEE,2001,1:511-518.
[3]Kalman R E.A new approach to linear filtering and prediction problems[J].Journal of basic Engineering,1960(01):35-45.
[4]唐文平.基于Camshift的手勢識別跟蹤系統(tǒng)[D].西安電子科技大學(xué),2012.
作者簡介:王海鵬(1989-),男,安徽宿州人,研究生在讀,研究方向:計算機多媒體;葉福川(1983-),男,四川達州人,研究生在讀,研究生方向:網(wǎng)絡(luò)教育;尹治本(1954-),男,云南騰沖人,教授,研究生,研究方向:數(shù)字視頻圖像處理。
作者單位:西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 610031;西南民族大學(xué) 現(xiàn)代教育技術(shù)中心,成都 610041