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