本發(fā)明涉及傳感器采集比對領(lǐng)域,具體地,涉及一種基于kinect的動(dòng)作比對系統(tǒng)和基于kinect的動(dòng)作比對方法。
背景技術(shù):
目前,許多人都有學(xué)習(xí)武術(shù)、舞蹈或者體操的習(xí)慣,而常規(guī)學(xué)習(xí)模式往往存在需要有教練、固定場所、固定時(shí)間以及一個(gè)教練只輔導(dǎo)一類的動(dòng)作等弊端。而若自己獨(dú)自進(jìn)行訓(xùn)練,則往往動(dòng)作不規(guī)范也不容易發(fā)現(xiàn),長久練習(xí)下去,并不會(huì)有較好的訓(xùn)練效果,費(fèi)時(shí)費(fèi)力且收效甚低。
因此,提供一種可以在任何時(shí)間,任何地點(diǎn),進(jìn)行動(dòng)作訓(xùn)練的系統(tǒng),同時(shí)可以在虛擬環(huán)境下,根據(jù)用戶不同動(dòng)作進(jìn)行比對,有利于用戶獨(dú)自鍛煉的基于kinect的動(dòng)作比對系統(tǒng)和基于kinect的動(dòng)作比對方法是本發(fā)明亟需解決的問題。
技術(shù)實(shí)現(xiàn)要素:
針對上述現(xiàn)有技術(shù),本發(fā)明的目的在于克服現(xiàn)有技術(shù)中,常規(guī)的武術(shù)、舞蹈或者體操等動(dòng)作訓(xùn)練往往受時(shí)間和空間的局限的問題,從而提供一種可以在任何時(shí)間,任何地點(diǎn),進(jìn)行動(dòng)作訓(xùn)練的系統(tǒng),同時(shí)可以在虛擬環(huán)境下,根據(jù)用戶不同動(dòng)作進(jìn)行比對,有利于用戶獨(dú)自鍛煉的基于kinect的動(dòng)作比對系統(tǒng)和基于kinect的動(dòng)作比對方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于kinect的動(dòng)作比對系統(tǒng),其中,所述基于kinect的動(dòng)作比對系統(tǒng)包括kinect采集模塊,實(shí)時(shí)動(dòng)作序列拆分模塊,模板動(dòng)作伸縮模塊,實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊,以及數(shù)據(jù)處理模塊;其中,
所述kinect采集模塊用于采集用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù);
所述實(shí)時(shí)動(dòng)作序列拆分模塊用于將每個(gè)實(shí)時(shí)動(dòng)作序列各自拆分開,每兩個(gè)實(shí)時(shí)動(dòng)作之間形成有停頓點(diǎn),相鄰的兩個(gè)停頓點(diǎn)之間形成為一個(gè)實(shí)時(shí)動(dòng)作序列,所述實(shí)時(shí)動(dòng)作序列拆分模塊通過監(jiān)測每個(gè)停頓點(diǎn),并將每兩個(gè)相鄰的停頓點(diǎn)之間的一個(gè)實(shí)時(shí)動(dòng)作序列予以拆分出;
所述模板動(dòng)作伸縮模塊用于將模板動(dòng)作中的每個(gè)模板動(dòng)作序列的長度拉伸或縮短至與對應(yīng)的實(shí)時(shí)動(dòng)作序列相同;
所述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊用于將每組經(jīng)拉伸或縮短至長度與對應(yīng)的實(shí)時(shí)動(dòng)作序列相同的模板動(dòng)作序列和該對應(yīng)的實(shí)時(shí)動(dòng)作序列進(jìn)行比對;
所述數(shù)據(jù)處理模塊用于對每組經(jīng)過所述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊比對后的數(shù)據(jù)進(jìn)行分析;其中,
三維空間的坐標(biāo)系為:根據(jù)kinect設(shè)備所在位置為三維空間坐標(biāo)原點(diǎn),z軸正方向?yàn)閿z像頭指向方向,x軸平行于設(shè)備所在平面并與z軸垂直且指定原點(diǎn)向右為正方向,y軸垂直于x、z軸所在平面且指定y軸正方向豎直該平面向上。
優(yōu)選地,所述基于kinect的動(dòng)作比對系統(tǒng)還包括各骨骼點(diǎn)數(shù)據(jù)平滑消抖模塊,所述各骨骼點(diǎn)數(shù)據(jù)平滑消抖模塊用于對采集用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù)采用多幀數(shù)據(jù)采用濾波算法對骨骼進(jìn)行消抖處理。
優(yōu)選地,所述濾波算法選自限幅濾波法、中位值濾波法、算術(shù)平均濾波法、遞推平均濾波法、中位值平均濾波法、限幅平均濾波法、一階滯后濾波法、加權(quán)遞推平均濾波法、消抖濾波法和限幅消抖濾波法中的一種或多種。
優(yōu)選地,所述基于kinect的動(dòng)作比對系統(tǒng)還包括骨骼數(shù)據(jù)優(yōu)化模塊,所述骨骼數(shù)據(jù)優(yōu)化模塊用于通過對采集的用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù)來計(jì)算出用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的速度,并計(jì)算用戶的整體速度,并根據(jù)整體速度的變化情況優(yōu)化速度數(shù)據(jù)。
優(yōu)選地,速度數(shù)據(jù)的優(yōu)化采用dfp擬牛頓法進(jìn)行優(yōu)化。
優(yōu)選地,采集的骨骼點(diǎn)的數(shù)量為20-40個(gè);
所述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊中比對的骨骼點(diǎn)的數(shù)量為12-16個(gè)。
優(yōu)選地,所述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊采用如下所示的公式進(jìn)行比對:
本發(fā)明還提供了一種基于kinect的動(dòng)作比對方法,其中,所述基于kinect的動(dòng)作比對方法使用根據(jù)上述所述的基于kinect的動(dòng)作比對系統(tǒng),所述基于kinect的動(dòng)作比對方法包括:
步驟101,采用kinect采集模塊采集用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù);
步驟102,采用實(shí)時(shí)動(dòng)作序列拆分模塊將每個(gè)實(shí)時(shí)動(dòng)作序列各自拆分開,形成多個(gè)獨(dú)立的實(shí)時(shí)動(dòng)作序列;
步驟103,將每個(gè)模板動(dòng)作序列的長度采用模板動(dòng)作伸縮模塊拉伸或縮短至與對應(yīng)的實(shí)時(shí)動(dòng)作序列相同;
步驟104,將步驟103中拉伸或縮短后的模板動(dòng)作序列和與該模板動(dòng)作序列對應(yīng)的實(shí)時(shí)動(dòng)作序列采用實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊進(jìn)行比對;
步驟105,將步驟104中比對后的數(shù)據(jù)采用數(shù)據(jù)處理模塊進(jìn)行分析。
優(yōu)選地,步驟101和步驟102之間還包括以下步驟:采用骨骼點(diǎn)數(shù)據(jù)平滑消抖模塊對步驟101中采集的運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù)采用濾波算法進(jìn)行消抖處理。
優(yōu)選地,步驟101和步驟102之間還包括以下步驟:采用骨骼數(shù)據(jù)優(yōu)化模塊根據(jù)采集的用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù)對速度數(shù)據(jù)進(jìn)行優(yōu)化。
優(yōu)選地,步驟101中采集的骨骼點(diǎn)的數(shù)量為20-40個(gè);
步驟105中所述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊中比對的骨骼點(diǎn)的數(shù)量為12-16個(gè)。
根據(jù)上述技術(shù)方案,本發(fā)明通過設(shè)置kinect采集模塊,實(shí)時(shí)動(dòng)作序列拆分模塊,模板動(dòng)作伸縮模塊,實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊,以及數(shù)據(jù)處理模塊,先通過kinect采集模塊采集實(shí)時(shí)運(yùn)動(dòng)中的各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù),而后將采集到的實(shí)時(shí)運(yùn)動(dòng)拆分為多個(gè)實(shí)時(shí)動(dòng)作序列,并根據(jù)實(shí)時(shí)動(dòng)作序列,將對應(yīng)的模板動(dòng)作序列進(jìn)行拉伸或縮短至長度相同,而后再用數(shù)據(jù)處理模塊比對上述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列,并進(jìn)行分析,找出實(shí)時(shí)動(dòng)作中的問題,從而實(shí)現(xiàn)可以獨(dú)自進(jìn)行訓(xùn)練,且能夠?qū)崟r(shí)矯正自己的動(dòng)作,大大提高獨(dú)自訓(xùn)練的有效性,降低對訓(xùn)練的時(shí)間、空間和人員等的要求。
本發(fā)明的其他特征和優(yōu)點(diǎn)將在隨后的具體實(shí)施方式部分予以詳細(xì)說明。
附圖說明
附圖是用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與下面的具體實(shí)施方式一起用于解釋本發(fā)明,但并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1是本發(fā)明提供的一種基于kinect的動(dòng)作比對方法的流程圖。
具體實(shí)施方式
以下結(jié)合附圖對本發(fā)明的具體實(shí)施方式進(jìn)行詳細(xì)說明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。
本發(fā)明提供了一種基于kinect的動(dòng)作比對系統(tǒng),其中,所述基于kinect的動(dòng)作比對系統(tǒng)包括kinect采集模塊,實(shí)時(shí)動(dòng)作序列拆分模塊,模板動(dòng)作伸縮模塊,實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊,以及數(shù)據(jù)處理模塊;其中,
所述kinect采集模塊用于采集用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù);
所述實(shí)時(shí)動(dòng)作序列拆分模塊用于將每個(gè)實(shí)時(shí)動(dòng)作序列各自拆分開,每兩個(gè)實(shí)時(shí)動(dòng)作之間形成有停頓點(diǎn),相鄰的兩個(gè)停頓點(diǎn)之間形成為一個(gè)實(shí)時(shí)動(dòng)作序列,所述實(shí)時(shí)動(dòng)作序列拆分模塊通過監(jiān)測每個(gè)停頓點(diǎn),并將每兩個(gè)相鄰的停頓點(diǎn)之間的一個(gè)實(shí)時(shí)動(dòng)作序列予以拆分出;
所述模板動(dòng)作伸縮模塊用于將模板動(dòng)作中的每個(gè)模板動(dòng)作序列的長度拉伸或縮短至與對應(yīng)的實(shí)時(shí)動(dòng)作序列相同;
所述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊用于將每組經(jīng)拉伸或縮短至長度與對應(yīng)的實(shí)時(shí)動(dòng)作序列相同的模板動(dòng)作序列和該對應(yīng)的實(shí)時(shí)動(dòng)作序列進(jìn)行比對;
所述數(shù)據(jù)處理模塊用于對每組經(jīng)過所述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊比對后的數(shù)據(jù)進(jìn)行分析;其中,
三維空間的坐標(biāo)系為:根據(jù)kinect設(shè)備所在位置為三維空間坐標(biāo)原點(diǎn),z軸正方向?yàn)閿z像頭指向方向,x軸平行于設(shè)備所在平面并與z軸垂直且指定原點(diǎn)向右為正方向,y軸垂直于x、z軸所在平面且指定y軸正方向豎直該平面向上。
上述設(shè)計(jì)通過設(shè)置kinect采集模塊,實(shí)時(shí)動(dòng)作序列拆分模塊,模板動(dòng)作伸縮模塊,實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊,以及數(shù)據(jù)處理模塊,先通過kinect采集模塊采集實(shí)時(shí)運(yùn)動(dòng)中的各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù),而后將采集到的實(shí)時(shí)運(yùn)動(dòng)拆分為多個(gè)實(shí)時(shí)動(dòng)作序列,并根據(jù)實(shí)時(shí)動(dòng)作序列,將對應(yīng)的模板動(dòng)作序列進(jìn)行拉伸或縮短至長度相同,而后再用數(shù)據(jù)處理模塊比對上述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列,并進(jìn)行分析,找出實(shí)時(shí)動(dòng)作中的問題,從而實(shí)現(xiàn)可以獨(dú)自進(jìn)行訓(xùn)練,且能夠?qū)崟r(shí)矯正自己的動(dòng)作,大大提高獨(dú)自訓(xùn)練的有效性,降低對訓(xùn)練的時(shí)間、空間和人員等的要求。當(dāng)然,需要指出的是,這里的模板動(dòng)作為規(guī)范的動(dòng)作采集到的點(diǎn),例如,可以為事先錄制好的標(biāo)準(zhǔn)動(dòng)作的采集數(shù)據(jù),本領(lǐng)域技術(shù)人員可以按照適宜操作和采集的方式進(jìn)行采集。
當(dāng)然,為了使比對效果更好,進(jìn)一步降低因抖動(dòng)對數(shù)據(jù)采集的有效性的影響,降低采集的數(shù)據(jù)的誤差,在本發(fā)明的一種優(yōu)選的實(shí)施方式中,所述基于kinect的動(dòng)作比對系統(tǒng)還包括各骨骼點(diǎn)數(shù)據(jù)平滑消抖模塊,所述各骨骼點(diǎn)數(shù)據(jù)平滑消抖模塊用于對采集用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù)采用多幀數(shù)據(jù)采用濾波算法對骨骼進(jìn)行消抖處理。
當(dāng)然,這里的濾波算法可以為常規(guī)選擇的類型,例如,所述濾波算法可以選自限幅濾波法、中位值濾波法、算術(shù)平均濾波法、遞推平均濾波法、中位值平均濾波法、限幅平均濾波法、一階滯后濾波法、加權(quán)遞推平均濾波法、消抖濾波法和限幅消抖濾波法中的一種或多種。
進(jìn)一步優(yōu)選的實(shí)施方式中,為了更好地提高采集的數(shù)據(jù)的有效性和準(zhǔn)確性,所述基于kinect的動(dòng)作比對系統(tǒng)還可以包括骨骼數(shù)據(jù)優(yōu)化模塊,當(dāng)然,這里的骨骼數(shù)據(jù)優(yōu)化模塊需要能對骨骼點(diǎn)的移動(dòng)位移等作出有效的優(yōu)化即可,例如,所述骨骼數(shù)據(jù)優(yōu)化模塊可以設(shè)置為用于通過對采集的用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù)來計(jì)算出用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的速度,并計(jì)算用戶的整體速度,并根據(jù)整體速度的變化情況優(yōu)化速度數(shù)據(jù)。
這里的優(yōu)化速度數(shù)據(jù)的優(yōu)化方式可以按照本領(lǐng)域常規(guī)方式進(jìn)行操作,例如,一種更為優(yōu)選的實(shí)施方式中,速度數(shù)據(jù)的優(yōu)化可以采用dfp擬牛頓法進(jìn)行優(yōu)化。當(dāng)然,其他可行的方式在此也可以使用,例如,可以為梯度下降法等。
當(dāng)然,kinect采集模塊采集的骨骼點(diǎn)的數(shù)量可以根據(jù)實(shí)際需要進(jìn)行選擇,例如,一種優(yōu)選的實(shí)施方式中,采集的骨骼點(diǎn)的數(shù)量為20-40個(gè)。
更為優(yōu)選的實(shí)施方式中,為了進(jìn)一步降低比對的難度和復(fù)雜度等,所述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊中比對的骨骼點(diǎn)的數(shù)量可以進(jìn)一步選擇為12-16個(gè)。當(dāng)然,這里比對的骨骼點(diǎn)可以根據(jù)實(shí)際需要進(jìn)行選擇,可以根據(jù)動(dòng)作的不同選擇不同的骨骼點(diǎn),在此不多作贅述。
同樣地,一種更為優(yōu)選的實(shí)施方式中,比對時(shí)采用的比對方式可以根據(jù)實(shí)際需要選擇,例如,所述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊采用如下所示的公式進(jìn)行比對:
本發(fā)明還提供了一種基于kinect的動(dòng)作比對方法,其中,所述基于kinect的動(dòng)作比對方法使用根據(jù)上述項(xiàng)所述的基于kinect的動(dòng)作比對系統(tǒng),如圖1所示,所述基于kinect的動(dòng)作比對方法包括:
步驟101,采用kinect采集模塊采集用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù);
步驟102,采用實(shí)時(shí)動(dòng)作序列拆分模塊將每個(gè)實(shí)時(shí)動(dòng)作序列各自拆分開,形成多個(gè)獨(dú)立的實(shí)時(shí)動(dòng)作序列;
步驟103,將每個(gè)模板動(dòng)作序列的長度采用模板動(dòng)作伸縮模塊拉伸或縮短至與對應(yīng)的實(shí)時(shí)動(dòng)作序列相同;
步驟104,將步驟103中拉伸或縮短后的模板動(dòng)作序列和與該模板動(dòng)作序列對應(yīng)的實(shí)時(shí)動(dòng)作序列采用實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊進(jìn)行比對;
步驟105,將步驟104中比對后的數(shù)據(jù)采用數(shù)據(jù)處理模塊進(jìn)行分析。
一種優(yōu)選的實(shí)施方式中,步驟101和步驟102之間還可以包括采用骨骼點(diǎn)數(shù)據(jù)平滑消抖模塊對步驟101中采集的運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù)采用濾波算法進(jìn)行消抖處理。
更為優(yōu)選的實(shí)施方式中,步驟101和步驟102之間還可以包括采用骨骼數(shù)據(jù)優(yōu)化模塊根據(jù)采集的用戶在運(yùn)動(dòng)中各骨骼點(diǎn)的實(shí)時(shí)三維空間的坐標(biāo)數(shù)據(jù)對速度數(shù)據(jù)進(jìn)行優(yōu)化。
同樣地,步驟101中采集的骨骼點(diǎn)的數(shù)量為20-40個(gè);步驟105中所述實(shí)時(shí)動(dòng)作序列和模板動(dòng)作序列比對模塊中比對的骨骼點(diǎn)的數(shù)量為3-10個(gè)。
以上結(jié)合附圖詳細(xì)描述了本發(fā)明的優(yōu)選實(shí)施方式,但是,本發(fā)明并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本發(fā)明的技術(shù)構(gòu)思范圍內(nèi),可以對本發(fā)明的技術(shù)方案進(jìn)行多種簡單變型,這些簡單變型均屬于本發(fā)明的保護(hù)范圍。
另外需要說明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過任何合適的方式進(jìn)行組合,為了避免不必要的重復(fù),本發(fā)明對各種可能的組合方式不再另行說明。
此外,本發(fā)明的各種不同的實(shí)施方式之間也可以進(jìn)行任意組合,只要其不違背本發(fā)明的思想,其同樣應(yīng)當(dāng)視為本發(fā)明所公開的內(nèi)容。