王勁東,武 頻
(上海大學 計算機工程與科學學院,上海 200444)
一種基于Kinect的指尖檢測算法
王勁東,武 頻
(上海大學 計算機工程與科學學院,上海 200444)
指尖檢測是人機交互過程中的關鍵技術,因為人手的差異,對指尖的檢測總會存在一些誤判點。文中在基于曲率算法的基礎上,提出了利用凸包算法和平行向量進行指尖檢測的方法。該方法首先利用Kinect獲取人體的骨骼信息和深度信息圖像,通過人手的關節點鎖定手部位置,并利用人手膚色特征和邊緣檢測算法提取手部區域輪廓。然后在手部區域的輪廓上根據曲率來檢測類指尖點,結合凸包計算排除凹點和手臂點,最后根據手指的兩側接近平行的特性排除彎曲的手指或者非手指,最終檢測出有效的指尖。實驗結果表明,該方法在復雜背景下能夠對不同的類指尖點進行排除,并且有較高的檢測精度。
指尖檢測;曲率;凸包;平行向量;Kinect
人機交互[1]是指人與計算機可以用某種對話語言進行信息交換,包括計算機通過輸出設備或顯示設備給人提供需要的信息,以及人通過輸入設備向計算機輸入相關信息。目的討論如何使設計的計算機幫助人們更加安全可靠地、更加有效率地完成所要完成的任務。用戶借助必要的設備以自然的方式與虛擬環境中的對象進行交互作用、相互影響,從而產生親臨真實環境的感覺和體驗。
手勢作為人機交互過程中最重要的行為特征[2],已經廣泛用于機器人控制、視頻監控、多媒體教學和虛擬現實中。其中指尖特征又是手勢識別中最重要的特征,早期的指尖檢測是借助一定設備,如帶有顏色的手套[3]或者數據手套[4]。目前對于指尖的檢測都是基于形狀的模板匹配方法和基于輪廓的邊緣特性進行分析。基于形狀的模板匹配方法有歸一化互相關法[5]、廣義霍夫變換法[6]等。基于輪廓的邊緣特性進行分析的方法有很多。文獻[7]提出的邊緣曲率分析,利用膚色提取出手部區域輪廓,再根據曲率對指尖點進行檢測。文獻[8]使用改進的K向量方法,結合輪廓閾值進行檢測,實現食指的指尖檢測。文獻[9]在曲率檢測的基礎上,借助物理學中“勢”和“場”的概念,把勢太低的點判定為手臂點去除。文獻[10]則利用手指的徑向對稱特性來檢測各個指尖。隨著Kinect的應用,一些開始基于Kinect的手勢識別[11]也隨之出現,如文獻[12]。文中也是基于Kinect獲取深度圖像和目標人手部的關節點,再根據膚色分割獲取手部區域圖像,然后通過邊緣膨脹和腐蝕處理,最后利用文中提出的指尖檢測算法獲取有效的指尖。
Kinect[13]是微軟公司在2010年推出的一款XBOX360體感外部設備,是目前世界上唯一一款較為成熟的商業人體動作感知設備。Kinect可以玩游戲,還可以應用在醫療、教育、三維人體建模等領域。另外還有許多富有創意的應用應運而生,現在越來越多的人開始對Kinect進行研究。
Kinect在實際應用中最重要的是三只眼睛,依次為紅外攝影機、彩色攝像頭、紅外深度攝像頭。文中深度圖像正是由紅外攝影機和紅外深度攝像頭獲得,由深度圖像進行指尖檢測可以克服光照和其他物體或者人物的干擾。圖1(a)為Kinect獲取的人體深度圖像。Kinect可以追蹤到目標窗口里的六個人,并且能獲得兩個人骨骼信息“火柴人”[14]。第一代Kinect獲取人體20個骨骼關節點,新一代Kinect可以獲取人體25個骨骼關節點。Kinect將獲取的人物深度信息渲染后獲得人體關節點信息,如圖1(b)所示。

圖1 Kinect獲取的深度圖像和人體骨骼圖像
文中主要用到的就是手部的關節點來追蹤手部的位置,從而在復雜背景和復雜手勢下進行指尖檢測。
2.1 目標檢測人物手部的確定
Kinect可以獲取人體的骨骼信息,通過手部關節點可以獲取人手的位置。但是Kinect可以同時檢測到六個人,那么如何判定哪個才是需要檢測的人手至關重要。這就要借助Kinect獲取的深度信息,通過對不同人手部關節點的深度信息判定位于攝像頭最近的手部關節點才是需要的,這樣就可以排除目標檢測人物后面還有其他人的干擾。
2.2 獲取手部圖像
通過深度信息可以獲取目標檢測人手,下一步就是進行手部分割,把手部輪廓從圖像中分割出來,文中采用的是在線的自適應膚色模型[15]。首先以Kinect追蹤到的手部關節點為圓心,以半徑20 cm進行區域檢測,獲取手部膚色區域,提取其中的一小塊作為樣本。然后轉換為YCbCr顏色空間,通過膚色聚類獲取手部區域顏色空間分布進而分割出手部區域,在不同光照情況下進行檢測具有很好的魯棒性。在分割出手部輪廓邊緣時會有一些噪聲,手部的邊緣會有一些鋸齒和凸凹,需進行基于形態學的腐蝕和膨脹操作。最后利用中值濾波算法對手部邊緣輪廓進行平滑處理,得到的手部區域圖像如圖2(a)所示。
3.1 基于曲率的類指尖檢測


