国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

人機交互過程中數(shù)字手勢的識別方法

2020-04-29 06:16賈丙佳李平
關(guān)鍵詞:手部手掌手勢

賈丙佳, 李平

(華僑大學 信息科學與工程學院, 福建 廈門 361021)

在眾多人機交互技術(shù)中,手勢不失為直接、高效的交互模式,手勢輸入超越了傳統(tǒng)的鼠標和鍵盤,是與計算機進行交互的新類別.隨著計算機相關(guān)技術(shù)的發(fā)展,體感技術(shù)的使用突破了平面的約束,可以讓用戶在不需要任何其他輔助設備的情況下,運用肢體動作對機器發(fā)出指令,從而實現(xiàn)用最自然的方式與機器對話[1-3].2010年,微軟推出Kinect圖像采集設備,能夠準確獲取復雜環(huán)境中人物和背景的深度圖像信息,并利用深度信息進行手勢識別,為用戶提供便捷、無接觸式的人機交互方式;同時,還可以利用Kinect進行動作的捕捉,如醫(yī)療康復[4]、體感游戲[5]等.

在早期的手勢識別中,大多需要借助一些輔助外設,用戶需要穿戴顏色手套或特制數(shù)據(jù)手套等[6-11],確定手部關(guān)節(jié),實現(xiàn)手勢提取,但這類方法局限于特定的輔助設備,使用不便,并不能給用戶帶來良好的交互體驗.近年來,許多研究者結(jié)合Kinect進行算法設計,獲得了一定的研究成果.如樊景超等[12]采用改進重心距離法識別指尖,該方法的局限性在于指尖位置不能低于掌心位置,做手勢時手掌不能有太大的旋轉(zhuǎn)角度.葛艷茹等[13]采用 Hu 矩陣檢測直線交點個數(shù)的方式,判斷手指個數(shù),但忽略了在指蹼部位與直線的交點問題,可能會造成誤檢測.方華等[14]利用模板匹配的方法進行4種手勢的識別,但這種方法需要事先提供手勢模板,對于沒有模板的手勢無法識別.王松林等[15]利用k曲率算法檢測手指指尖,但其所取k值對于不同大小的手掌并不具有普適性.文獻[16-17]對手勢區(qū)域提取相應的特征,運用分類算法進行識別.Keskin等[18]使用深度傳感器采集手勢三維模型,并對相同手勢分不同的部分運用支持向量機(SVM)進行手勢識別.文獻[19-20]通過提取手部特征向量,運用SVM對預定的手勢進行識別.Domini等[21]結(jié)合距離和曲率特征,運用多級SVM識別手勢.曹皺清等[22]從深度圖像中分割出手勢區(qū)域,并用決策樹識別手勢,但需要預先采集數(shù)據(jù)、進行訓練,獲得的模型和特征復雜,運算量大,并不適合實際操作.

本文為了提高手勢識別效率、降低算法復雜度,同時給使用者帶來舒適的體驗,提出一種基于Kinect融合深度信息和骨骼信息的數(shù)字手勢識別方法.

1 手部檢測與分割

1.1 Kinect獲取數(shù)據(jù)的方式

Kinect是一款能夠采集環(huán)境深度信息的體感外設3D攝像機.包括彩色攝像機、深度傳感器、步進電機、麥克風陣列和發(fā)光二極管(LED).Kinect組件,如圖1所示.

圖1 Kinect組件Fig.1 Kinect components

圖1中:彩色攝像機如同普通RGB攝像頭一樣,從環(huán)境中捕獲彩色視頻數(shù)據(jù),在其內(nèi)部以流的方式進行傳輸;深度傳感器包括紅外發(fā)射器和紅外攝像機,紅外發(fā)射器在工作時,不斷以“偽隨機點”模式向鏡頭外發(fā)射紅外光,而紅外攝像機則捕捉物體反射的紅外光,通過內(nèi)建算法,就可得出Kinect可視范圍內(nèi)的深度數(shù)據(jù);在紅外發(fā)射器和彩色攝像機之間的發(fā)光二極管(LED),用于指示Kinect設備的工作狀態(tài);盒子底部是由4個相同的麥克風以直線排列組成的麥克風陣列,這樣設置不僅可以捕獲聲音,還可以定位聲源的位置;底座和主體部分的連接處安裝了一個步進電機,通過控制步進電機調(diào)整俯仰角,使Kinect獲取可視范圍內(nèi)盡可能多的有效數(shù)據(jù).

1.2 人體輪廓的提取與手部區(qū)域的分割

