周濤+余磊+邵武+錢燕
【摘要】 傳統(tǒng)二維圖像基于膚色的手勢(shì)識(shí)別受背景影響嚴(yán)重,針對(duì)這一情況,改進(jìn)了一種基于Kinect三維深度信息的指尖檢測(cè)及手勢(shì)識(shí)別算法。在獲取深度圖像后,利用開源庫OpenNI的手勢(shì)生成器獲取手心位置,設(shè)定鄰近深度閾值提取手部輪廓,同時(shí)跟蹤手部。結(jié)合OpenCV相關(guān)函數(shù)對(duì)圖像進(jìn)行進(jìn)一步形態(tài)學(xué)預(yù)處理,重置手心后通過道格拉斯-普克算法逼近輪廓,結(jié)合凹缺陷特征檢測(cè)指尖,識(shí)別手勢(shì)。實(shí)驗(yàn)結(jié)果表明,該方法能在復(fù)雜背景下有效的檢測(cè)指尖和識(shí)別手勢(shì),具有良好的魯棒性。
【關(guān)鍵詞】 Kinect openNI OpenCV 指尖檢測(cè) 手勢(shì)識(shí)別 人機(jī)交互
引言
在人機(jī)交互領(lǐng)域,手勢(shì)一直是研究的熱門對(duì)象。傳統(tǒng)的手勢(shì)識(shí)別一般都將二維顏色圖像中膚色和背景的區(qū)別分割出手部。傳統(tǒng)的利用膚色進(jìn)行手部的前景分割,利用人的膚色在YcrCb顏色空間或HSV顏色空間的聚類特性分割手部,但是容易受到光照影響,背景要求較高。本文通過引入Kinect的深度圖像改進(jìn)了一種有效分割手部,檢測(cè)指尖并識(shí)別數(shù)字手勢(shì)的方法。首先利用OpenNI的API獲取大概手心位置,根據(jù)手心位置深度信息值設(shè)定鄰近深度閾值分割手部區(qū)域,結(jié)合opencv庫相關(guān)函數(shù)預(yù)處理后,在傳統(tǒng)的凸包檢測(cè)上對(duì)輪廓做D-P逼近后,檢測(cè)凹缺陷特征算法得出指尖數(shù)。
一、手勢(shì)分割原理
基于深度信息圖像的手勢(shì)分割和指尖識(shí)別包括深度圖像采集、手勢(shì)分割、指尖檢測(cè)和結(jié)果顯示。通過打開Kinect的深度數(shù)據(jù)流獲取深度圖像,利用鄰近閾值分割手部,指尖檢測(cè)采用基于D-P逼近的凹缺陷檢測(cè)法,最后顯示結(jié)果。
二、實(shí)驗(yàn)過程
2.1系統(tǒng)整體流程
整個(gè)系統(tǒng)的流程圖如圖1所示。
2.2深度圖像獲取
Kinect包括RGB攝像頭、紅外攝像頭和紅外發(fā)射器組成的深度傳感器。Kinect相對(duì)普通攝像頭的優(yōu)點(diǎn)就是它的紅外傳感器可以通過黑白光譜的方式來探測(cè)空間內(nèi)的物體到傳感器的距離,生成3D景深圖像。本文中利用Kinect的3D深度傳感器以30幀/每秒獲取圖像,實(shí)時(shí)獲取手部動(dòng)態(tài)圖像。
2.3 OpenNI獲取手心位置
OpenNI是一個(gè)多語言、跨平臺(tái)的框架,提供相應(yīng)的API接口與外接的硬件進(jìn)行交互。目前OpenNI支持的硬件包括:3D Sensor 、RGB Camera、IR Camera和Audio Device 4類。我們?cè)陔xKinect 1m左右的距離內(nèi)揮動(dòng)手掌,利用OpenNI中的HandsGenerator類檢測(cè)并獲取手心位置。
2.4 手部分割
在檢測(cè)和追蹤到手心的位置后,可根據(jù)手心的深度值對(duì)深度圖像進(jìn)行分割。在分割前采取中值濾波的方式濾除圖像的噪聲。中值濾波的基本原理是把數(shù)字圖像或數(shù)字序列中一點(diǎn)的值用該點(diǎn)的一個(gè)鄰域中各點(diǎn)值的中值代替,讓周圍的像素值接近的真實(shí)值,從而消除孤立的噪聲點(diǎn)。中值濾波對(duì)邊緣信息的保護(hù)也非常適合本文對(duì)濾波的要求。濾波后再利用opencv庫提供的erode()和dilate()對(duì)圖像進(jìn)行形態(tài)學(xué)處理。
我們對(duì)圖像先進(jìn)行膨脹后腐蝕操作,然后根據(jù)公式(1)對(duì)手部進(jìn)行提取。
式(1)中,z為手心的深度,T為設(shè)定的手掌閾值,本文中設(shè)定閾值為5。經(jīng)過分割的圖像如圖(2)所示。圖(2)中左為未經(jīng)處理的圖,右圖為處理過的手部分割圖,對(duì)比發(fā)現(xiàn)處理后輪廓周圍噪點(diǎn)明顯變少,為進(jìn)一步輪廓提取打下基礎(chǔ)。
其中中的p,q表示圖像X,Y維空間上的矩,n表示像素個(gè)數(shù)。
重置手心后對(duì)輪廓進(jìn)行D-P逼近。本文采用道格拉斯-普克算法優(yōu)化凸包。識(shí)別效果如圖3。圖3中表示的數(shù)字分別為原圖,深度圖,手部分割二值圖,手部分割圖,輪廓圖和識(shí)別結(jié)果。
三、實(shí)驗(yàn)結(jié)果和分析
實(shí)驗(yàn)環(huán)境:PC端CPU Core i5-4200H,內(nèi)存8GB,操作系統(tǒng)Windows10 。在Visual studio 2013 環(huán)境下,利用openNI開源庫結(jié)合opencv 2.4.9來進(jìn)行算法設(shè)計(jì)。傳感器為Kinect for XBOX360.深度圖像分辨率為640×480。
如圖4所示。本文算法可以有效檢測(cè)1到5個(gè)指尖。相對(duì)于傳統(tǒng)的相機(jī),Kinect所采集的深度信息能通過距離將背景信息去除,只對(duì)手部圖像進(jìn)行處理,很好的克服了環(huán)境的變化和背景的干擾等因素。本文將本文從實(shí)驗(yàn)中隨意每個(gè)數(shù)字取300幀圖像,統(tǒng)計(jì)檢測(cè)結(jié)果,得到表1數(shù)據(jù)。統(tǒng)計(jì)正確定義為伸出手指數(shù)和Result顯示結(jié)果數(shù)相同,否則 錯(cuò)誤。
四、結(jié)論
本文提出了一種基于深度圖像的手指分割和手指檢測(cè)方法。利用openNI找到手,利用深度信息分割手部,結(jié)合openCV相關(guān)函數(shù)對(duì)圖像進(jìn)行進(jìn)一步處理,利用道格拉斯-普克算法優(yōu)化凸包后,判斷出手指數(shù)目,且準(zhǔn)確率較高。實(shí)驗(yàn)結(jié)果表明,基于深度圖像的方法能夠克服相關(guān)環(huán)境影響,在優(yōu)化算法的情況下,準(zhǔn)確地識(shí)別手勢(shì),魯棒性較高。本文的方法可以為復(fù)雜背景下有效識(shí)別手勢(shì)提供參考。
參 考 文 獻(xiàn)
[1]程文山,談國新.基于膚色分割和 Camshift 的手勢(shì)識(shí)別研究[D]. 武漢: 華中師范大學(xué),2009
[2]陳艷艷,陳正鳴,周小芹. 基于 Kinect 的手勢(shì)識(shí)別及在虛擬裝配技術(shù)中的應(yīng)用[J]. 電子設(shè)計(jì)工程,2013,21(10):4-7.
[3]王勁東,武頻.一種基于Kinect的指尖檢測(cè)算法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016,(26)7:14-18.
[4]Douglas D H,Peucker T K.Algorithms for the reduction of the number of points required to represent a line or its caricature[j].The Canadian Cartographer, 1973,10(2):112-122.
[5]鄧瑞,周玲玲,應(yīng)忍冬. 基于 Kinect 深度信息的手勢(shì)提取與識(shí)別研究[J]. 計(jì)算機(jī)應(yīng)用研究,2013,30(4):1263-1265.
[6]Lee Jaemin, Hironori Takimoto, Hitoshi Yamauchi. A Robust Gesture Recognition based on Depth Data[C]. The 19th Korea-Japan Joint Workshop on Frontiers of Computer Vision. 2013:127-131.
[7]Jagdish L. Raheja, Ankit Chaudhary, Kunal Singal. Tracking of Fingertips and Centres of Palm using Kinect[C]. Computational Intelligence, Modelling & Simulation. 2011:248-252.
[8]李博男,林凡.基于曲率的指尖檢測(cè)方法[J].南京航空航天大學(xué)學(xué)報(bào),2012,44(4):587-591.