王穎??王玉蘋
摘要:實(shí)現(xiàn)基于序列圖像的手勢軌跡識別,提出一種基于位置關(guān)系的手勢軌跡識別方法,利用Kinect體感設(shè)備傳感器提取軌跡序列,分析坐標(biāo)序列的軌跡樣本,通過黃金分割實(shí)現(xiàn)軌跡的匹配與識別。實(shí)驗(yàn)結(jié)果證明,該方法能有效識別手勢軌跡。
關(guān)鍵詞關(guān)鍵詞:Kinect;手勢識別;黃金分割搜索;樣本軌跡;算法
DOIDOI:10.11907/rjdk.143891
中圖分類號:TP312
文獻(xiàn)標(biāo)識碼:A文章編號文章編號:16727800(2015)002005402
基金項目基金項目:北京服裝學(xué)院2014年青年創(chuàng)新基金項目(2014AL-34 )
作者簡介作者簡介:王穎(1975- ),女,河北保定人,碩士,北京服裝學(xué)院計算機(jī)信息中心講師,研究方向?yàn)槿藱C(jī)交互技術(shù)。
0引言
在人機(jī)交互中,手勢具有直觀性、自然性的特點(diǎn),其已成為人機(jī)交互的一種重要手段[1,2]。手勢軌跡是按照某種規(guī)則識別出揮動手臂所要表達(dá)的含義,手勢軌跡信息應(yīng)用有很強(qiáng)的可移植性和可擴(kuò)展性。然而,基于視覺的手勢軌跡識別的前期分割易受光照、背景、攝像頭特性等因素影響,識別率不高。微軟的Kinect體感設(shè)備通過傳感器識別人體關(guān)節(jié)的位置坐標(biāo),獲取有關(guān)數(shù)據(jù),為手勢軌跡識別提供了良好的基礎(chǔ)[3,4]。利用Kinect坐標(biāo)信息軌跡對深度圖像進(jìn)行手勢分割和識別,不受光照、背景等因素的影響,從而提高了手勢軌跡識別的穩(wěn)定性和魯棒性。
1基于樣本的動作檢測
假設(shè)動作可以被記錄并序列化,如果當(dāng)前動作是已發(fā)生動作中的一個,那么其就可以被檢測出來。主要方式是快速比較兩個動作的數(shù)據(jù)是否匹配[5,6]。動作是一系列坐標(biāo)序列,通過坐標(biāo)記錄其到傳感器的距離,因此需要研究數(shù)據(jù)比較算法,將規(guī)格化數(shù)據(jù)變換到一個統(tǒng)一的參考空間下。
假設(shè):當(dāng)前坐標(biāo)序列為:
P={p0,p1,…,pn-1}
(1)生成具有特定數(shù)量的坐標(biāo)點(diǎn)的動作。
假設(shè)樣本數(shù)量為M,定義采樣間距Lavg=(n-1)/(M-1),pi-1與pi之間的距離為Li,i-1。在根據(jù)樣本數(shù)量對坐標(biāo)序列進(jìn)行采樣的過程中,需要重新計算采樣點(diǎn)的新坐標(biāo)。做法是遍歷坐標(biāo)序列的點(diǎn),如當(dāng)前點(diǎn)與前一個采樣點(diǎn)的距離達(dá)不到采樣間距,繼續(xù)往前遍歷,當(dāng)達(dá)到或者超過采樣間距時,則計算新的坐標(biāo)點(diǎn)。定義遍歷時累計的距離變量Lcur,當(dāng)Lcur+LI,i-1>=Lavgcur時,計算新的坐標(biāo)點(diǎn):
p′i=pi-1+(Lavg-Lcur/Li,i-1)*(pi-pi-1)(1)
得到新的坐標(biāo)序列:
P′={p′0,p′1,…,p′n-1}
(2)旋轉(zhuǎn)坐標(biāo)點(diǎn),使得第一個點(diǎn)的方向角度為0。
為使匹配的兩個序列有統(tǒng)一的起點(diǎn),將坐標(biāo)序列旋轉(zhuǎn),從而使第一個坐標(biāo)點(diǎn)的方向角度為0。計算坐標(biāo)序列的中心坐標(biāo),并得到第一個坐標(biāo)點(diǎn)相對于中心坐標(biāo)的方向角。以此方向角為旋轉(zhuǎn)角度,利用二維空間旋轉(zhuǎn)矩陣得到新的坐標(biāo)序列。
(3)將坐標(biāo)值映射到[0,1]區(qū)間。
如得到的坐標(biāo)序列的數(shù)值范圍不統(tǒng)一,將帶來匹配的不準(zhǔn)確性。為此,需要將坐標(biāo)范圍統(tǒng)一到[0,1]區(qū)間內(nèi)。
(4)規(guī)格化動作序列點(diǎn)的原點(diǎn)。
經(jīng)過上述處理,動作軌跡的序列點(diǎn)具備了統(tǒng)一的方向和坐標(biāo),還需對原點(diǎn)進(jìn)行處理,以便具有與樣本相同的參考點(diǎn)。規(guī)格化步驟如圖1所示。
經(jīng)過規(guī)格化操作,即可進(jìn)行匹配。將長度一樣的坐標(biāo)點(diǎn)序列規(guī)格化為統(tǒng)一的尺度、方向和中心。
黃金分割搜索(Golden Section Search)[7]是一種通過不斷縮小單調(diào)連續(xù)函數(shù)極值的范圍,找到極值的方法。利用黃金分割搜索方法不需使用導(dǎo)數(shù)求取函數(shù)的極值,具有很強(qiáng)的實(shí)時性和便捷性。
假設(shè)函數(shù)f(x)在[a, b]上連續(xù),并且是單調(diào)函數(shù),即f(x)在[a, b]間只有一個極小值,或者只有一個極大值。使用對分方法,通過比較函數(shù)值將包含極值的區(qū)間變小。所設(shè)計的算法需滿足兩個目標(biāo):一是在區(qū)間檢索中能夠找到最優(yōu)的區(qū)間減小因子;二是減少函數(shù)調(diào)用的次數(shù)。
圖1軌跡序列規(guī)格化
計算中間點(diǎn)m=(a+b)/2,求x1和x2,定義x1=m-δ/2,x2=m+δ/2,使得f(x1)≠f(x2)。如果f(x1) 圖2為找出最小值的步驟。F(x)的函數(shù)值位于垂直坐標(biāo)軸上,參數(shù)x位于水平坐標(biāo)軸??梢钥闯?,有3個位于函數(shù)f(x)上的值被計算出來:x1,x2和x3。可見f(x2)小于f(x1)和f(x3), 所以很明顯的,最小值處于x1和x3之間。 圖2最小值求解 接下來的步驟是計算函數(shù)位于另一個點(diǎn)x4的值。從圖2可以看出,如果函數(shù)值落在f4a,最小值則在x1和x4之間新的點(diǎn)將是x1,x2或x4;如果函數(shù)值為f4a,新的點(diǎn)將是x2,x4或x3。因此,無論是哪種情況,都可以建立一個新的更狹窄的區(qū)間,用于搜索函數(shù)的最小值。 為提高算法效率,只在每個步驟中只求一次函數(shù)值。相對于當(dāng)前檢索區(qū)間,需要設(shè)立一個常數(shù)因子,稱為c。在區(qū)間[a,b]中的為x1和x2,有以下兩種情況: (1)如f(x1) x2-a=c(b-a)x2=a+cb-cax2=(1-c)a+cb(2) (2)如果f(x1)>f(x2),為使[a,b]=[x1,b],區(qū)間作如下調(diào)整: b-x1=c(b-a)-x1=cb-ca-bx1=ca+(1-c)b(3) 這樣,只要求出C,就可以得到位置x1和x2。不失一般性,考慮f(x1) 如果f(x1) (1)假設(shè)在x1=1-c的左邊得到新的函數(shù)值,那么x1是區(qū)間[0,c]右邊界,由式(2)得 1-c=(1-c)0+ccc2+c-1=0(4) c=(-1+5)/2≈0.6180。 (2)假設(shè)在x1=1-c的右邊得到新的函數(shù)值,那么x1是區(qū)間[0,c]的左邊界。 1-c=c0+(1-c)c(1-c)2=0(5) 由式(5)得c=1, 這樣區(qū)間就沒有減小,排除這種可能性,有規(guī)則如下:如果f(x1) 2實(shí)驗(yàn)結(jié)果 利用本文算法進(jìn)行測試實(shí)驗(yàn),完成兩種手勢:一個是左右揮動,一個是圓形手勢。分別采集了5個人的手勢軌跡,每個手勢每個人做10次。如圖3所示,左圖手向左運(yùn)動代表向左揮動,右圖代表圓形手勢, 圖中的虛線為手運(yùn)動軌跡。 圖3手勢識別結(jié)果 表1給出了5個實(shí)驗(yàn)者和2種手勢的識別率,可以看出,本文算法具有很高的識別率,滿足應(yīng)用需求。 表1二種手勢的識別數(shù)據(jù)分析 手勢[]向左揮動[]向右揮動[]圓形揮動 實(shí)驗(yàn)次數(shù)[]50[]50[]50 識別次數(shù)[]50[]49[]46 識別率(%)[]100[]98[]92 3結(jié)語 手勢具有直觀性、自然性的特點(diǎn),其已成為人機(jī)交互的一種重要手段。手勢軌跡則是按照某種規(guī)則識別出手勢表達(dá)的含義,手勢軌跡信息的應(yīng)用有很強(qiáng)的可移植性和可擴(kuò)展性。本文采用微軟Kinect傳感器獲取相關(guān)數(shù)據(jù),對圖像進(jìn)行手勢分割和識別,不受光照、背景等因素的影響,提高了手勢軌跡識別的穩(wěn)定性和魯棒性。