利用Kinect 進行深度圖像數(shù)據(jù)采集,通過一系列深度圖像幀返回16位灰度格式的深度數(shù)據(jù)流,運用內(nèi)建算法可以計算深度圖像中每一個像素到攝像頭的距離,并以mm為單位返回.當啟動骨骼數(shù)據(jù)流時,在返回的16位數(shù)據(jù)中,0~7用于表示人體編號的后三位二進制數(shù)據(jù)有效.如果這3位的數(shù)據(jù)為0時,代表該像素屬于環(huán)境,不屬于人體;如果這3位的數(shù)據(jù)為非0時,表明Kinect視野中有人體像素.剩下的13位用于表示該點與傳感器的相對距離.Kinect捕獲的普通圖像和深度圖像對比圖,如圖2所示.圖2(b)中:根據(jù)灰白程度,對距離攝像頭遠近的物體進行標示.

針對深度圖像中的每一個像素取出人體編號;然后,根據(jù)這個編號就可以實現(xiàn)人體像素和非人體像素的分離,能夠排除非人體像素對實驗造成的干擾.從復雜背景中分離出的人體深度圖像,如圖3所示.

(a) 普通圖像 (b) 深度圖像 (a) 環(huán)境深度圖 (b)人體深度圖圖2 Kinect捕獲圖像的對比圖 圖3 Kinect捕獲圖像的分離圖Fig.2 Comparison of Kinect captured images Fig.3 Separation of Kinect captured images

根據(jù)人們?nèi)粘W鍪謩輹r,手掌平面近似與水平面保持垂直且位于整個身體最前端的習慣,Kinect采集到手部區(qū)域的深度值大都處于同一深度范圍內(nèi),利用深度閾值法粗略提取手部區(qū)域的深度數(shù)據(jù).按照所采集到人體數(shù)據(jù)的最小深度值(Dmin)加深度閾值(T)的方法,就可分割出手部區(qū)域.根據(jù)實際測試,取80 mm

上式中:H(B,G,R)為提取的手部區(qū)域像素值;S(B,G,R)為人體像素值,其他區(qū)域為0;d為攝像頭到人體輪廓每個像素的距離.根據(jù)深度閾值法,對分割出的手部區(qū)域進行二維空間的投影,重建二維圖像.提取的手部區(qū)域分割圖,如圖4所示.

圖4 手部區(qū)域分割圖Fig.4 Hand region segmentation map

圖4是重建的二維RGB圖像,在進行手指數(shù)字識別時,可以對R,G和B任一通道中的數(shù)據(jù)進行處理.對于這3個通道的數(shù)據(jù)取值并沒有特殊要求,文中取R,G和B三個通道的數(shù)值分別為115,169和9.掌心圓的邊界同樣是提取B通道的數(shù)據(jù)進行手指數(shù)字識別.在采集手部數(shù)據(jù)時,采用了人體輪廓距攝像頭最近距離Dmin+T的方式,達到不限定人體必須位于攝像頭前的某一固定位置的目的.

1.3 手掌分割

根據(jù)Kinect骨骼追蹤系統(tǒng),實時讀取出手腕和手掌處的骨骼信息,并將其映射到手部區(qū)域的二維圖像中,計算過這兩點的直線l1的斜率.根據(jù)該斜率的負倒數(shù)和手腕點坐標,運用直線點斜式方程創(chuàng)建另一條垂直于l1的直線l2.具體有以下2個步驟.

利用創(chuàng)建的直線方程l2,將手掌二維坐標點帶入,判斷該點相對于直線的位置,即

當f1取值為0時,表明該點在直線上;當f1取值為大于或小于0時,表明該點不在直線上.在判斷出手掌點p1的取值情況f1后,對整個手部區(qū)域的像素坐標進行遍歷,保留和p1點的f1取值相同的像素點,即

上式中:H(i,j)為原始手部區(qū)域圖像的像素坐標;dst(i,j)為分割后的手掌區(qū)域圖像的像素坐標.

(a) 手部分割圖 (b) 分割結(jié)果 圖5 手掌分割圖Fig.5 Palm segmentation map

手掌區(qū)域被準確分割.手掌分割圖,如圖5所示.圖5(a)中:部分手臂像素對后續(xù)的處理造成一定的干擾,需將其分割掉;兩個藍色圓點為Kinect骨骼追蹤系統(tǒng)追蹤到的手掌和手腕骨骼點;區(qū)域分割線l2為這兩點建立的傾斜直線.圖5(b)為圖5(a)的分割結(jié)果.由圖5(b)可知:手掌區(qū)域被單獨分割出來,去除了手臂上的干擾像素,進行了邊緣平滑處理.

2 特征的提取與手指個數(shù)的識別

對分割出來的圖像進行形態(tài)學開運算,在保持手掌區(qū)域面積大體不變的情況下,分割掉手指處的纖細部分,這時計算分割后圖像的最小包圍圓;然后,對最小包圍圓的半徑適當延長5到10個像素單位,得到的同心圓作為掌心圓;最后,統(tǒng)計掌心圓邊界和圖5(b)所示的手掌區(qū)域分割圖中手指的相交次數(shù),將其作為一種特征識別手指個數(shù).

