陳濱++時巖



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