一種基于多kinect的人體姿態(tài)數(shù)據(jù)融合方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于人體姿態(tài)檢測及姿態(tài)識別技術(shù)領(lǐng)域,涉及一種基于多kinect的人體 姿態(tài)數(shù)據(jù)融合方法。
【背景技術(shù)】
[0002] 隨著時代的發(fā)展,人機交互的方式也越來越多,已經(jīng)不光可以通過語言進行交流, 肢體語言也是不可缺少的部分,計算機視覺領(lǐng)域的一個分支就是研宄人體行為姿態(tài)的具體 含義。但是,要理解人體行為姿態(tài),首先要獲取到人物的具體姿態(tài),常規(guī)的方式是使用普通 相機,然后使用模式識別對視頻中的人物輪廓進行分析識別,但是這種方式準(zhǔn)確率還不能 滿足人機交互的需求。
[0003] 在此應(yīng)用需求下,Kinect應(yīng)運而生,它是微軟其旗下的游戲主機Xbox360和 Windows平臺提供的一種運動感知輸入設(shè)備。Kinect實際是一個利用三維空間定位技術(shù) 的體感攝像頭,可以進行實時動作捕捉、影像識別、語音輸入、語音識別和社群互動等功能。 因此用戶可以使用Kinect跟微軟的SDK來獲取到人物骨架信息,每個骨骼點是一個三維 坐標(biāo)信息。但是Kinect使用時需要用戶面對Kinect,才能獲取人物的整個人體姿態(tài),所以 Kinect對于自遮擋的問題沒有很好的解決方案。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的是提供一種基于多kinect的人體姿態(tài)數(shù)據(jù)融合方法,解決了現(xiàn)有 kinect在提取人體骨骼信息時,受到干擾骨骼數(shù)據(jù)出現(xiàn)跳變或者出現(xiàn)自遮擋時姿態(tài)缺失的 問題。
[0005] 本發(fā)明的技術(shù)方案是,一種基于多kinect的人體姿態(tài)數(shù)據(jù)融合方法,具體步驟如 下:
[0006] 步驟1,搭建數(shù)據(jù)采集系統(tǒng):
[0007] 正交擺放兩臺kinect,使其面向拍攝區(qū)域,kinectl和kinect2分別與電腦a和 電腦b連接,電腦a與電腦b連接之間建立局域網(wǎng),以便進行數(shù)據(jù)傳輸;
[0008] 步驟2,數(shù)據(jù)采集:
[0009] 開啟系統(tǒng),電腦b實時將kinect2獲取的骨骼數(shù)據(jù)通過局域網(wǎng)發(fā)送給電腦a,同時 電腦a實時獲取kinect1的骨骼數(shù)據(jù),其中每個骨骼數(shù)據(jù)包括和F^兩部分:Gaj) 是以第i個kinect為坐標(biāo)原點的人體第j個骨豁位置坐標(biāo);Faj)是第i個kinect是否跟 蹤到人體第j個骨骼點的標(biāo)記信息,F(xiàn)aj值為0時,表示第i個kinect沒有跟蹤到第j個 骨骼位置;Fuj值為1時,表示第i個kinect跟蹤到第j個骨骼位置;
[0010] 其中i表示kinect的編號,i為1或2 ;j表示骨骼點的編號,0〈j彡骨骼點數(shù);
[0011] 步驟3,選擇數(shù)據(jù)融合方式:
[0012] 針對Kinect1和Kinect2獲取的骨骼數(shù)據(jù)進行分類,確定不同數(shù)據(jù)融合策略;
[0013] 步驟4,數(shù)據(jù)融合:
[0014] 對于符合數(shù)據(jù)融合條件的骨骼數(shù)據(jù)進行數(shù)據(jù)融合;
[0015] 步驟5,數(shù)據(jù)預(yù)測:
[0016] 對于不符合數(shù)據(jù)融合條件的骨骼數(shù)據(jù),采用對坐標(biāo)數(shù)據(jù)的運動變化量求簡易平均 值進行預(yù)測。
[0017] 本發(fā)明的特點還在于,
[0018] 步驟3所述不同的數(shù)據(jù)融合策略,具體為:
[0019] 1)對于滿足A= {j|Faj)= 1}的骨骼點,認為已得到該點的骨骼點信息,忽略 Kinect2檢測到的骨骼點;
[0020] 2)對于滿足B={j|Faj)= 0,F1}的骨豁點,進入步驟4,進行數(shù)據(jù)融合;
[0021] 3)對于滿足C= {j|Faj)= 0,F(xiàn)aj)= 0}的骨骼點,進入步驟5,進行數(shù)據(jù)預(yù)測。
[0022] 步驟4具體為:
[0023] 4. 1找到兩個kinect都跟蹤到的骨豁點最小下標(biāo),即求滿足Fa = 1且F$ = 1的骨骼點,以其中最小的j值為融合數(shù)據(jù)的基準(zhǔn)點,記為骨骼點t:
[0024]t=min{j|F(1;』)=1,F(xiàn)(2,』)=1,0 <j<骨豁點個數(shù)}
[0025] 如果沒找到滿足條件的t,則直接進入步驟5,對所有0的骨骼點進行數(shù)據(jù) 預(yù)測;
[0026] 4. 2對于所有= 1的骨骼點,計算所有kinect2跟蹤到的骨骼點相對于骨骼 點t的坐標(biāo)偏移量ej:
[0027] ej=G(2J)-G(2t),jGB
[0028] 其中(^2』為kinect2的骨骼點j的位置坐標(biāo),B為步驟3中滿足數(shù)據(jù)融合條件 的骨骼點j的集合,kinect2的骨骼點t的位置坐標(biāo);
[0029]4. 3根據(jù)坐標(biāo)偏移量^計算求出所有kinect1未檢測到的骨骼位置數(shù)據(jù)Gaj), 并將這些骨骼點的標(biāo)志位置為1,即將置為1 :
[0030] G(1;J)=G(1;t)+ej,jGB
[0031] 其中Gaj)Skinect1的骨骼點j的位置坐標(biāo),B為步驟3中滿足數(shù)據(jù)融合條件 的骨骼點j的集合,Gat)為kinect1的骨骼點t的位置坐標(biāo)。
[0032] 步驟5中采用對坐標(biāo)數(shù)據(jù)的運動變化量求簡易平均值進行預(yù)測,具體步驟如下:
[0033]5. 1求連續(xù)n幀的骨骼位置的位移變化的平均值:
[0035] 其中,T為當(dāng)前幀編號;k為幀偏移量;n為需要計算位置變化的幀數(shù);SaT)表示 第j個骨骼點在第T幀的前n幀位移變化的平均值;Ga^k)表示kinectl的第j個骨骼點 在第T-k幀的位置坐標(biāo)表示kinectl的第j個骨骼點在第T-k-1幀的位置坐標(biāo);
[0036]5. 2求得需要預(yù)測的時刻的骨骼位置:
[0037] G(i;J;T-i)+S(J;T)
[0038] 其中,Ga,」,T)為kinectl需要預(yù)測的第T幀第j個骨骼點位置坐標(biāo),G kinectl需要預(yù)測的第T-1幀第j個骨骼點位置坐標(biāo)。
[0039] 本發(fā)明的有益效果是,通過采用多臺Kinect對人體骨骼信息進行采集,并針對采 集到的信息類別,進行數(shù)據(jù)融合和數(shù)據(jù)預(yù)測,提取了完整的人體姿態(tài)骨骼信息,解決了現(xiàn)有 kinect受到干擾骨骼數(shù)據(jù)出現(xiàn)跳變或者出現(xiàn)自遮擋時姿態(tài)缺失的問題,為后期處理中姿態(tài) 識別、人機交互、虛擬現(xiàn)實等提供了便利。
【附圖說明】
[0040] 圖1是本發(fā)明一種基于多kinect的人體姿態(tài)數(shù)據(jù)融合方法的硬件圖。
[0041]圖中,1.kinect1,2.kinect2,3?拍攝區(qū)域,4.電腦a,5?電腦b。
【具體實施方式】
[0042] 下面結(jié)合附圖和【具體實施方式】對本發(fā)明進行詳細說明。
[0043] 本發(fā)明一種基于多kinect的人體姿態(tài)數(shù)據(jù)融合方法,具體按以下步驟實施:
[0044] 步驟1,搭建數(shù)據(jù)采集系統(tǒng):
[0045] 如圖1所示,正交擺放兩臺kinect,使其面向拍攝區(qū)域3,拍攝區(qū)域3由兩臺 kinect的攝像區(qū)域決定,kinectl1和kinect2 2分別與電腦a4和電腦b5連接,電腦a4 與電腦b5連接之間建立局域網(wǎng),以便進行數(shù)據(jù)傳輸。
[0046] 默認電腦a為為主處理器,系統(tǒng)運行時,電腦b會實時將Kinect2檢測到的人物 姿態(tài)骨骼數(shù)據(jù)通過局域網(wǎng)發(fā)送給電腦a,同時電腦a也會實時得到Kinect1的姿態(tài)骨骼數(shù) 據(jù)。然后電腦a會同時調(diào)用融合算法進行多kinect的數(shù)據(jù)融合。
[0047] 步驟2,數(shù)據(jù)采集:
[0048] 開啟系統(tǒng),電腦b實時將kinect2獲取的20個骨骼數(shù)據(jù)通過局域網(wǎng)發(fā)送給電腦 a,同時電腦a實時獲取kinect1的骨骼數(shù)據(jù)。其中每個骨骼數(shù)據(jù)包括和兩部 分:是以第i個kinect為坐標(biāo)原點的人體第j個骨豁位置坐標(biāo);F是第i個kinect 是否跟蹤到人體第j個骨骼點的標(biāo)記信息。值為0時,表示第i個kinect沒有跟蹤到 第j個骨骼位置;Fuj值為1時,表示第i個kinect跟蹤到第j個骨骼位置。
[0049] 其中i表示kinect的編號,i為1或2 ;j表示骨骼點的編號,0〈j彡骨骼點數(shù)。
[0050] 步驟3,選擇數(shù)據(jù)融合方式:
[0051] 由于Kinect1和Kinect2的坐標(biāo)信息都是以各自Kinect為坐標(biāo)原點,而數(shù)據(jù)融