魏來(lái) 王迪 邢程 胡珊
摘要:為了實(shí)現(xiàn)更加自然的人機(jī)交互方式,利用微軟的kinect體感設(shè)備提出一種實(shí)時(shí)手指定位方法。本方法首先利用kinect的關(guān)節(jié)點(diǎn)信息獲取包含手部的區(qū)域,然后在此區(qū)域利用膚色顏色模型來(lái)提取出人的手部區(qū)域,并利用canny方法提取出手部的邊緣信息,最后利用手部邊緣曲線的曲率來(lái)判斷手指的指尖。本方法能快速準(zhǔn)確的定位手指位置,為進(jìn)一步進(jìn)行手指動(dòng)作的識(shí)別做基礎(chǔ)。
關(guān)鍵詞:人機(jī)交互;kinect;骨架跟蹤;膚色模型;k曲率
中圖分類號(hào):TP18 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)28-6713-03
人機(jī)交互(Human-Computer Interaction, HCI):是指為完成確定任務(wù),在人與計(jì)算機(jī)之間進(jìn)行信息交換的過(guò)程。傳統(tǒng)的人機(jī)交互方式(鼠標(biāo)、鍵盤(pán)、觸摸屏)則由于其便攜性不足而顯得捉襟見(jiàn)肘。在人機(jī)交互的研究中,能夠以自然的方式給計(jì)算機(jī)提供交互信息是當(dāng)前人機(jī)交互系統(tǒng)研究的熱點(diǎn)。
由于在傳統(tǒng)的人機(jī)交互中人類輸入給計(jì)算機(jī)的信息都是都是通過(guò)鍵盤(pán)和鼠標(biāo)來(lái)完成的,而鍵盤(pán)和鼠標(biāo)的操作都利用手部的動(dòng)作來(lái)實(shí)現(xiàn)的,因此在自然的人機(jī)交互中利用手部動(dòng)作來(lái)進(jìn)行人機(jī)交互是首選的方式。手部的手指是人體最靈活的部位,因此手指的動(dòng)作能提供豐富的三維信息,利用這些三維信息可以方便戶以操作真實(shí)世界物體的方法去操作計(jì)算機(jī),這必將極大的增強(qiáng)人機(jī)交互系統(tǒng)的真實(shí)感。對(duì)人體的手指進(jìn)行識(shí)別,然后對(duì)識(shí)別后的手指指尖進(jìn)行動(dòng)態(tài)的跟蹤,利用實(shí)時(shí)跟蹤的動(dòng)態(tài)三維信息來(lái)進(jìn)行人機(jī)交互,在自然人機(jī)交互系統(tǒng)中有很大的應(yīng)用前景。
隨著微軟Kinect設(shè)備的推出,利用這一廉價(jià)的硬件設(shè)備能夠?qū)崟r(shí)捕獲場(chǎng)景的彩色和深度信息。該文實(shí)現(xiàn)了是利用kinect來(lái)實(shí)時(shí)檢測(cè)手指的方法,本方法首先利用kinect的骨架信息定位關(guān)節(jié)點(diǎn)righthand和lefthand的位置信息[1],然后在此區(qū)域的附近利用膚色顏色模型來(lái)提取出人的手部區(qū)域,同時(shí)利用canny方法提取出手部的邊緣信息,最后利用手部邊緣曲線的曲率來(lái)判斷手指的指尖。
1 基于kinect的骨架追蹤
Kinect利用模式識(shí)別和機(jī)器學(xué)習(xí)的方法,識(shí)別出20個(gè)關(guān)節(jié)點(diǎn),通過(guò)20個(gè)關(guān)節(jié)點(diǎn)來(lái)表示一個(gè)骨架的,具體由下圖1可以看到。當(dāng)你在Kinect前面做動(dòng)作的時(shí)候,這些關(guān)節(jié)點(diǎn)的位置的也在不斷的變化,因此,通過(guò)對(duì)關(guān)節(jié)點(diǎn)之間位置的變化信息可以識(shí)別出人體的動(dòng)作。
Kinect SD中的骨豁追蹤系統(tǒng)有四個(gè)主要的對(duì)象,分別是骨豁數(shù)據(jù)流(SkeletonStream)、骨豁框架(SkeletonFrame)、骨豁模型(Skeleton)和關(guān)節(jié)點(diǎn)(Joint)。
當(dāng)Kinect正確識(shí)別操作者后,kinect 運(yùn)行庫(kù)中SkeletonFrameReady事件被觸發(fā)來(lái)處理骨骼跟蹤,該事件的參數(shù)包含兩個(gè)重要的對(duì)象:SkeletonFrame和Skeleton。在Skeleton對(duì)象的Joints屬性集合中保存了所有關(guān)節(jié)點(diǎn)的信息。每個(gè)關(guān)節(jié)點(diǎn)的信息都是一個(gè)Joint對(duì)象,其中的Position的X、Y、Z表示了三維位置。其中Z是Kinect到識(shí)別對(duì)象的距離。
利用kinect sdk中的MapSkeletonPointToColorPoint 函數(shù)可以把骨骼空間的點(diǎn)映射到彩色圖像空間中。因此只要在骨骼空間中找到代表hand right和hand left的骨架中的關(guān)節(jié)點(diǎn),就能利用MapSkeletonPointToColorPoint函數(shù)找到手部的區(qū)域大概位置。在此,以hand關(guān)節(jié)映射到彩色空間的點(diǎn)坐標(biāo)為中心設(shè)定一個(gè)區(qū)域來(lái)查找手部的區(qū)域。
2 基于 YCbCr 空間的手部區(qū)域提取
圖像中皮膚的顏色主要取決于血紅蛋白、黑色素和光照情況。由于顏色的濃度主要影響的是飽和度而不是色相,所以在光照一致的環(huán)境中,不同膚色人種的皮膚色調(diào)是大致不變的,這是靜態(tài)膚色模型構(gòu)建的基礎(chǔ)?;陬伾钠つw檢測(cè)具有簡(jiǎn)單、快速、直觀,不受物體形狀變化及視點(diǎn)改變等影響的優(yōu)勢(shì),受到研究者的普遍重視,具有重要的理論研究意義和應(yīng)用價(jià)值。
本文需要尋找一個(gè)對(duì)人的膚色分布有著很好聚類性的顏色空間,在這個(gè)空間中,利用膚色信息可以有效的將人的手勢(shì)和其他背景分離出來(lái),傳統(tǒng)的顏色空間有 RGB,HSV,YCbCr,LAB 空間等,由于RGB 空間的三個(gè)顏色分量具有較強(qiáng)的相關(guān)性,不能將色彩信息和亮度信息分離開(kāi)來(lái),故它不適合用于膚色分割,該文將重點(diǎn)放在YCbCr 空間上,并將 YCbCr 空間的膚色分割用到本系統(tǒng)中[2]。通過(guò)研究表明,發(fā)現(xiàn)在 YCbCr顏色空間進(jìn)行膚色分割具有如下特點(diǎn)[3]:
1) 在 YCbCr顏色空間,不同的膚色上分布在比較小的范圍內(nèi);
2) 在 YCbCr顏色空間,膚色的色度受到亮度變化的影響較??;
3) 在 YCbCr顏色空間,膚色聚類性較好,適合做分割。
YCbCr是色彩空間的一種,常用于數(shù)字視頻領(lǐng)域,其中Y是指亮度分量,Cb指藍(lán)色色度分量,而Cr指紅色色度分量。YCbCr它可以由 RGB 空間線性變換得到,RGB 變換到 YCbCr 空間的轉(zhuǎn)換公式為:
[Y= 65.481R+ 128.553G +24.966B+ 16Cb= 37.797R +74.203G+ 112.000B +128Cr=112.00R +93.786G +18.214B+ 128] (1)
通過(guò)實(shí)驗(yàn)表明,在YCbCr顏色空間中進(jìn)行膚色分割時(shí),由于Y分量的值表示的是亮度的變化,對(duì)膚色的影響較小,故只用考慮Cb和Cr兩個(gè)顏色分量。當(dāng)Cb的數(shù)值在區(qū)間[77,127],Cr的數(shù)值在區(qū)間 [147,173]時(shí)能取得較好的效果。圖顯示了利用YCbCr顏色模型分割手部區(qū)域的結(jié)果:
在獲取了手部區(qū)域的圖像之后,首先利用自適應(yīng)閾值方法把彩色圖像變化成二值圖像,然后利用canny算法獲取手部區(qū)域的邊緣輪廓。實(shí)驗(yàn)結(jié)果如圖所示,圖3為有彩色圖像變化得到的二值圖,圖4是手部的邊緣輪廓圖。
3 基于K曲率的手指定位
在得到了手部區(qū)域的輪廊之后,就可以利用某種算法來(lái)找出指尖點(diǎn)所處的位置。該文利用K曲率算法來(lái)進(jìn)行手指指尖識(shí)別[4][5],如圖5所示,P(i)為手部區(qū)域的輪廓線上的一個(gè)點(diǎn)。給定一個(gè)常數(shù)K,順時(shí)方向前進(jìn)K個(gè)點(diǎn),得到點(diǎn)P(i+K),逆時(shí)針?lè)较蚯斑M(jìn)K個(gè)點(diǎn),得到點(diǎn)P(i-K)。
圖形輪廓上的點(diǎn)P(i)的K曲率計(jì)算方法如下:以P(i)為起點(diǎn),P(i-k)為終點(diǎn)得到向量V1,以P(i)為起點(diǎn),P(i+k)為終點(diǎn)得到向量V2。利用向量V1與的向量V2之間夾角α的余弦作為點(diǎn)P(i)的K曲率。夾角計(jì)算公式如公式(2)所示。
[cosα=V1?V2|V1||V2|] (2)
通過(guò)判斷向量V1和V2的夾角α是否在某一范圍內(nèi),來(lái)判斷輪廓上的點(diǎn)P(i)是否為指尖點(diǎn)。所選擇的判斷角度大小要合適,如若判斷角度太大,可能會(huì)將手腕處那一段誤認(rèn)為為指尖;當(dāng)手指較短時(shí)或者由于離Kinect較遠(yuǎn),造成截取圖片中手指較短時(shí),測(cè)出的角度會(huì)很大,如若判斷角度太小,就無(wú)法識(shí)別出指尖。經(jīng)過(guò)實(shí)驗(yàn)發(fā)現(xiàn)當(dāng)K=20及α<50時(shí),有比較理想的效果。
4 結(jié)束語(yǔ)
由實(shí)驗(yàn)分析可知,采用本文的方法能實(shí)時(shí)的檢測(cè)到手指指尖。在獲取了手指的位置信息后,就可以利用kinect sdk開(kāi)發(fā)包把彩色圖像空間的位置信息映射到深度空間,進(jìn)而就能獲取手指的動(dòng)態(tài)深度信息。利用手指的動(dòng)態(tài)深度信息就能判斷手指的動(dòng)作,從而為高級(jí)的人機(jī)交互系統(tǒng)提供信息來(lái)源。
參考文獻(xiàn):
[1] 吳國(guó)斌,李斌,閻驥洲.Kinect人機(jī)交互開(kāi)發(fā)實(shí)踐[M].北京:人民郵電出版社,2013.
[2] Chai D,Ngan K N. Locating facial region of a head and shoulders color image[C].Proceedings of the 3rd International Conference on Automatic Face and Gesture Recognition,1998:124-129.
[3] 江鳳兵.不同顏色空間膚色檢測(cè)算法的研究[D].贛州:江西理工大學(xué),2011.
[4] Trapero Cerezo.3D Hand and Finger Recognition using Kinect. Universidad de Granada,2012.
[5] 王松林.基于Kinect的手勢(shì)識(shí)別與機(jī)器人控制技術(shù)研究[D].北京:北京交通大學(xué),2014.