圖2 曲率檢測指尖點示意圖
曲率的值如式(1)所示。
(1)
實驗中取常數M為5,從公式可以看出曲率是在區間[-1,1]之間,所以采取一個閾值L來判斷類指尖點將曲率大于等于L的像素點篩選出來。經過曲率檢測所有的指尖點都能被檢測出來,但是也產生了很多誤判點,例如手指間的凹陷點和手部與手臂的一些切割點,如圖2(c)所示。
3.2 基于凸包算法的凹槽點和手臂點過濾
對于手部區域輪廓有很多的凸點和凹點,通過手部輪廓的這種凸凹性可以很好地排除由曲率檢測出來的類指尖點。首先介紹什么是凸包,可以想象用一根繩子圍住一片樹木,拉緊繩子就會形成一個多邊形。可以把樹木理解成平面上的點集,那么繩子圍成的多邊形就是這些平面點集的最小凸包多邊形。文中采用文獻[16]提出的凸包算法,求取手部輪廓的凸包點,只有在凸包上的點和由3.1節中曲率檢測后的類指尖點的交點才能第二次判斷為類指尖點,如圖3(a)所示,但是也把關節處切割點誤判為指尖點。這里采用一種基于距離的判定方法來排除關節處的切割點,即如果凸點到手部區關節點的距離大于該凸點到手部重心的距離,即判定為指尖點。可以利用圖像的幾何特征矩來確定。圖像的幾何矩能夠有效地描述對象的形態特征,一個圖像的(p,q)矩可以表示為:
(2)
其中,xp和yq為變換核;f(x,y)為二維圖像函數。
零階矩代表圖形輪廓的質量,一階矩代表輪廓的重心,這里把手部輪廓像素信息描述為二維函數g(x,y),其重心計算過程如下:
(3)

(4)

(5)
x0=M1,0/M0,0
y0=M0,1/M0,0
(6)

(7)
(8)
若Djoint>Dcenter,則此凸點為保留;反之,把此凸點排除。
從圖3(b)中可以看到,利用該距離判定法后,能有效地排除手臂關節處的切割點。

圖3 凸包檢測算法和平行向量方法排除誤判點
3.3 基于平行向量的手指確認

經過實驗測試,文中N取值為20,如果N取值過大時會對手指較短的情況發生誤判,如果N取值較小會對彎曲的手指誤判為有效手指。
為了驗證算法的性能,文中采用的硬件環境為二代Kinect,CPU為Intel(R)Core(TM)i5-4590CPU@ 3.30GHz、內存為8G的筆記本,軟件環境為VS2015、OpenCV3.0。主要對人手的9種手勢進行檢測,如圖4所示。
在復雜背景下,實驗通過對不同的手勢進行識別,并且同一個手勢在不同位置方向都進行了測試。文中對圖4中的9種手勢進行了采樣,利用Kinect獲取圖像信息,每個手勢采取200幅圖像,且這200幅圖像中的手勢一樣,但是指尖的指向和手部關節點位置不是固定的。
不同手勢的檢測效果圖見圖5。
從圖中可見,對于復雜背景和同一手勢在不同位置方向的檢測都達到了很好的效果,指尖的檢測結果如表1所示。
由表1可以看出,該算法檢測結果是比較高效的,對手勢0全部檢測出來了。還可以看出對手勢5的檢測誤檢率最高,這是因為在伸開五指時容易造成手指之間的重疊和遮擋,其次就是手勢8的檢測,即對大拇指的檢測。由于大拇指較短,在指尖指向不同位置時,造成了手指過短而形成誤判。為了驗證該算法的高效性,在同一環境下,將文中指尖檢測方法的實驗結果與基于曲率的檢測方法[9]和基于人體骨骼和深度圖像信息的指尖檢測方法[12]進行比較。結果文獻[9]中算法的檢測準確率為97.48%,文獻[12]中算法的檢測準確率為97.95%,文中算法的準確率達到了98.63%。所以文中算法在檢測的準確性上具有優越性。

圖4 9種手勢

圖5 指尖的檢測效果圖

