劉長喜, 付少鋒
(西安電子科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 西安710126)
隨著國家經(jīng)濟(jì)的發(fā)展,人民生活水平的提高,政策的鼓勵(lì)[1],健身在人們生活中的地位越來越重要。 然而,傳統(tǒng)的健身房或者家用健身產(chǎn)品都存在一些缺點(diǎn)。 例如,教練的指導(dǎo)取決于主觀因素,動(dòng)作校正不夠具體直觀,健身器材無法貼合學(xué)員需要并且很難獨(dú)立學(xué)習(xí)。 由此出現(xiàn)了許多依托于互聯(lián)網(wǎng)+的智能健身設(shè)施[2]。 如:英派斯,舒華等,但隨之產(chǎn)生了許多問題。
侵入式設(shè)備對(duì)人體感覺不友好,而且設(shè)備價(jià)格昂貴[3];非侵入設(shè)備,如光學(xué)運(yùn)動(dòng)式捕捉[4]對(duì)人體運(yùn)動(dòng)無影響,但精度低。 針對(duì)這些問題,本文使用Microsoft 的Kinect2.0 體感器,結(jié)合特征匹配算法實(shí)現(xiàn)了一套健身運(yùn)動(dòng)訓(xùn)練系統(tǒng)。 Kinect 提供了一系列可供開發(fā)者使用的API,可以方便的獲取人體的深度數(shù)據(jù)和關(guān)節(jié)姿態(tài)信息,在匹配完成后,得到一組評(píng)價(jià)數(shù)據(jù),用來指導(dǎo)學(xué)員的動(dòng)作。 本文將Kinect 體感器及模式識(shí)別技術(shù)與傳統(tǒng)的健身學(xué)習(xí)模式相結(jié)合,為健身行業(yè)注入了新的活力。
Kinect2.0,即微軟第二代Kinect for Windows,發(fā)布于2014 年。 Kinect2.0 有3 個(gè)鏡頭,分別為彩色攝像頭、深度(紅外)攝像頭和紅外線發(fā)射器[5],如圖1所示。

圖1 Kinect 外表及內(nèi)部結(jié)構(gòu)Fig.1 Kinect appearance and internal structure
在獲取深度信息方面,Kinect 使用光編碼技術(shù)。編碼具有高度的隨機(jī)性和唯一性。 深度攝像頭可以接收這些信息,進(jìn)而讀取物體的深度信息[6]。
Kinect2.0 定義了25 個(gè)人體關(guān)節(jié),如SpineBase、HandLeft、HandRight 等。 人體部位明確定義了左右,使分類算法具有區(qū)分人體左右側(cè)的能力。 人體部位的定義可以根據(jù)實(shí)際場(chǎng)景做出調(diào)整。
Kinect 定義了描述身體部位的特征,其在不同部位有不同的響應(yīng)。 單個(gè)特征可以提供像素所屬于身體部位的微弱信號(hào),在隨機(jī)森林中組合后,就可以準(zhǔn)確區(qū)分所有人體部位[7],即確定每個(gè)像素的部位信息。 將所有可能的像素匯聚起來,就可以形成人體骨架關(guān)節(jié)推測(cè)結(jié)果。
Kinect 定義的關(guān)節(jié)名稱及序號(hào)如圖2 所示。 使用Kinect 可獲得骨骼關(guān)節(jié)的旋轉(zhuǎn)信息。
首先,利用Kinect 捕捉人體運(yùn)動(dòng),獲得一系列關(guān)節(jié)旋轉(zhuǎn)數(shù)據(jù),這些數(shù)據(jù)在Kinect 中以四元組的形式存儲(chǔ)。 有關(guān)提取特征的方法較多,如:考慮關(guān)節(jié)自由度的角度特征[8]、關(guān)注距離和角度的組合特征[9]等。 為方便后續(xù)處理,本文將其轉(zhuǎn)為以歐拉角形式存儲(chǔ)。
在此,本文舍棄了一些對(duì)動(dòng)作匹配沒有影響的關(guān)節(jié)點(diǎn),保留的關(guān)節(jié)點(diǎn)如表1 所示。
2.1.1 四元數(shù)與歐拉角
在圖形學(xué)中,四元數(shù)和歐拉角是最常用的旋轉(zhuǎn)表示方式,與矩陣相比具有節(jié)省存儲(chǔ)空間和方便插值的優(yōu)點(diǎn)[10]。