2.1 掌心圓的計算

Kinect骨骼追蹤系統(tǒng)可以直接定位手掌心坐標,但由于骨骼追蹤系統(tǒng)測量存在誤差,如果直接使用該結(jié)果,會嚴重影響最終識別精度.文中通過處理手掌區(qū)域圖像,獲得掌心位置的準確坐標,具體分為以下兩個步驟.

步驟1利用圖像處理中的形態(tài)學開運算,對手指區(qū)域的像素進行分割處理.

步驟2對保留的圖像區(qū)域計算最小包圍圓,手掌區(qū)域最小包圍圓,如圖6所示.

形態(tài)學開運算的實質(zhì)是對圖像進行先腐蝕后膨脹,這樣可以消除圖像上一些小的噪點,還能在纖細點處分離物體,且不會明顯改變圖像的有效面積.文中正是利用這一特性,將手指部位全部去除,保留不含手指的手掌區(qū)域像素.接著對該區(qū)域像素坐標進行遍歷,找出手掌區(qū)域距離圖像4個邊界最近的4個像素坐標值.邊界點像素坐標,如圖7所示.圖7中:A,B,C和D四點是滿足條件的手掌區(qū)域距離圖像邊界最近的4個像素點.

(a) 手指分割圖 (b) 最小包圍圓 圖6 手掌區(qū)域最小包圍圓 圖7 邊界點像素坐標 Fig.6 Minimum surrounding circle in palm area Fig.7 Pixel coordinates of boundary points

在獲得4個邊界像素坐標值后,尋找相鄰且相互之間距離最遠的3個點.AB,BC,CD和DA之間的距離為

過A,B和C這3個點的圓的方程為

(x-x0)2-(y-y0)2=r2.

將A,B和C三個點依次帶入上式,得到的方程組為

聯(lián)立以上方程組,求得圓心為

將x0和y0代入方程組中的任何一個式子,便可以求出半徑r,畫出最小包圍圓.由于手掌區(qū)域圖像是RGB圖,包含3個通道,所以圓的邊界也用3個通道畫出,并選用像素值為S(9,0,255),這里B通道的取值為第一個值9,其與圖5(b)圖的B通道取值保持一致,同時,圓邊界的寬度僅用一個像素值表示,從而為后續(xù)處理做鋪墊.

2.2 手指數(shù)字的識別

最小包圍圓包圍了不含手指的全部像素(圖6(b)),此時,僅需要對該最小包圍圓的半徑進行適當?shù)难娱L,以避免和手掌部分像素相交,并映射到圖5(b)中,就可獲得僅和手指相交的圓.經(jīng)過多次試驗,取r′=r+6,然后,以該半徑r′和掌心點(x0,y0)畫出另一個圓.手掌區(qū)域映射圖,如圖8所示.

擴大半徑的圓映射到手掌區(qū)域分割圖,如圖8(b)所示.圖8(b)中:圓的邊界僅和手指部分相交.通過計算出相交次數(shù),便可以識別出手指個數(shù),有以下4個步驟.

步驟1遍歷圖8(b)所示的圖像.圓的邊界像素坐標值為

上式中:C1=(i,j)表示將符合條件的像素坐標賦值給集合C1;disi,j(B,G,R)為B,G和R三個通道的像素值;disi,j(9,0,255)為節(jié)2.1畫掌心圓時的像素取值.

步驟2坐標排序.由于步驟1獲取的圓邊界坐標值是按照從左到右、從上到下排列的,并不符合圓按照順時針或者逆時針畫的規(guī)律,這時需要對這些坐標點進行排序.

步驟3運用“十字形”搜索窗口,沿著排序后的圓邊界坐標進行遍歷.“十字形”搜索窗口,如圖9所示.圖9中:中心點坐標(i,j)為像素坐標的位置.中心點坐標沿著圓的邊界進行遍歷,每遍歷一個坐標值,依次取出周圍相鄰4個坐標的像素值進行判斷.如果4個像素值都和手勢分割圖B通道的數(shù)值相等,則記錄下這個特征,并將這個特征存儲到另一個集合C2中,以便后續(xù)處理.

(a) 最小包圍圓 (b) 掌心圓 圖8 手掌區(qū)域映射圖 圖9 “十字形”搜索框 Fig.8 Palm area map Fig.9 Cross search box

步驟4統(tǒng)計特征,識別出手指個數(shù).對步驟3得到的集合C2進行從0~1或者從1~0變化次數(shù)的統(tǒng)計.如統(tǒng)計的次數(shù)為5,說明圓的邊界和手指相交了5次,進一步說明使用者伸出了5個手指,傳達的意思是數(shù)字5.集合C2為

