于存光 韓越興 張小凡 歐陽皓寰
(1.黑龍江科技大學(xué)理學(xué)院 哈爾濱 150022)(2.上海大學(xué)計算機(jī)科學(xué)與工程學(xué)院 上海 200444)(3.上海大學(xué)上海先進(jìn)通信與數(shù)據(jù)科學(xué)研究院 上海 200444)(4.廈門大學(xué)信息學(xué)院 廈門 361000)
手也很容易受到外力的傷害和大腦損傷而造成功能喪失?,F(xiàn)階段大多數(shù)診療依然停留在醫(yī)生目測或借助測角器等原始手段評定手的病情和治療的療效,因此存在很多的主觀因素。隨著人工智能的快速發(fā)展,各種硬件的革新?lián)Q代,以及計算機(jī)算法的提出,使得利用計算機(jī)技術(shù)對手進(jìn)行科學(xué)的、自動的評估成為了可能。標(biāo)準(zhǔn)化的評估手功能康復(fù)系統(tǒng)會幫助醫(yī)生進(jìn)行診斷。
獲取手勢數(shù)據(jù)信息的方式大體上分為兩種:基于手套的手勢數(shù)據(jù)獲取方法和基于視覺的數(shù)據(jù)獲取方法?;跀?shù)據(jù)手套的獲取方法就是利用數(shù)據(jù)手套測量手指關(guān)節(jié)的彎曲度,手指間的角度,手掌的傾斜度等信息。2004年,高文[1]等選用了兩個數(shù)據(jù)手套和3 個位置跟蹤器成功識別了5113 個中國手語符號。肖陽[2]等的研究基于5DT 數(shù)據(jù)手套實現(xiàn)了對患者手部數(shù)據(jù)的采集,并以此建立模型評估患者手功能康復(fù)程度。文獻(xiàn)[3]利用數(shù)據(jù)手套和觸覺傳感手套裝置開發(fā)了一套中風(fēng)后遺癥患者恢復(fù)性治療用的虛擬現(xiàn)實系統(tǒng)。數(shù)據(jù)手套的手勢識別方法具有受環(huán)境干擾小,識別率高,但是很多手部患者因為手的傷害無法穿戴數(shù)據(jù)手套,而且數(shù)據(jù)手套的高昂造價。
基于視覺的數(shù)據(jù)獲取方法是通過攝像設(shè)備采取手的各種視頻信息,從而實現(xiàn)手勢的識別和判斷。一般來說,最常見的視頻采集設(shè)備提取到的是手的二維信息,然后采用物體識別方法,如文獻(xiàn)[4~7],來識別手勢。Priyal和Boral提出的HGR[14]系統(tǒng)來識別手勢。文獻(xiàn)[15]介紹了一種基于(GNG)算法構(gòu)建的圖形表示和識別手勢的方法。但是,這些基于二維空間的方法很難計算出手勢的三維信息,也就是說,用二維圖像匹配的方法來進(jìn)行三維手勢識別會丟失很多信息。因此,目前更多的是采用深度相機(jī)來采集手勢的三維信息。如2004 年,Mckenna[8]通過模版匹配的方法對60 種用戶定制的動態(tài)手勢進(jìn)行識別。2008 年,Lichtenauer[9]等通過改進(jìn)的動態(tài)時間規(guī)整算法對120 個荷蘭手語進(jìn)行識別。但這些方法難以保證快速準(zhǔn)確地估計人手姿態(tài),同時它們無法實現(xiàn)近距離的高精度手勢識別[10]。
2012 年,Leap 公司推出了小型運(yùn)動控制系統(tǒng)Leap Motion,可以追蹤多個手掌并識別手勢,其識別精度為0.01mm[11]。Leap Motion 的基礎(chǔ)技術(shù)是飛行時間(Time of Flight,TOF)技術(shù)[12],是一種較專業(yè)的手勢采集設(shè)備[13]。Leap Motion傳感器不同于Kinect對視野范圍內(nèi)追蹤到物體的整體框架描述,其方法是通過對手部信息包括指尖、關(guān)節(jié)點、方向向量、法向量等的精細(xì)化描述,利用這些信息實現(xiàn)對手勢的特征提取和準(zhǔn)確識別。
本文中,我們設(shè)計一種基于Leap Motion 的非接觸式手功能評估系統(tǒng),探測手各個部位在空間位置,比較兩手的手勢差異,完成對患側(cè)手的評價,從而幫助醫(yī)師評估其手功能康復(fù)情況,做出正確判斷,提出有效治療病患手的方案。
對病患手的評估,需要考慮兩種情況。當(dāng)患者非病患手功能正常時,比較病側(cè)手和健側(cè)手的各種姿勢的差異程度;當(dāng)患者的雙手都存在病患或者一只手缺失的時候,就需要病患手和一只第三方的健康手進(jìn)行比較。為了對任意手都可以進(jìn)行數(shù)據(jù)的標(biāo)準(zhǔn)評估,首先進(jìn)行坐標(biāo)標(biāo)準(zhǔn)化和尺寸標(biāo)準(zhǔn)化。然后,通過計算兩手的關(guān)節(jié)點間差異度,指尖到掌心的歐幾里得距離和指尖的向量點積差異度就能得出兩手間差異度。
Leap Motion 定義了名叫finger 的對象,包含五個變量,thumb,index,middle,ring,pinky,代表了拇指、食指、中指、無名指和小指,通過finger可以獲取多種數(shù)據(jù)信息。利用Leap Motion,首先應(yīng)獲取當(dāng)前幀手池中手的數(shù)量,一般應(yīng)當(dāng)為兩只手:一只是基準(zhǔn)手,一只待測手。在這里,基準(zhǔn)手是健側(cè)手,待測手是患側(cè)手。當(dāng)基準(zhǔn)手和待測手進(jìn)行比較的時候,根據(jù)雙手的左右不同,可以判斷是同側(cè)還是異側(cè),即同側(cè)時,基準(zhǔn)手和待測手的方向相同,而異側(cè)時,基準(zhǔn)手和待測手的方向相反。兩只手變換重疊到一起才能比較,因此需要對手進(jìn)行坐標(biāo)變換。這里,我們假設(shè)測試的雙手都是異側(cè)的,因此,我們首先將一只異側(cè)手變化為同側(cè)手。
2.1.1 手的坐標(biāo)標(biāo)準(zhǔn)化
Leap Motion 的默認(rèn)坐標(biāo)系采用的是右手笛卡爾坐標(biāo)系,如圖1(a)所示,原點O在設(shè)備中心,X軸和Z 軸水平,Y 軸豎直。為實現(xiàn)手模型的坐標(biāo)標(biāo)準(zhǔn)化,我們需要構(gòu)建一個手的坐標(biāo)系,原點O'為手掌心,掌心到中指指尖的方向為Z 軸,掌平面法方向為Y 軸,Z 軸和Y 軸所在平面的法方向為X 軸,如圖1(b)所示。
圖1 Leap Motion坐標(biāo)系和構(gòu)建的手坐標(biāo)系
通過Leap Motion 檢測出手各點的位置是Leap Motion 坐標(biāo)系的,需要把手的坐標(biāo)變換到新建的手坐標(biāo)系中,在數(shù)學(xué)表達(dá)上,兩個坐標(biāo)系的坐標(biāo)變換是通過一個矩陣實現(xiàn)的。首先考慮平移,即使Leap Motion 坐標(biāo)系的原點O與手坐標(biāo)系的原點O'重合。
通過平移矩陣T 和旋轉(zhuǎn)矩陣R 可將手上每個點P在Leap Motion 坐標(biāo)系中的坐標(biāo)變換成新建的手坐標(biāo)系的坐標(biāo)P',設(shè)P在Leap Motion 坐標(biāo)系中的坐標(biāo)為(x,y,z),P' 在手坐標(biāo)系的坐標(biāo)為(x',y',z'),則坐標(biāo)變換公式可表示為
2.1.2 手的尺寸標(biāo)準(zhǔn)化
當(dāng)基準(zhǔn)手和待測手分別為兩個人的手時,由于不同人的手大小都有差異,要實現(xiàn)手差異比較必須對手進(jìn)行尺寸標(biāo)準(zhǔn)化。我們通過基準(zhǔn)手的中指長度和被測手的中指長度計算尺寸參數(shù),用來對被測手進(jìn)行尺寸標(biāo)準(zhǔn)化。設(shè)基準(zhǔn)手的中指長度為l0,被測手的中指長度為l1,則尺寸標(biāo)準(zhǔn)化比例參數(shù)ρ可表示為
設(shè)被測手骨節(jié)點的坐標(biāo)為J,則尺寸標(biāo)準(zhǔn)化后的標(biāo)準(zhǔn)手骨節(jié)點J'的坐標(biāo)可用式(3)計算:
其中,Ji為被測手第i 個骨節(jié)點的坐標(biāo),Ji'為進(jìn)行尺寸標(biāo)準(zhǔn)化后被測手第i個骨節(jié)點的坐標(biāo)。
比較兩手差異度的方法有很多,不同的方法體現(xiàn)的手勢差異的程度不同,本文通過兩手的各個關(guān)節(jié)點間差異度,指尖到掌心的歐幾里得距離和指尖向量點積三種方法來綜合評價基準(zhǔn)手和患側(cè)手的差異程度。
2.2.1 基于關(guān)節(jié)點間差異度的兩手比較
每只手有五根手指,每根手指在Leap Motion手模型中由四塊骨頭組成,每塊骨頭由兩個關(guān)節(jié)點確定,骨頭的開始位置點為前關(guān)節(jié),骨頭的結(jié)束位置點為后關(guān)節(jié)。
基準(zhǔn)手和待測手中每一塊骨頭前關(guān)節(jié)之間的距離為前關(guān)節(jié)距離。設(shè)mdij為兩手第i根手指的第j塊骨頭的前關(guān)節(jié)距離,可以用以下公式計算:
其中,m0ij為基準(zhǔn)手第i根手指的第j塊骨頭的前關(guān)節(jié)坐標(biāo),m1ij為待測手第i根手指的第j塊骨頭的前關(guān)節(jié)坐標(biāo),||*||是三維向量的歐幾里得距離(下同)。
基準(zhǔn)手和待測手一塊骨頭后關(guān)節(jié)之間的距離為后關(guān)節(jié)距離。設(shè)ndij為基準(zhǔn)手和待測手第i根手指的第j 塊骨頭的后關(guān)節(jié)距離,可以用以下公式計算:
其中,n0ij為基準(zhǔn)手第i根手指的第j塊骨頭的后關(guān)節(jié)坐標(biāo),n1ij為待測手第i根手指的第j塊骨頭的后關(guān)節(jié)坐標(biāo)。
最后,通過下面公式就可以得出基準(zhǔn)手和待測手的關(guān)節(jié)點間差異度C:
其中,i是手的手指從1~5 變化,表示手的5 個手指;j從1~4變化,表示每個手指有4個骨頭。
2.2.2 基于指尖到掌心的歐幾里得距離差異度的兩手比較
由于指尖的位置會隨手勢變化而變化,因此我們也可以通過計算標(biāo)準(zhǔn)手和待測手每對手指的指尖到掌心的歐幾里得距離差的絕對值之和來表示手勢的差異度。手指指尖到掌心的距離s可以用圖2所示。
圖2 掌心到中指指尖的距離及方向
設(shè)掌心的坐標(biāo)為o,手指指尖的坐標(biāo)為vi,i=(1,…,5),則每個指尖到掌心的歐幾里得距離s可表示為
設(shè)s1i,s2i,i=(1,…,5),分別為標(biāo)準(zhǔn)手和待測手的指尖到掌心的歐幾里得距離,則歐幾里得差異度可用標(biāo)準(zhǔn)手和待測手指尖到掌心歐幾里得距離差的絕對值之和E可以用下式計算:
2.2.3 基于指尖向量點積差異度的兩手比較
歐幾里得差異度可表示指尖位置不同的兩手手勢之間的差異,但當(dāng)指尖位置相同手勢不同時,例如兩只手指彎曲狀態(tài)不同,歐幾里得差不能體現(xiàn)兩手之間的差異。因此我們可以進(jìn)一步通過對標(biāo)準(zhǔn)手和待測手對應(yīng)的指尖點求向量點積的方法表示兩手之間的差異度。設(shè),i=(1,…,5),為標(biāo)準(zhǔn)手指尖點的向量,,i=(1,…,5),為待測手手指指尖點的向量,則向量點積差異度D可表示為式(9),其中,D越小,則表示兩手差異越小。
2.2.4 三種比較方法進(jìn)一步說明
本文采用的三種差異度比較方法體現(xiàn)了患側(cè)手和健側(cè)手的差異程度。關(guān)節(jié)點間差異度方法實現(xiàn)簡單,但很多手勢的差異程度不能體現(xiàn)出來。指尖到掌心的歐幾里得距離差異度方法相較關(guān)節(jié)點間差異度方法做了很大改進(jìn),但是當(dāng)兩手的彎曲狀態(tài)不同而指尖位置相同時,歐幾里得差異度視為手勢相同,因此也存在缺陷。本文最后采用的向量點積差異度方法改善了前兩種的缺點。
在現(xiàn)實應(yīng)用中,可以每種方法單獨使用,也可以結(jié)合使用,如下:
其中λ1,λ2,λ3是各種方法結(jié)果的比例因子。
我們的演示系統(tǒng)包括一臺計算機(jī),一個放置雙手的鐵架,以及一個Leap Motion,如圖3所示。
圖3 實驗裝置和實驗過程
為了驗證系統(tǒng)的可行性和運(yùn)行效果,本文模擬兩種情況進(jìn)行系統(tǒng)的手勢識別差異的分析。第一種情況是病患的一只手出現(xiàn)問題而另一只手正常,則將患者正常的手作為健側(cè)手,出現(xiàn)的問題的手作為患側(cè)手,進(jìn)行差異度檢測并對患側(cè)手進(jìn)行診斷。當(dāng)病患只有一只手且這只手出現(xiàn)問題時,則是本文模擬的第二種情況,此時病患出問題的手作為患側(cè)手,另一個人的正常手作為健側(cè)手,即將他人的手作為標(biāo)準(zhǔn)進(jìn)行差異度檢測并對病患的患側(cè)手進(jìn)行診斷。下面本文分別針對這兩種情況詳細(xì)介紹。
共10位受試者分別做出圖4的兩組手勢,第一組手勢旨在研究手指是否彎曲對手勢差異的影響,包括圖4 的(a)和(b),其中(a)請每位受勢者左手和右手都做OK 手勢,(b)請每位受試者左手做OK手勢,右手在OK手勢的基礎(chǔ)上使中指,無名指和小拇指彎曲。第二組手勢旨在研究手指的彎曲程度對手勢差異度的影響,包括圖4 的(c)和(d),其中(c)請每位受試者左手拇指伸直,食指微屈作為標(biāo)準(zhǔn)手,右手拇指伸直,食指伸直;(d)請每位受試者左手手勢不變,將右手拇指伸直,食指彎曲。待系統(tǒng)顯示結(jié)果穩(wěn)定后記錄數(shù)據(jù),最后求平均值進(jìn)行分析。
圖4 實驗手勢
圖5 是實驗平臺顯示界面上手勢變化情況,其中帶有藍(lán)色背景的界面是Leap Motion 工作界面,三個參數(shù)C,E 和D 體現(xiàn)兩只手整體差異度。C 表示關(guān)節(jié)點間差異度,E 表示指尖到掌心的歐幾里得距離差異度,D 為向量點積差異度。從圖5 我們可以得知,當(dāng)兩手手勢相近時,每個參數(shù)的值都很小,如圖5(a)所示。反之當(dāng)兩手部分手指表現(xiàn)不同時,則相應(yīng)數(shù)據(jù)變大,如圖5(b)。
圖5 實驗結(jié)果
表1 和表2 為10 位受試者做兩組手勢的實驗數(shù)據(jù),以每組結(jié)果的平均值為依據(jù)進(jìn)行分析。首先分析患者手指是否彎曲對手勢差異結(jié)果的影響,如表1(a)所示,當(dāng)受試者左手和右手都做OK 手勢時,受試者差異值的平均值都很小;而當(dāng)受試者將右手的中指,無名指和小拇指彎曲時,從(b)的五個手指差異的平均值可看差異值明顯上升說明待測手和標(biāo)準(zhǔn)手差異很明顯。
表1 手指是否彎曲對手勢差異結(jié)果的影響T=Thumb,I=Index,M=Middle,R=Ring,P=Pink(下同)(a)左手和右手做OK手勢(對應(yīng)圖4(a)))
當(dāng)受試者左手大拇指伸直食指微屈,右手大拇指伸直食指伸直時結(jié)果如表2(a)所示,Index 平均值明顯高于其它幾個手指說明系統(tǒng)檢測出待測手和標(biāo)準(zhǔn)手的食指之間的差異;當(dāng)受試者將右手的食指彎曲時,結(jié)果如(b)所示,可見Index值明顯上升,且D 的平均值遠(yuǎn)高于右手食指伸直的D 值,說明手指的彎曲程度更大時D值更高。
表2 患者手指的彎曲程度對手勢差異結(jié)果的影響(a)左手大拇指伸直食指微屈,右手大拇指伸直食指伸直(對應(yīng)圖4(c))
本文模擬的第二種情況是病患只有一個手且這只手是病患手,則需要將另一個人的正常手作為健側(cè)手。我們請10 位受試者兩兩為一組,每組中一個人的左手作為健側(cè)手,另一個人的右手為患側(cè)手。成員做圖4的(a)和(b)手勢,表3為實驗結(jié)果,其顯示說明本系統(tǒng)進(jìn)行差異度比較時無論以自己的手作為健側(cè)手還是以別人的手作為健側(cè)手,檢測結(jié)果都基本相同。
表3 健側(cè)手和患側(cè)手分屬兩人對實驗結(jié)果的影響(a)左手和右做OK手勢(對應(yīng)圖4(a))
實驗結(jié)果表明,在患側(cè)手和健側(cè)手為同一個人的手的情況下,手指的差異度都能做出較準(zhǔn)確的判斷。
本文是基于人體交互設(shè)備Leap Motion,構(gòu)建了一個病患手評估系統(tǒng),該系統(tǒng)通過分析Leap Motion探測并建立的手部模型提取各個部位的特征信息,進(jìn)而可以判斷兩手的差異程度,可以提供給醫(yī)生或者專家作為量化數(shù)據(jù)的指標(biāo)以供參考。