表1 保留關(guān)節(jié)編號(hào)及名稱Tab.1 Joint number and name
四元數(shù):在三維建模中,四元數(shù)占有非常重要的地位。 因它不僅有著明確的幾何意義,且表征方式簡(jiǎn)單,只用到了四個(gè)數(shù)。 Kinect 中關(guān)節(jié)點(diǎn)的位置即采用此方式。 其定義如下:

歐拉角:使用繞三維空間中相關(guān)垂直的坐標(biāo)軸的三個(gè)旋轉(zhuǎn)組成的序列,來表示一個(gè)角位移,使用Roll、Yaw 、Pitch 分別表示物體繞x、y,、z 的旋轉(zhuǎn)角度,記為a、b、c。
2.1.2 四元數(shù)到歐拉角的轉(zhuǎn)換
四元數(shù)轉(zhuǎn)換為歐拉角的公式如下:

對(duì)采集到的數(shù)據(jù)進(jìn)行處理,去突變、去邊緣得三個(gè)通道角度變化。 圖3(a)~3(c)為HandLeft 三通道線條圖:
由此,動(dòng)作序列的對(duì)比轉(zhuǎn)化為線條圖特征的匹配。 相比直接對(duì)比圖像,可以大大減少計(jì)算量。 本文采用的Harris 特征檢測(cè)和MOPS(Multi-scale oriented patches)特征匹配方法,與其它特征點(diǎn)檢測(cè)和匹配方法,如DoG[11],OGB[12],SIFT[13]等相比,對(duì)于線條圖來說,在保證準(zhǔn)確率的基礎(chǔ)上有高效的運(yùn)算。
2.2.1 Harris 角點(diǎn)檢測(cè)
采用Harris 尋找不變的局部特征。 Harris 角點(diǎn)檢測(cè)尋找到的特征點(diǎn)在局部范圍內(nèi)具有較大的灰度變化,同時(shí)具有平移、旋轉(zhuǎn)不變形[14]。 Harris 算子定義為:

圖3 HandLeft 三通道線條圖Fig.3 HandLeft three-channel line drawing

其中,Ix、Iy為圖片沿x、y 方向的梯度,k 為常數(shù)(通常取值為0.04 ~0.06),當(dāng)C 的值大于閾值時(shí),認(rèn)為該點(diǎn)為特征點(diǎn)[15]。
角點(diǎn)檢測(cè)核心步驟包括[16]:
(1)計(jì)算圖像x 方向與y 方向?qū)?shù);
(2)計(jì)算導(dǎo)數(shù)的平方;
(3)高斯濾波器平滑;
(4)尋找角點(diǎn);
(5)非最大抑制[16]。
2.2.2 MOPS 描述符
MOPS 是簡(jiǎn)單且高效的特征描述符,它采集特征點(diǎn)周圍的像素特征,存儲(chǔ)為64 維向量。 計(jì)算MOPS 描述符的核心步驟包括[17]:
(1)選取所檢出特征周圍40×40 的方形窗口;
(2)由2.2.1 可得特征點(diǎn)的梯度方向,將該窗口旋轉(zhuǎn)到水平;
(3)在以特征點(diǎn)為中心的8x8 方形窗口內(nèi)采樣;
(4)規(guī)格化[17]。
計(jì)算兩特征向量間的歐式距離,計(jì)算最優(yōu)與次優(yōu)匹配的比值,通過指定合適的閾值過濾掉錯(cuò)誤匹配。
考慮到學(xué)員動(dòng)作與標(biāo)準(zhǔn)動(dòng)作頻率不一,在此定義等特征點(diǎn)比例分段方法[18]。
等特征點(diǎn)比例分段,即兩組動(dòng)作對(duì)應(yīng)分段特征點(diǎn),占總特征點(diǎn)數(shù)量的比例相同。 具體步驟為:將標(biāo)準(zhǔn)動(dòng)作序列等間隔分為N 段。 動(dòng)作越復(fù)雜,分段數(shù)量越高。 學(xué)員動(dòng)作分段需先計(jì)算標(biāo)準(zhǔn)動(dòng)作段特征點(diǎn)占總特征點(diǎn)的比例,再在學(xué)員動(dòng)作中選取相同比例的特征點(diǎn)作為對(duì)應(yīng)段。
完成分段后,就可以對(duì)動(dòng)作進(jìn)行全面的對(duì)比。對(duì)比指標(biāo)如下:
(1)動(dòng)作總體匹配比例
標(biāo)準(zhǔn)動(dòng)作與學(xué)員動(dòng)作匹配的特征點(diǎn)數(shù)量Num0/標(biāo)準(zhǔn)動(dòng)作特征點(diǎn)的總數(shù)量Sum0。
(2)局部動(dòng)作匹配比例
標(biāo)準(zhǔn)動(dòng)作中第i 段與學(xué)員動(dòng)作第i 段匹配的特征點(diǎn)數(shù)量Numi/ 標(biāo)準(zhǔn)動(dòng)作中第i 段特征點(diǎn)的總數(shù)量Sumi。
由此,可得動(dòng)作評(píng)分:

(3)動(dòng)作復(fù)雜程度:檢測(cè)到的特征點(diǎn)數(shù)量在一定程度上可以體現(xiàn)動(dòng)作的復(fù)雜程度。
(4)動(dòng)作提前與延后:通過特征點(diǎn)匹配圖像,可以觀察到學(xué)員動(dòng)作相對(duì)于標(biāo)準(zhǔn)動(dòng)作的提前與延后,從而對(duì)學(xué)員動(dòng)作進(jìn)行指導(dǎo)。
本實(shí)驗(yàn)測(cè)試總流程如圖4 所示。

圖4 系統(tǒng)總流程Fig.4 System overall process
本文采集了兩組動(dòng)作,第一組作為標(biāo)準(zhǔn)動(dòng)作,第二組作為學(xué)員動(dòng)作,在捕捉過程中截取連續(xù)兩幀圖像,如圖5(a)、5(b) 所示。 特征檢測(cè)結(jié)果如圖6(a)、6(b)所示。 綜合3 個(gè)通道的匹配關(guān)系,按照特征點(diǎn)比例分段方法,得到分段結(jié)果如表2 所示。

圖5 動(dòng)作捕捉示意圖Fig.5 Schematic of motion capture

圖6 特征檢測(cè)結(jié)果Fig.6 Feature detection results

表2 分段結(jié)果表Tab.2 Segmentation table
在本次實(shí)驗(yàn)中,選取N =5。 各段匹配結(jié)果如表3 所示。
其中,每一行為標(biāo)準(zhǔn)動(dòng)作的段,每一列為學(xué)員動(dòng)作的段。 如:學(xué)員動(dòng)作第一段與標(biāo)準(zhǔn)動(dòng)作第二段匹配數(shù)據(jù)位于第一列第二行,有5 個(gè)特征點(diǎn)匹配。 由此可得:

表3 各段匹配結(jié)果Tab.3 Matching results
(1)動(dòng)作總體匹配比例。Num0/Sum0=118/357 =33.05%,即學(xué)員動(dòng)作與標(biāo)準(zhǔn)動(dòng)作的整體匹配程度為33.05%。
(2)局部動(dòng)作匹配比例。 由指標(biāo)可知,各段局部匹配比例依次為:13.04%、11.76%、27.41%、17.64%、8.84%。 總得分為:0.258 852。
(3)動(dòng)作復(fù)雜程度。 由表2 可知,標(biāo)準(zhǔn)動(dòng)作有357 個(gè)特征點(diǎn),而學(xué)員動(dòng)作有302 個(gè)特征點(diǎn),即標(biāo)準(zhǔn)動(dòng)作比學(xué)員動(dòng)作要復(fù)雜、多變。
(4)動(dòng)作提前與延后。 由式(2)可知,學(xué)員動(dòng)作與標(biāo)準(zhǔn)動(dòng)作匹配最好的為第三段,其次為第四段,最差的為第五段。 可見該學(xué)員對(duì)復(fù)雜動(dòng)作的掌握不到位,而較簡(jiǎn)單動(dòng)作,如第一段、第二段有沒有做好,所以得分較低。 觀察表3(5,4)和(4,5)可知,學(xué)員動(dòng)作第四段有12 個(gè)特征落在了第五段,即第四段動(dòng)作落后于標(biāo)準(zhǔn)動(dòng)作,同理,第五段動(dòng)作稍提前于標(biāo)準(zhǔn)動(dòng)作。
本系統(tǒng)將Kinect 和特征匹配相結(jié)合,實(shí)現(xiàn)了對(duì)連續(xù)動(dòng)作的對(duì)比和評(píng)價(jià)。 首先利用Kinect 獲取骨骼的旋轉(zhuǎn)信息,再將其轉(zhuǎn)換為歐拉角的形式存儲(chǔ),在特征匹配方面,選用Harris 與MOPS 相結(jié)合,準(zhǔn)確而又高效。 在后面的實(shí)驗(yàn)中,對(duì)兩段動(dòng)作進(jìn)行了比較,看到了許多憑肉眼看不到的細(xì)節(jié),為動(dòng)作的比較與評(píng)價(jià)提供了科學(xué)客觀的數(shù)據(jù)。