至此,一幀手掌二維圖像數(shù)據(jù)處理完畢.重復以上步驟,可以實現(xiàn)對0~5任意輸入的手指數(shù)字圖像數(shù)據(jù)的處理,手指數(shù)字識別流程圖,如圖10所示.

采用掌心圓和手指相交的方式,只在于識別出手指個數(shù),并不涉及語義識別.對于任意組合的手指,均以手指個數(shù)作為數(shù)字識別結(jié)果,如若識別更多的數(shù)字,需用伸出更多根手指進行組合,只要獲得的掌心圓能夠和手指相交,就能準確識別出結(jié)果.另外,相對于傳統(tǒng)的各種觸摸接觸式人機交互方式,文中采用的是基于Kinect的非接觸式交互方式,使用者無需用身體的任何部位觸碰實際物體,僅僅依據(jù)動作手勢進行交互,更接近于人與人之間的交互模式,給使用者帶來自然、舒適的體驗.

圖10 手指數(shù)字識別流程圖Fig.10 Flow chart of finger digital recognition

3 實驗結(jié)果與分析

為了對提出的方法進行驗證,使用的計算機配置為Inert(R) Core(TM) i3-3220 CPU、4.00 GB安裝內(nèi)存、3.30 GHz主頻和Windows 7操作系統(tǒng),實驗數(shù)據(jù)來自Kinect for XBOX攝像頭.利用微軟Microsoft Visual Studio 2013作為開發(fā)平臺,并結(jié)合微軟官方Kinect for Windows SDK開發(fā)工具包.圖像的分辨率設置為640 px×480 px,視頻幀率為30 幀·s-1,進行手指數(shù)字識別實驗.文中要識別的6種數(shù)字手勢圖,如圖11所示.

(a) 數(shù)字0 (b) 數(shù)字1 (c) 數(shù)字2

(d) 數(shù)字3 (e) 數(shù)字4 (f) 數(shù)字5圖11 數(shù)字手勢圖Fig.11 Digital gesture map

表1 手勢識別結(jié)果Tab.1 Gesture recognition result

為了驗證該方法的實時性和準確性,在室內(nèi)的正常光照條件下,邀請了6位實驗者,對每個手勢采集600幀圖像,手指數(shù)字識別結(jié)果,如表1所示.表1中:η為識別率.

數(shù)字手勢識別界面,如圖12所示.圖12中:設計的界面實時顯示了手勢的識別結(jié)果;紅色圓圈即是掌心圓;右側(cè)是手指數(shù)字的識別結(jié)果和準確率;右下角是開始和停止識別按鈕.由圖12可知:文中方法對于0~5等6種數(shù)字手勢的識別率均達到100%,進一步說明了文中方法實時、準確.

對不同方法識別同種數(shù)字手勢0~5的結(jié)果進行列舉比較,不同方法的識別率,如表2所示.表2中:文獻[18-19]均采用SVM對提取的手勢特征進行訓練.

(a) 數(shù)字0 (b) 數(shù)字1 (c) 數(shù)字2

(d) 數(shù)字3 (e) 數(shù)字4 (f) 數(shù)字5 圖12 數(shù)字手勢識別界面Fig.12 Digital gesture recognition map

表2 不同方法識別率Tab.2 Recognition rate in different methods %

由表2可知:雖然SVM是用于處理小樣本數(shù)據(jù)的一種機器學習方法,但需先給定一定量的樣本進行訓練,而文中方法并不是基于樣本數(shù)據(jù)特征,無需給定任何樣本;對于1~5這種連續(xù)手勢的識別,須建立多分類支持向量機解決,這無疑增加了算法的計算復雜度.

4 結(jié)束語

利用Kinect采集的深度數(shù)據(jù)融合追蹤到的骨骼數(shù)據(jù)研究手指數(shù)字識別方法,對采集到的深度圖像進行一系列處理,得到掌心圓,根據(jù)掌心圓和手指相交的次數(shù),識別出手指個數(shù).實驗結(jié)果證明:該方法準確、高效,同時復雜度低,準確率高,適用于很多簡單的人機交互現(xiàn)實場景.對動態(tài)手勢如手勢軌跡進行跟蹤識別將會是下一步的工作.

猜你喜歡
手部手掌手勢
手部皮膚軟組織缺損修復的皮瓣選擇
尺動脈腕上皮支逆行島狀皮瓣修復手部皮膚軟組織缺損
封閉負壓吸引技術(shù)聯(lián)合游離股前外側(cè)穿支皮瓣修復手部大面積軟組織缺損
挑戰(zhàn)!神秘手勢
攤開手掌
手掌上的童話
勝利的手勢
把手掌放在畫紙上描一描,畫出一只考拉吧
認手勢說數(shù)字