手勢選取的幀數誤檢幀數020001200122003320024200352006620027200382005
文中提出了一種基于Kinect的指尖檢測算法,通過Kinect獲取的深度圖像和關節點信息,可以很好地在手部區域分割時避免復雜背景環境的影響。文中利用手部關節點位置結合膚色特征進行手部區域分割,獲得了很好的效果,并且對輪廓邊緣進行膨脹和腐蝕處理獲取相對平滑的輪廓邊緣。在基于曲率初步檢測的基礎上獲得初始類指尖點,通過基于凸包的距離計算排除手臂點和凹點,最后利用平行向量的思想判斷類指尖點是否是彎曲的手指關節點或者其他干擾點。實驗結果表明,該算法檢測的精度較高,能在復雜背景和不同方向對指尖進行檢測。
文中算法也有一定的缺陷,在手指并在一起時檢測效果受到一定的影響。下一步的研究目標是對手勢動作特征進行定義,通過實時追蹤指尖點的位置信息來識別動作,目前已經取得了一些研究進展和成果。
[1] 宋鳴僑.淺析人機交互技術的發展趨勢[J].現代裝飾:理論,2012(2):148-148.
[2]CarrollJM.Human-computerinteraction:psychologyasascienceofdesign[J].AnnualReviewofPsychology,1997,48(1):61-83.
[3]IwaiY,WatanabeK,YagiY,etal.Gesturerecognitionusingcoloredglove[C]//Proceedingsofthe13thinternationalconferenceonpatternrecognition.[s.l.]:[s.n.],1996:662-666.
[4]WeissmannJ,SalomonR.Gesturerecognitionforvirtualrealityapplicationsusingdataglovesandneuralnetworks[C]//Proceedingsofinternationaljointconferenceonneuralnetworks.[s.l.]:IEEE,1999:2043-2046.
[5]ViolaP,JonesM.Rapidobjectdetectionusingaboostedcascadeofsimplefeatures[C]//Proceedingsofacceptedconferenceoncomputervisionandpatternrecognition.[s.l.]:[s.n.],2001:511-518.
[6]BarrhoJ,AdamM,KienckeU.FingerlocalizationandclassificationinimagesbasedongeneralizedHoughtransformandprobabilisticmodels[C]//Proceedingsof9thinternationalconferenceoncontrol,automation,roboticsandvision.[s.l.]:[s.n.],2007:1-6.
[7]LeeD,LeeSG.Vision-basedfingeractionrecognitionbyangledetectionandcontouranalysis[J].ETRIJournal,2011,33(3):415-422.
[8]GuoK,ZhangM,SunC,etal.3Dfingertiptrackingalgorithmbasedoncomputervision[J].JournalofComputerResearchandDevelopment,2010,47(6):1013-1019.
[9] 李博男,林 凡.基于曲率的指尖檢測方法[J].南京航空航天大學學報,2012,44(4):587-591.
[10] 梅萍華,李 斌,朱中的,等.基于徑向對稱變換的實時指尖檢測算法[J].中國科學技術大學學報,2011,41(2):101-107.
[11] 劉 佳,鄭 勇,張小瑞,等.基于Kinect的手勢跟蹤概述[J].計算機應用研究,2015,32(7):1921-1925.
[12] 宋海聲,劉平和,王全州,等.基于人體骨骼和深度圖像信息的指尖檢測方法[J].計算機工程與科學,2014,36(9):1788-1794.
[13]Wikipedia.Kinect[EB/OL].2011-01-13.http://en.wikipedia.org/wiki/Kinect.
[14]ClarkRA,PuaYong-Hao,KarineF,etal.ValidityoftheMicrosoftKinectforassessmentofposturalcontrol[J].Gait&Posture,2012,36(3):372-377.
[15]DawodAY,AbdullahJ,AlamMJ.Adaptiveskincolormodelforhandsegmentation[C]//Proceedingsofinternationalconferenceoncomputerapplicationsandindustrialelectronics.[s.l.]:[s.n.],2010:486-489.
[16]HommaK,TakenakaE.Animageprocessingmethodforfeatureextractionofspace-occupyinglesions[J].JNuclMed,1985,26(12):1472-1477.
An Algorithm of Fingertip Detection Based on Kinect
WANG Jin-dong,WU Pin
(School of Computer Engineering and Science,Shanghai University,Shanghai 200444,China)
Fingertip detection is a crucial technology in the process of human-computer interaction.Because of differences in human hands,there will always be some misjudgment points in fingertip detection.Based on curvature algorithm,a method of fingertip detection is proposed using convex-concave algorithm and parallel vector.Firstly,it obtains information of human bone and in-depth image using Kinect,locking hand position by joints of human hands,and extracts the hand contour area using color characteristics of human hand and edge detection algorithm.Then on the contour of the hand region,fingertips are detected according to the curvature,and combined with the convex hull,pits and arm points are computed and excluded.At last,according to the characteristic that both sides of the finger are nearly parallel,curved fingers or non-fingers are excluded,and valid fingertips are detected.Experimental results show that this method can exclude different classes of fingertips under complex background with higher detection accuracy.
fingertip detection;curvature;convex-concave;parallel vector;Kinect
2015-11-03
2016-03-02
時間:2016-06-22
上海市科學技術計劃資助項目(14590500500)
王勁東(1988-),男,碩士研究生,研究方向為軟件測試、并行計算、圖像處理等;武 頻,副教授,博士,研究方向為CFD數值計算、高性能計算、圖像處理等。
http://www.cnki.net/kcms/detail/61.1450.TP.20160622.0844.040.html
TP391
A
1673-629X(2016)07-0014-05
10.3969/j.issn.1673-629X.2016.07.004