杜佳祥
(中國航空工業(yè)導(dǎo)彈院,洛陽471000)
在現(xiàn)階段,隨著機(jī)器視覺、計(jì)算機(jī)圖形學(xué)以及人機(jī)交互等相關(guān)技術(shù)的飛速發(fā)展,對于手勢識(shí)別的準(zhǔn)確性提出了更高的要求。目前國內(nèi)外學(xué)者已經(jīng)進(jìn)行了相關(guān)研究,重慶大學(xué)的彭露茜等人[1]基于模板匹配的思想,使用工業(yè)相機(jī)對手勢圖像進(jìn)行采集與處理,結(jié)合粒子濾波器與皮膚的橢圓模型實(shí)現(xiàn)手勢的動(dòng)態(tài)追蹤,并獲取手掌中心點(diǎn)的運(yùn)動(dòng)軌跡,以此為基礎(chǔ)提出使用軌跡追蹤的方法實(shí)現(xiàn)了對手勢的動(dòng)態(tài)追蹤與識(shí)別;清華大學(xué)祝遠(yuǎn)新等人[2]提出基于表觀的新型手勢識(shí)別方法,通過對用戶的動(dòng)態(tài)手勢建立相應(yīng)的表觀模型,包括手勢的運(yùn)動(dòng)表觀和時(shí)序信息等,確立對應(yīng)的手勢模型的參數(shù),該識(shí)別算法能夠?qū)崿F(xiàn)對10種以上的手勢在線實(shí)時(shí)識(shí)別;這兩種基于機(jī)器視覺的手勢識(shí)別方法優(yōu)點(diǎn)是成本相對不高,設(shè)備相對比較簡單,但是由于一個(gè)普通的攝像機(jī)無法獲取深度信息,并且很容易受到光線、膚色和背景的干擾,僅僅依靠機(jī)器視覺進(jìn)行手勢識(shí)別尤其是動(dòng)態(tài)手勢識(shí)別進(jìn)行人手模型細(xì)節(jié)動(dòng)作的實(shí)時(shí)重建是非常困難的,很難達(dá)到實(shí)時(shí)性和準(zhǔn)確性的要求。
Oka K等人[3]提出了一種基于Kinect的指尖檢測方法,通過紅外相機(jī)和RGB相機(jī)識(shí)別人手的五根手指的指尖,在增強(qiáng)現(xiàn)實(shí)桌面上,完成復(fù)雜背景下的指尖識(shí)別以及指尖運(yùn)動(dòng)追蹤。首先通過傳感器定位手掌位置,然后提取手掌輪廓,結(jié)合邊緣輪廓曲率特征法實(shí)現(xiàn)指尖的定位,再計(jì)算出手掌中央的位置及手掌掌心到指尖的距離,通過視頻中指尖手指的偏移距離來獲取手指的運(yùn)動(dòng)方向。但是由于Kinect的參數(shù)設(shè)置主要是針對追蹤相對距離比較大(0.5至4米)的全身的人體骨骼動(dòng)作的追蹤,所以相對獲取的手部的細(xì)節(jié)信息是不夠的,Kinect的識(shí)別精度與其他專門針對手部識(shí)別的設(shè)備相比精度較低。
對于上述手勢識(shí)別算法存在的問題,本文提出一種基于Leap Motion(以下簡稱Leap)的手勢識(shí)別方法,對現(xiàn)有基于模板匹配的手勢識(shí)別算法改進(jìn),加入有效性閾值對手勢類別進(jìn)一步判斷,實(shí)現(xiàn)手勢的分類與識(shí)別。
本文采用的手勢識(shí)別設(shè)備是Leap,該設(shè)備采用雙目立體視覺的方法獲取用戶的手勢信息。如圖1(a)所示,Leap為右手坐標(biāo)系,單位為毫米,坐標(biāo)系原點(diǎn)在控制器中心,XYZ三個(gè)坐標(biāo)軸的位置如圖中所示,Z軸平行與設(shè)備的兩條短邊,正方向是有指示燈的方向。
Leap內(nèi)部結(jié)構(gòu)如圖1(b)所示,其中包括三個(gè)LED指示燈以顯示設(shè)備是否正常運(yùn)行,兩個(gè)紅外相機(jī)組成雙目系統(tǒng)對手勢進(jìn)行檢測與識(shí)別。該設(shè)備的檢測區(qū)域是倒金字塔,設(shè)備中心為金字塔尖,有效檢測的高度范圍在Y軸的正方向25至600毫米左右。Leap的指尖識(shí)別與追蹤精度的平均值在0.7毫米左右。
圖1 Leap結(jié)構(gòu)圖
模板匹配在手勢識(shí)別領(lǐng)域是一種較為常用的方法,其主要思想是通過對兩個(gè)樣本進(jìn)行對比計(jì)算,得到兩個(gè)樣本之間的相似度用以判斷手勢,本文采取的也是基于模板匹配的手勢識(shí)別決策,首先對手勢進(jìn)行初步地分類,然后通過歐氏距離計(jì)算計(jì)算未知手勢與同類的手勢之間的相似度。
K最近鄰法的思路如下:若所提取的未知樣本在已知樣本的特征空間中與K個(gè)已知樣本最近(即為最相似),那么根據(jù)這K個(gè)樣本所屬的類別來決策未知樣本的類別。該算法可以數(shù)學(xué)表達(dá)為:
其中,x表示未知手勢的特征向量,di表示已知樣本集的特征向量,cj表示預(yù)先設(shè)置好的手勢類型,bj表示預(yù)先設(shè)置的cj最優(yōu)閾值。
K最近鄰法的有點(diǎn)在于無顯式學(xué)習(xí)過程,即不需要預(yù)先進(jìn)行訓(xùn)練過程,因此該算法時(shí)間復(fù)雜度為零[4]。在樣本庫中選取一定數(shù)量的樣本k1,k2,k3,…,km,樣本對應(yīng)的類別分別為w1,w2,w3,…,wn,可以通過式(2)來計(jì)算未知樣本和單個(gè)已知樣本之間的歐氏距離,然后根據(jù)得到的每一個(gè)類別的平均歐氏距離Ed(p,wi)對未知的樣本進(jìn)行分類,即將未知樣本歸類于歐氏距離最小的對應(yīng)樣本的類別。因此,K最近鄰法的分類規(guī)則為:若未知樣本p滿足式(2),則p的類別即為wi。
經(jīng)過上述的分類規(guī)則的決策之后,已經(jīng)能夠?qū)⑽粗獦颖境醪胶Y選分類完成,此時(shí),我們認(rèn)為用戶所做出的手勢在已知的多個(gè)樣本中有一定數(shù)量的已知類型的手勢與之對應(yīng),初步判定未知手勢屬于該類型。然而不同用戶在做相同的手勢時(shí)也會(huì)有一定的差異性,如果對未知的樣本在進(jìn)行類型的分辨時(shí),錯(cuò)誤識(shí)別的手勢數(shù)量相比于正確識(shí)別的手勢數(shù)量更多,則最終的手勢識(shí)別結(jié)果就為失敗。
為了避免上述情況的發(fā)生,提高手勢識(shí)別準(zhǔn)確率,本文提出的解決方案是:在對手勢的類別初步篩選之后,添加新的判斷機(jī)制對手勢的分類進(jìn)行二次篩選,考慮引入有效性閾值μ,首先將初步分類之后的手勢與和其相同類別的其他所有的類別已知的樣本計(jì)算平均相似度,定義與初步分類后的手勢類別相同的手勢樣本共有L個(gè),此L個(gè)樣本分別與未知樣本的單個(gè)歐氏距離分別為a1,a2,a3,…,aL則平均相似度可以表示為:
其中,Q表示平均相似度,L表示與未知手勢同一類別的手勢樣本數(shù)量。
通過式(3)獲得平均相似度Q之后,將該數(shù)值與設(shè)定的有效性閾值μ進(jìn)行對比,若滿足相似度Q小于有效性閾值μ,則表示該手勢的分類與識(shí)別正確,如圖2所示。
圖2 手勢識(shí)別與交互流程
首先,初始化手勢檢測成功的計(jì)數(shù)值X為0,設(shè)備獲取每一幀圖像,并檢測是否存在手勢,若存在手勢則計(jì)數(shù)值X增加,手勢不存在則返回初始化。Leap官方文檔指出設(shè)備的固有刷新頻率是0.01,即每隔0.01s設(shè)備將會(huì)刷新一幀手勢圖像,若直接以此刷新頻率進(jìn)行手勢的識(shí)別與判斷,將會(huì)導(dǎo)致整個(gè)交互操作的不自然,為了提高用戶在交互過程中的交互體驗(yàn)與舒適感,本文加入檢測閾值參數(shù)(設(shè)為10),當(dāng)手勢指令不斷觸發(fā),且連續(xù)次數(shù)大于等于該閾值時(shí)認(rèn)為該手勢的操作指令觸發(fā),此時(shí)計(jì)算歐氏距離Q,然后比較有效性閾值判斷手勢是否成功,若識(shí)別失敗則返回,若識(shí)別成功則結(jié)束程序,手勢識(shí)別流程結(jié)束。
本文選取26位用戶,定義以下三種手勢分別為M、R、E,每個(gè)用戶分別做出三種手勢,使用Leap采集以計(jì)算有效性閾值,如圖3所示。
圖3 手勢識(shí)別驗(yàn)證
根據(jù)實(shí)驗(yàn)結(jié)果對數(shù)據(jù)進(jìn)行整理得到歐氏距離分布折線圖如圖4所示,上面折點(diǎn)為正方形的折線為不同類手勢之間的距離分布,下面折點(diǎn)為三角形的折線為同類手勢之間的距離分布。
圖4 歐氏距離分布折線圖
從圖中能夠看出,兩條折線的交叉之處非常少,有明顯的分割線,當(dāng)歐氏距離值為95時(shí),能夠明顯地區(qū)分出兩個(gè)樣本手勢的相似度,因此本文的有效性閾值選擇為95。
確定有效性閾值之后,本文使用Leap設(shè)備對三種手勢各采集100組數(shù)據(jù)進(jìn)行實(shí)驗(yàn)驗(yàn)證。根據(jù)上述介紹的分類方法將手勢進(jìn)行初步篩選和分類,然后將未知樣本與樣本庫中的同類已知樣本進(jìn)行相似度的計(jì)算,獲得兩者之間的歐氏距離,最后與選定的有效性閾值進(jìn)行對比,采集三種手勢的樣本數(shù)量均為100個(gè),然后分別統(tǒng)計(jì)M、R、E三種手勢的識(shí)別率情況,最終得到的實(shí)驗(yàn)結(jié)果如表1所示。
表1 本文方法對三種手勢的識(shí)別率
本文提出了一種新的手勢識(shí)別改進(jìn)算法,在現(xiàn)有的基于模板匹配的手勢識(shí)別算法中加入有效性閾值對手勢類別進(jìn)一步判斷,提高了手勢的識(shí)別率,且所使用的設(shè)備價(jià)格低廉、易于攜帶,故綜合考慮,本文算法的可靠性和有效性更高,對人機(jī)交互中的手勢交互具有一定的實(shí)際意義。