一種基于加速度傳感芯片的動作識別方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及一種基于加速度傳感芯片的動作識別方法。
【背景技術(shù)】
[0002]目前市面對動作傳感,動作識別的技術(shù)普遍使用圖形圖像識別方法,需要采用攝像頭,對使用者進行觀察,識別出使用者每一幀圖像中的肢體變動,判斷使用者的動作;
[0003]該實現(xiàn)方法具有精度高,響應(yīng)快,適用性強一些列有點,例如目前最為廣泛使用的體感類游戲機;但該方案同樣具有一些缺點:必須使用攝像頭進行圖像獲取,且被觀察對象需要距離攝像頭一個合適的距離,一般情況下,只能在室內(nèi)使用,而且攝像頭需要固定在一個位置,因此使用的范圍極為有限,對空間的要求很高。
【發(fā)明內(nèi)容】
[0004]為了克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種基于加速度傳感芯片的動作識別方法,實現(xiàn)單一傳感器識別用戶的手勢動作,計算出絕對的方向向量,準確判斷用戶手勢。
[0005]為解決上述問題,本發(fā)明所采用的技術(shù)方案如下:
[0006]—種基于加速度傳感芯片的動作識別方法,應(yīng)用于六軸加速度傳感器,包括以下步驟:
[0007]S1、計算減去重力后的加速度數(shù)據(jù),加速度數(shù)據(jù)包括ax、ay和az;
[0008]S2、獲取一個連貫動作中的所有加速度數(shù)據(jù),依次根據(jù)每個加速度數(shù)據(jù)計算對應(yīng)的夾角數(shù)據(jù),夾角數(shù)據(jù)包括ax、ay和αζ;其中,αχ為加速度向量與現(xiàn)實空間的X軸夾角,ay為加速度向量與現(xiàn)實空間的Y軸夾角,az為加速度向量與現(xiàn)實空間的Z軸夾角;
[0009]S3、將夾角數(shù)據(jù)依次存儲至數(shù)組active中,判斷數(shù)組active的長度是否在預(yù)設(shè)的長度區(qū)間內(nèi),若是,則執(zhí)行S4,若否,則返回步驟SI;
[0010]S4、對數(shù)組active進行降維處理,得到數(shù)組hp_active ;
[0011 ] S5、對數(shù)組hp_active進行dbscan算法處理,再進行κ-means算法處理,得到若干個動作聚類;
[0012]S6、分別計算數(shù)組hp_active與每個動作聚類的中心的歐氏距離;
[0013]S7、獲取最短的歐氏距離所對應(yīng)的動作聚類,該對應(yīng)的動作聚類為目標(biāo)動作聚類。
[0014]優(yōu)選的,步驟SI中,計算減去重力后的加速度數(shù)據(jù)的步驟包括:
[0015]511、從六軸加速度傳感器中分別獲取乂、¥、2軸上的加速度,記為4^六7^2,以及獲取四元數(shù)9[0]、9[1]、9[2]、9[3];
[0016]S12、根據(jù)四元數(shù)轉(zhuǎn)換公式分別計算重力在X、Y、Z軸上的分力G[0]、G[1]、G[2],其中,G[0] = ((q[l]*q[3]-q[0]*q[2]))/16384,G[l] = ((q[0]*q[l]+q[2]*q[3]))/16384,G
[2]=(q[0]*q[0]-q[l]*q[l]-q[2]*q[2]+q[3]*q[3])/32768;
[0017]S13、計算加速度數(shù)據(jù)ax、ay和az,其中,ax=Ax_G[0],ay=Ay_G[l],az=Az_G[2]0
[0018]優(yōu)選的,在步驟S2中,判斷一個連貫動作的條件為:
[0019]獲取的加速度數(shù)據(jù)中,若ax大于閾值fI,ay大于閾值f 2,且az大于閾值f 3,則將該次獲取的加速度數(shù)據(jù)記為連貫動作的開始;
[0020]在獲取連貫動作中的加速度數(shù)據(jù)時,若連續(xù)三次獲取到的ax的絕對值小于閾值f4,ay的絕對值小于閾值f 5,且az的絕對值小于閾值f 6,則將最后一次獲取到的加速度數(shù)據(jù)記為連貫動作的結(jié)束。
[0021 ]優(yōu)選的,在步驟S2中,利用點積公式計算每個加速度數(shù)據(jù)對應(yīng)的夾角數(shù)據(jù)。
[0022]優(yōu)選的,在步驟S4中,降維處理包括以下步驟:
[0023]S41、對數(shù)組active進行haar小波變換處理,得到數(shù)組haar_active ;
[0024]S42、對數(shù)組 haar_active 進行 PCA 處理,得到數(shù)組 hp_active。
[0025]優(yōu)選的,在步驟S6中還包括,判斷最短的歐氏距離是否小于預(yù)設(shè)的歐氏距離閾值,若是,則執(zhí)行步驟S7,若否,則返回步驟SI。
[0026]相比現(xiàn)有技術(shù),本發(fā)明的有益效果在于:只需要通過單一的六軸加速度傳感器即可識別出用戶的手勢動作,而且能夠計算出用戶在現(xiàn)實空間中的動作方向,更加準確地識別出用戶的手勢動作,避免了傳感器的位置對用戶的動作判斷產(chǎn)生影響。
【附圖說明】
[0027]圖1為本發(fā)明的基于加速度傳感芯片的動作識別方法流程圖。
【具體實施方式】
[0028]下面,結(jié)合附圖以及【具體實施方式】,對本發(fā)明做進一步描述:
[0029]參考圖1,一種基于加速度傳感芯片的動作識別方法,應(yīng)用于六軸加速度傳感器,包括以下步驟:
[0030]S1、計算減去重力后的加速度數(shù)據(jù),加速度數(shù)據(jù)包括ax、ay和az。其中,計算減去重力后的加速度數(shù)據(jù)的步驟包括:
[0031]511、從六軸加速度傳感器中分別獲取乂、¥、2軸上的加速度,記為4^六7^2,以及獲取四元數(shù)9[0]、9[1]、9[2]、9[3]。
[0032]S12、根據(jù)四元數(shù)轉(zhuǎn)換公式分別計算重力在X、Y、Z軸上的分力G[0]、G[1]、G[2],其中,G[0] = ((q[l]*q[3]-q[0]*q[2]))/16384,G[l] = ((q[0]*q[l]+q[2]*q[3]))/16384,G
[2]= (q[0]*q[0]-q[l]*q[l]-q[2]*q[2]+q[3]*q[3])/32768。
[0033]S13、計算加速度數(shù)據(jù)ax、ay和az,其中,ax=Ax_G[0],ay=Ay_G[l],az=Az_G[2]0
[0034]其中,在步驟Sll和S12中所述的X、Y、Z軸是指六軸加速度傳感器中設(shè)定的X、Y、Z軸。計算得到的加速度數(shù)據(jù)是指三軸減去了重力在各個軸上的分力得到的加速度。
[0035]S2、獲取一個連貫動作中的所有加速度數(shù)據(jù),依次根據(jù)每個加速度數(shù)據(jù)計算對應(yīng)的夾角數(shù)據(jù),夾角數(shù)據(jù)包括ax、ay和αζ;其中,αχ為加速度向量與現(xiàn)實空間的X軸夾角,ay為加速度向量與現(xiàn)實空間的Y軸夾角,az為加速度向量與現(xiàn)實空間的Z軸夾角。
[0036]其中,判斷一個連貫動作的條件為:
[0037]獲取的加速度數(shù)據(jù)中,若ax大于閾值fI,ay大于閾值f 2,且az大于閾值f 3,則將該次獲取的加速度數(shù)據(jù)記為連貫動作的開始;
[0038]在獲取連貫動作中的加速度數(shù)據(jù)時,若連續(xù)三次獲取到的ax的絕對值小于閾值f4,ay的絕對值小于閾值f 5,且az的絕對值小于閾值f 6,則將最后一次獲取到的加速度數(shù)據(jù)記為連貫動作的結(jié)束。
[0039]上述的閾值fl、f2、f3、f4、f5和f6均為根據(jù)實驗經(jīng)驗所預(yù)設(shè)的值。根據(jù)上述的連貫動作判斷條件可以獲取到一個連貫動作中的所有加速度數(shù)據(jù),然后就針對每個加速度數(shù)據(jù)結(jié)合點積公式計算對應(yīng)的夾角數(shù)據(jù),利用點積公式計算夾角的計算方法為現(xiàn)有技術(shù),在此不做贅述。需要說明的是,計算出來的夾角數(shù)據(jù),即ax、ay和αζ分別為加速度與現(xiàn)實空間對應(yīng)的軸的夾角,也就是可以得到用戶施加的力在現(xiàn)實空間的絕對方向。
[0040]S3、將夾角數(shù)據(jù)依次存儲至數(shù)組active中,判斷數(shù)組active的長度是否在預(yù)設(shè)的長度區(qū)間內(nèi),若是,則執(zhí)行S4,若否,則返回步驟SI。
[0041]其中,獲取的夾角數(shù)據(jù)按順序存儲至數(shù)組active中,例如,加速度傳感器一般每0.01秒會采集一