陳濱++時(shí)巖
摘要:利用微軟Kinect體感設(shè)備進(jìn)行骨骼數(shù)據(jù)采集,開(kāi)發(fā)出一款利用手勢(shì)動(dòng)作控制計(jì)算機(jī)的體感虛擬鼠標(biāo)軟件。并在開(kāi)發(fā)過(guò)程中設(shè)計(jì)并提出一種基于RGB-D信息的人體手勢(shì)動(dòng)作檢測(cè)及識(shí)別方法來(lái)處理Kinect輸出的彩色影像和深度影像。該方法分別利用DBSCAN與K-means聚類算法獲取手勢(shì)操作特征中的位置信息和方向信息來(lái)識(shí)別手勢(shì)操作,實(shí)驗(yàn)結(jié)果證明了該方法的可行性。借助基于該方法開(kāi)發(fā)的虛擬鼠標(biāo)軟件,用戶只需要做出一些簡(jiǎn)單的手臂動(dòng)作即可操作虛擬鼠標(biāo)完成對(duì)計(jì)算機(jī)的控制。
關(guān)鍵詞:計(jì)算機(jī)應(yīng)用;手勢(shì)識(shí)別;聚類;Kinect
中圖分類號(hào):TP393.0
文獻(xiàn)標(biāo)識(shí)碼:A
DOI:10.3969/j.issn.1003-6970.2016.02.012
引言
目前電腦主要依靠鍵盤輸入和鼠標(biāo)點(diǎn)擊圖形用戶界面(GUI)來(lái)實(shí)現(xiàn)人機(jī)互動(dòng)。Kinect作為微軟推出的一種新型體感設(shè)備及基于動(dòng)作和聲音感應(yīng)的體感技術(shù),它創(chuàng)造了一種與眾不同的人機(jī)互動(dòng)模式——自然用戶界面(Nature User Interface)?;贙inect體感設(shè)備和體感技術(shù),我們身邊的電腦將越來(lái)越能夠理解人類的手勢(shì)和語(yǔ)言,電腦也將在本質(zhì)上更具人性化。
Kinect提供了一系列新技術(shù),諸如深度傳感、骨骼追蹤、語(yǔ)音和人體識(shí)別等,開(kāi)創(chuàng)了新的人機(jī)界面基礎(chǔ)。Kinect首先被應(yīng)用到游戲開(kāi)發(fā),譬如賽車、球類運(yùn)動(dòng)和虛擬城市等。但游戲僅僅是Kinect應(yīng)用的一個(gè)小方面,它致力于應(yīng)用到各種不同的設(shè)備上面,包括Windows的電腦、電視、手機(jī),來(lái)創(chuàng)造新的自然用戶界面。不可否認(rèn),Kinect已經(jīng)成為當(dāng)前學(xué)術(shù)界和產(chǎn)業(yè)界研究開(kāi)發(fā)的熱點(diǎn)。
本文通過(guò)開(kāi)發(fā)體感虛擬鼠標(biāo),利用Kinect體感設(shè)備進(jìn)行數(shù)據(jù)采集,并基于RGB-D(Red Green Blue-Depth)信息進(jìn)行行為檢測(cè)、行為識(shí)別處理,通過(guò)處理其輸出的彩色影像串流數(shù)據(jù)(RGB信息)和深度影像串流數(shù)據(jù)(Depth信息),并對(duì)這些特征數(shù)據(jù)采用聚類分析算法來(lái)獲得手掌的位置信息和手臂的運(yùn)動(dòng)方向信息來(lái)識(shí)別用戶的手勢(shì)特征,使得用戶可以通過(guò)手勢(shì)操作來(lái)控制電腦。
1 手勢(shì)動(dòng)作識(shí)別系統(tǒng)概述
1.1 Kinect
Kinect是美國(guó)微軟公司于2010年11月4日推出的Xbox 360游戲機(jī)體感周邊外設(shè)的正式名稱,Kinect集成傳感器、處理芯片和軟件中間件在內(nèi)。其中,傳感器又包括:紅外激光(也有人稱之為“結(jié)構(gòu)光”),用于三維點(diǎn)云捕捉,像素為640x480,含像素深度;基于點(diǎn)云的彩色影像(像素為1600x1200),能夠顯著改善視覺(jué)效果;可進(jìn)行語(yǔ)音識(shí)別的音頻麥克風(fēng)。這些信號(hào)的處理離不開(kāi)一項(xiàng)核心技術(shù):由PrimeSense公司生產(chǎn)的芯片和軟件中間件。其中,軟件中間件包括:
(1)參考設(shè)計(jì)(Reference Design),獲取三維影像的深度;
(2)NITE(Nature Interface Technology Enhanced)中間件,處理深度數(shù)據(jù)(特征檢測(cè)和姿勢(shì)識(shí)別)。
其產(chǎn)品結(jié)構(gòu)如圖l所示:
1.2 系統(tǒng)功能模塊設(shè)計(jì)
整個(gè)系統(tǒng)分為界面顯示模塊和控制模塊,顯示模塊完成獲取的影像顯示及交互顯示,控制模塊負(fù)責(zé)Kinect相關(guān)管理和數(shù)據(jù)獲取,并進(jìn)行骨骼數(shù)據(jù)的處理及動(dòng)作識(shí)別的控制,進(jìn)而完成交互控制。詳細(xì)的系統(tǒng)功能模塊設(shè)計(jì)如下圖所示:
從上述功能模塊設(shè)計(jì)可以看出,控制模塊是實(shí)現(xiàn)系統(tǒng)功能的關(guān)鍵模塊,其主要功能是處理由Kinect采集的彩色影像,并進(jìn)一步處理在二維的RGB圖像上增加的Kinect深度信息以形成骨骼數(shù)據(jù)來(lái)研究手勢(shì)的識(shí)別,這與傳統(tǒng)的僅僅基于RGB圖形信息獲得動(dòng)作手勢(shì)有所不同。
由于微軟Kinect SDK并沒(méi)有包含手勢(shì)識(shí)別引擎,因此需要我們結(jié)合實(shí)際系統(tǒng)需求與最佳實(shí)踐來(lái)設(shè)計(jì)一種手勢(shì)識(shí)別方法。
2 基于RGB-D信息的手勢(shì)檢測(cè)方法
傳統(tǒng)的基于計(jì)算機(jī)視覺(jué)的技術(shù)區(qū)分人手掌有一定的困難,通常需要加上一些限制,如使用白色背景,或者讓用戶穿戴特殊顏色的手套來(lái)作區(qū)分。這些方法的目的是為了降低分割的難度,提高分割的精準(zhǔn)性,但是這種方法對(duì)于用戶有很大的限制。本文利用Kinect的深度探測(cè)技術(shù),首先識(shí)別場(chǎng)景中的目標(biāo)人物手臂,然后利用Kinect進(jìn)行特征選擇,并對(duì)特征數(shù)據(jù)進(jìn)行處理,最后采用聚類算法獲取聚類結(jié)果。
2.1 目標(biāo)識(shí)別
目前用來(lái)進(jìn)行目標(biāo)檢測(cè)的方法主要有3種:背景相減法、光流計(jì)算法和幀差法。本文采用的是基于深度信息的背景相減法。
與傳統(tǒng)的背景相減法相同,基于深度信息的背景相減法也是首先在沒(méi)有目標(biāo)出現(xiàn)的場(chǎng)景中提取背景模型,只不過(guò)提取的背景模型是圖像中各個(gè)點(diǎn)的深度信息。計(jì)算公式為
其中,Bk(z)為背景圖像上第k個(gè)點(diǎn)的深度值,Nk(z)為當(dāng)前幀上第k個(gè)點(diǎn)的深度值,δ為設(shè)定的閾值,當(dāng)G(k)=1時(shí),表明該點(diǎn)為目標(biāo)物體上的點(diǎn)。
在實(shí)際操作中,Kinect傳輸來(lái)的數(shù)據(jù)會(huì)包含目標(biāo)人物的正面信息以及部分側(cè)面信息。因?yàn)槲矬w的正面各點(diǎn)具有大致相同的深度值,且其深度值必定小于其側(cè)面的深度,因此可通過(guò)提取符合公式1條件的所有點(diǎn)中的最小深度值,并將其余各點(diǎn)的深度值與深度最小值做差值計(jì)算,當(dāng)差值的絕對(duì)值在某一閾值范圍內(nèi)時(shí),表明此點(diǎn)為目標(biāo)正面的點(diǎn)。
2.2 手掌位置提取
在整個(gè)虛擬鼠標(biāo)系統(tǒng)中,手臂的位置特征起到相當(dāng)重要的作用。相同的手型在不同的位置可以表達(dá)出不同的含義。本文所提方法首先通過(guò)Kinect獲取位置特征數(shù)據(jù),然后對(duì)位置特征數(shù)據(jù)采用主成分分析法處進(jìn)行處理,最后利用DBSCAN(Densiy-Based SpatialClustering ofApplications with Noise)聚類算法進(jìn)行聚類分析。
本文方法首先利用Kinect SDK中自帶的NITE(Nature Interface Technology Enhanced)函數(shù)獲取目標(biāo)個(gè)體上半身中如下3個(gè)主要骨骼節(jié)點(diǎn)的3D坐標(biāo):左手、左肘與左肩。然后計(jì)算這3個(gè)骨骼節(jié)點(diǎn)兩兩之間的相互關(guān)系,從而構(gòu)成維度為3的單手位置特征。
有了手臂位置的特征數(shù)據(jù)后,本文方法開(kāi)始分析手臂在空間的分布密度情況,并對(duì)不同的分布密度情況進(jìn)行聚類。在傳統(tǒng)的聚類算法中,,DBSCAN算法就是一種基于密度的聚類算法。該算法將具有一定密度的區(qū)域劃分為簇,可以在含有“噪聲”的空間數(shù)據(jù)集中發(fā)現(xiàn)任意形狀的簇集。因此,本文方法采用基于密度的DBSCAN聚類算法進(jìn)行手臂位置聚類。
DBSCAN算法利用簇的高密度連通性,采用迭代查找的方法,查找并計(jì)算在已知給定掃描半徑eps的范圍內(nèi)的對(duì)象數(shù)量,當(dāng)對(duì)象數(shù)量超過(guò)已知給定的最小值時(shí),就構(gòu)成一個(gè)聚類結(jié)果。為了獲取最優(yōu)的聚類結(jié)果,在實(shí)驗(yàn)過(guò)程中不斷優(yōu)化參數(shù)eps和給定的最小值,最終獲得相對(duì)最優(yōu)的聚類結(jié)果。
2.3 手臂運(yùn)動(dòng)方向提取
人體手勢(shì)中,位置特征占據(jù)主要作用,方向信息起到補(bǔ)充作用。本文首先通過(guò)Kinect設(shè)備獲取方向信息,然后利用OpenCV圖像處理方法對(duì)方向信息進(jìn)行處理,得到方向特征信息,最后利用K-means聚類算法對(duì)方向特征進(jìn)行聚類,得到方向單元。
手勢(shì)的方向信息主要分為兩個(gè)部分:手型的方向和手肘與手腕構(gòu)成的方向。
在手型方向上,本文方法首先通過(guò)Prime Sense提供的手跟蹤函數(shù)獲取手心3D坐標(biāo),然后利用OpenCV的圖像處理相關(guān)函數(shù)cvThreshold等將手部的坐標(biāo)信息進(jìn)行二值化處理,利用函數(shù)cvFindContours、cvConvexHu112和cvConvexityDefects等方法分別獲取手的輪廓、凸起和凹陷等圖像信息。通過(guò)結(jié)合Kinect原始的3D坐標(biāo)信息進(jìn)一步確定手的指尖坐標(biāo)。最后計(jì)算手心坐標(biāo)到指尖坐標(biāo)的單位向量(x1,y1,zl),得到手勢(shì)方向信息。
在手肘與手腕構(gòu)成的方向上。利用Kinect獲得的雙手手肘坐標(biāo)和手腕坐標(biāo),計(jì)算手肘到手腕的單位向量(X2,y2,z2),得到手肘方向信息。
得到上述兩類方向信息后,本文方法引入K-means聚類算法,對(duì)方向信息進(jìn)行聚類分析。實(shí)際情況中,在方向特點(diǎn)上我明年可以憑經(jīng)驗(yàn)直觀地確定為東、南、西、北、東南、西南、東北、西北等8個(gè)方向,因此,在可以確定聚類結(jié)果數(shù)量和選取有代表性的坐標(biāo)作為這8個(gè)聚類的初始中心的情況下,本文方法采用K-means聚類算法獲取方向單元。具體的實(shí)施步驟如下所示:
(l)設(shè)定8個(gè)方向的單位向量作為初始化簇心,如(0,0,1)作為方向向北的初始化簇中心;
(2)分別計(jì)算每個(gè)對(duì)象到各個(gè)簇中心的歐幾里得距離,將對(duì)象分配到最近的簇中心;
(3)當(dāng)數(shù)據(jù)庫(kù)中所有對(duì)象分配完畢,計(jì)算每個(gè)簇中所有對(duì)象的平均值。
3 實(shí)驗(yàn)結(jié)果分析
3.1 手勢(shì)語(yǔ)識(shí)別實(shí)驗(yàn)
手勢(shì)語(yǔ)是人們?cè)谶\(yùn)用手臂時(shí),所出現(xiàn)的具體動(dòng)作與體位。它是人類最早使用的、至今仍被廣泛運(yùn)用的一種交際工具。在一般情況下,手勢(shì)既有處于動(dòng)態(tài)之中的,也有處于靜態(tài)之中的。在長(zhǎng)期的社會(huì)實(shí)踐過(guò)程中,手勢(shì)被賦予了種種特定的含義,具有豐富的表現(xiàn)力。本實(shí)驗(yàn)選取了30個(gè)常見(jiàn)手勢(shì)語(yǔ)進(jìn)行識(shí)別實(shí)驗(yàn),通過(guò)對(duì)圖3中的手勢(shì)語(yǔ)進(jìn)行識(shí)別試驗(yàn),來(lái)驗(yàn)證本文提出的基于RBG-D骨骼追蹤技術(shù)獲取并正確識(shí)別手勢(shì)的可行性。
該實(shí)驗(yàn)分以下兩個(gè)步驟進(jìn)行:
1)數(shù)據(jù)采集。對(duì)每個(gè)手勢(shì)語(yǔ)采集40個(gè)手指語(yǔ)樣本,一共1200個(gè)樣本,其中樣本是從4位同學(xué)在教室、寢室等環(huán)境下采集,且采樣者均無(wú)神經(jīng)相關(guān)及骨骼相關(guān)病史。
2)實(shí)驗(yàn)設(shè)計(jì)。首先從每個(gè)手勢(shì)語(yǔ)樣本中隨機(jī)抽取20個(gè)作為訓(xùn)練集,剩下的樣本作為測(cè)試使用。最后利用600個(gè)測(cè)試集對(duì)本文所提出的基于RGB-D的人體手勢(shì)動(dòng)作識(shí)別方法進(jìn)行測(cè)試,采用歐幾里得距離作為相似性度量準(zhǔn)則,并計(jì)算其識(shí)別率,實(shí)驗(yàn)結(jié)果如表1所示:
從表1可以看出,本文所提出的基于RGB-D信息的手勢(shì)檢測(cè)和識(shí)別方法的平均識(shí)別率為84.80%,其中一些手勢(shì)語(yǔ)(如A、C、SH)的識(shí)別率達(dá)到了90%以上,因此該方法取得了良好的效果。
3.2 圖片瀏覽與縮放測(cè)試
通過(guò)不同的手勢(shì)實(shí)現(xiàn)相應(yīng)的功能,揮手進(jìn)行移動(dòng)頁(yè)面,用雙手拉伸和上下移動(dòng)等進(jìn)行頁(yè)面的縮放、滾動(dòng)瀏覽、移動(dòng)等操作。當(dāng)用戶想選定某張圖片時(shí),只需揮手將光標(biāo)移動(dòng)到被選圖片上,并做出點(diǎn)擊手勢(shì),如圖4所示:
當(dāng)用戶想縮放選定圖片時(shí),只需合攏或張開(kāi)手掌,圖片變回相應(yīng)地縮小或者放大。如圖5所示:
從上面的程序測(cè)試結(jié)果可以看出,本文所開(kāi)發(fā)的基于RGB-D信息的手勢(shì)識(shí)別方法的虛擬鼠標(biāo)交互軟件滿足了人們?nèi)粘J褂秒娔X的操作需求,創(chuàng)造了一種全新的人機(jī)交互方式。
4 結(jié)論
本文方法有效地利用了微軟Kinect體感設(shè)備的優(yōu)勢(shì),通過(guò)對(duì)人體手勢(shì)的深度特征信息和Kinect骨骼跟蹤技術(shù)的使用,并將其有效地與DBSCAN和K-means聚類算法結(jié)合,分別從手掌位置和手臂運(yùn)動(dòng)方向兩個(gè)組成部分提取有效的手勢(shì)識(shí)別信息,形成本文所提出的基于RGB-D信息的人體手勢(shì)動(dòng)作識(shí)別方法,并以此為基礎(chǔ)開(kāi)發(fā)出能夠控制計(jì)算機(jī)的體感虛擬鼠標(biāo)軟件,實(shí)現(xiàn)一種全新的人機(jī)交互方式。但是,該方法目前的手勢(shì)識(shí)別準(zhǔn)確率有待進(jìn)一步提高,這也是未來(lái)軟件優(yōu)化的著力點(diǎn)。