譚臺哲,韓亞偉,邵 陽
(1.廣東工業(yè)大學(xué) 計算機學(xué)院,廣東 廣州 510006;2.河源廣工大協(xié)同創(chuàng)新研究院,廣東 河源 517001)
近年來隨著科技的發(fā)展,人機交互廣泛應(yīng)用于人們的生活中,常見的人機交互如鼠標(biāo)、鍵盤等,但這種交互方式限制了交互的速度和自然性[1-3];而手作為人體結(jié)構(gòu)中最靈活的部分,能夠在人機交互中向電腦及其一些智能設(shè)備更加方便地傳遞信息。早期,人們通過穿戴一些傳感器對手部數(shù)據(jù)進行采集進而對手勢進行識別,這樣就造成成本很高昂,不利于普及,而且穿戴很不方便。隨著攝像頭精度的提高,基于計算機視覺的手勢識別開始流行[4],國內(nèi)的一些高校和科研機構(gòu)也做了大量研究,例如,Ghosh D K等[5]提出了基于膚色分割和SVM的算法進行手勢識別。因為手部是人體最靈活的部位之一,各種動作可以產(chǎn)生很大的扭曲性,為了保證魯棒性,Yimin Zhou等[6]提出了一種把手掌和手指分開并分別取特征的方式進行手勢識別,常亞楠等[7]使用HMM進行動態(tài)的手勢識別,這些方法取得了不錯的效果。然而,在手勢識別的過程中,手部動作的采集受到光照、復(fù)雜背景、硬件特性的影響,識別準(zhǔn)確率不高,而且不同環(huán)境識別結(jié)果偏差比較大。隨著深度圖像的引進,研究人員通常在識別的過程中運用彩色圖像信息與深度信息相結(jié)合的方法[8-11],蒲興成等[12]使用了改進Hu矩算法的Kinect手勢識別,Zhaojie Ju等[13]提出了基于EMD距離和Lasso算法的深度圖像手勢識別,吳曉雨等[14]提出了基于深度人手定位和HOG特征的靜態(tài)手勢識別算法及基于改進HMMs的動態(tài)手勢識別算法。對比以上方法,現(xiàn)階段手勢識別的難度主要集中在:①復(fù)雜環(huán)境下的手勢分割問題;②手勢的旋轉(zhuǎn)不變性問題,方向不能固定;③復(fù)雜手勢的識別;④手掌與手腕的分割問題。針對這種情況,本文通過Kinect攝像頭采集到RGB-D深度圖像信息,采用一種基于手部參數(shù)的手勢識別算法,分割的過程中采用膚色分割和深度信息分割相結(jié)合的方式進行。手勢特征提取過程中通過對圖像進行卷積、閾值化和形態(tài)學(xué)處理得到手指部分的圖像信息,然后通過手掌質(zhì)心和手指質(zhì)心來保證手勢的旋轉(zhuǎn)不變形。最后在極坐標(biāo)下具體識別每個手指的具體角度位置和彎曲狀態(tài),這樣能夠克服前人使用的方法中出現(xiàn)的上述問題,達(dá)到更高的識別率、保證更強的魯棒性,并且能夠準(zhǔn)確地判別左右手信息。
本文采集深度圖像的時候選擇設(shè)備是Kinect,Kinect是由微軟公司開發(fā)的體感攝像機,特別之處在于該攝像機有3個攝像頭,從左到右依次是紅外投影機、彩色攝像頭、紅外攝像頭。中間的彩色攝像頭是采集RGB圖像的,兩端兩個是通過發(fā)射/接收紅外線來提供深度數(shù)據(jù)。經(jīng)過實驗可知,從Kinect中采集的深度圖像一般情況下是不穩(wěn)定的,存在很多的噪聲和空洞,而且邊緣深度值不穩(wěn)定,因此在進行下一步識別之前要進行一些濾波和形態(tài)學(xué)處理[14],采集設(shè)備如圖1所示。
圖1 Kinect設(shè)備
經(jīng)過中值濾波和形態(tài)學(xué)處理以后得到的深度圖像如圖2所示。
圖2 采集圖像信息
手勢分割是手勢提取中最重要的部分,只有手勢提取更加完整清晰才能為后續(xù)的識別提供更多的準(zhǔn)確的參數(shù)依據(jù)。本文使用膚色和深度信息相結(jié)合的方式進行分割,首先根據(jù)膚色消除掉除人體以外的信息,這樣就能夠很好地去除前景及非人體部位干擾,然后對通過膚色分割后的深度圖像進行進一步處理,本文使用根據(jù)深度信息使用最大類間方差法與固定閾值相結(jié)合的方法,分割出手勢區(qū)域。
1.2.1 膚色分割
本文選擇在HSV空間采用改進的高斯模型的方法進行膚色檢測和膚色分割,首先要將RGB空間轉(zhuǎn)到HSV空間。高斯模型的基本原理是根據(jù)膚色分布的概率建立高斯模型。計算公式如下
D(Cb,Cr)=exp[-0.5(P-μ)TC-1(P-μ)]
(1)
其中,μ表示均值、C表示協(xié)方差,根據(jù)建立的模型計算待測矢量P(Cb,Cr)與膚色的相似度,對計算出的結(jié)果D進行歸一化,然后進行閾值化以后就能夠得到具有深度信息的膚色圖像的二值圖像。分割效果如圖3所示。
圖3 膚色分割
1.2.2 深度信息分割
從以往的研究成果和實驗來看[14],當(dāng)手和身體部分距離較近或者手掌與攝像機平面不平行的時候,直接使用最近點灰度值和固定閾值結(jié)合來分割效果不好。
在這種情況下本文考慮使用最大類間方差法與固定閾值相結(jié)合的方法,分割出手勢區(qū)域。首先假設(shè)一個圖像中包含L個灰度級,那么灰度值為i的像素點個數(shù)為Ni,一般而言灰度值為0的點被認(rèn)為是背景點,所以一張圖像中人體部分總的像素點數(shù)為N=N1+N2+…NL-1,因此可以得到灰度值為i的概率為pi=Ni/N??梢约僭O(shè)閾值為t,通過閾值t把人體軀干部分和手的部分區(qū)分開來,軀干部分為A=(1,2,…,t),手勢部分為B=(t+1,t+2…L-1)。由上可得兩個部分出現(xiàn)的概率分別是
(2)
(3)
因此人體軀干部分和手勢部分的灰度均值為
(4)
而灰度圖像的總均值為
(5)
由上可以推出人體軀干部分和手勢部分的類間方差為
σ2=PA(wA-w0)2+PB(wB-w0)2
(6)
而上述所說的類間方差越大就表示手勢部分和軀干部分的灰度值差別越大,因此使得類間方差最大的t就是說要求的最佳閾值
(7)
由上面所得到的t,再通過實驗設(shè)置一個閾值τ,可以很完整地分割出手部圖像
(8)
通過這兩種方法分割出的效果如圖4所示。
圖4 手勢分割
通過膚色分割和深度信息分割相結(jié)合的方式對圖像進行分割,這樣能夠既能夠很好地去除前景和背景干擾,又能去除光照等影響。對比幾種算子效果,最終選擇使用最簡單的Roberts算子檢測方法對分割后的圖像進行邊緣檢測處理,得到圖像b,如圖5所示。
圖5 手勢邊界
為了得到更加準(zhǔn)確的數(shù)據(jù)信息,增強下一步手勢識別的魯棒性,本文利用特殊的卷積處理,去掉手掌部分,然后得到手指部分的圖像信息。卷積算子G模型如下[7]
(9)
首先,通過圖像的卷積處理,得到圖像b,其中Ib(x,y)=Ia(x,y)×G;
然后,對得到的圖像b進行閾值處理,得到圖像c,其中
(10)
最后,對圖像c進行形態(tài)學(xué)膨脹處理,得到圖像d。過程如圖6所示。
圖6 手指分割過程
從已知分割后的手部圖像a獲取圖像信息。設(shè)手勢二值分割圖像的質(zhì)心為Phc(x0,y0)
其中,x,y為圖像坐標(biāo),I(x,y)為在圖像在該坐標(biāo)下的灰度值。用上述同樣的方法,求圖像c手指部分的質(zhì)心Pfc。
由上面求得的手掌質(zhì)心和手指質(zhì)心可以得到整個手的方向
(12)
手勢建模圖,如圖7所示。
圖7 手勢建模
(13)
Pn可以認(rèn)為是第n個角度手指部分的面積[8],即角度在[θn,θn+1]范圍內(nèi),半徑在[r1,r2]范圍內(nèi),根據(jù)手部特征,一般可取r1=0.5Rp,r2=2.5Rp。根據(jù)手的形狀特征,一般手的曲張度在180度以內(nèi),因此取M值取180。然后對Pn進行標(biāo)準(zhǔn)化,可得
(14)
按照積分的定義以及手指的分布特性,最終求得的Pn_norm中極大值中的最大的5個值所在的位置就是5個手指的角度位置。由上可以求得每一個手指部分的與0度之間的角度為θn,n=1,2,3,4,5。因此可以定義
θ=θn+1-θn,n=1,2,3,4,5
(15)
當(dāng)θ取最大值時,如果θn≥90度,則表示右手,如果θn<90度時,則表示左手,當(dāng)然這樣的判別僅限于常規(guī)手勢,非常規(guī)手勢會有誤差。
在角度變化范圍內(nèi),因為由上信息可以非常具體地得到5根手指所處的位置和角度信息,設(shè)指尖到腕部Pw的距離為Di,這樣根據(jù)手指的特性,可以很精確地判斷手指的彎曲和伸直狀態(tài)
(16)
通過以上方法,在常規(guī)手勢下可以準(zhǔn)確判斷手勢樣例是左手還是右手。而通過手指具有的特性可以判別出手指是彎曲還是伸直。
本文一共定義了0-5這6種手勢,分別代表6種不同手指彎曲狀態(tài)。由于網(wǎng)絡(luò)上并沒有完全公開的手勢識別數(shù)據(jù)庫,因此本文是使用實驗室設(shè)備Kinect對20個人,每個手勢左右手分別采集30張深度圖像(包括強光、黑暗、復(fù)雜背景下各10張深度圖像),并且每個動作伸手的角度是不相同的。一共采集7200張圖片進行測試。手勢樣板如圖8所示。
圖8 手勢樣板
蒲興成等[13]提出了一種基于改進Hu矩算法的Kinect手勢識別算法,吳曉雨等[14]提出了基于深度和HOG特征的靜態(tài)手勢識別算法,這兩種方法作為本文的對比方法。本文是基于深度圖像進行手勢識別,在實驗的過程中,由于Kinect的特性,共有3個攝像頭,既可以采集深度圖像,又可以采集RGB圖像,RGB圖像用于膚色分割,深度信息用于二次分割。
實驗是在12GRAM、2.6GHzIntelCPU筆記本上進行,Kinect型號是kinectforXbox360,使用VS2012進行編程,調(diào)用OPENCV庫函數(shù)對數(shù)字0-5這6種手勢分別通過兩種方法進行手勢識別。
實驗分為兩個部分,第一部分不對左右手進行區(qū)分直接實驗,然后作對比??傮w識別率見表1。
表1 識別率對比
第二部分是將左右手放在一起進行識別,由于另外兩種方法沒有對左右手進行分別,因此沒有做對比實驗。先識別左右手,然后對手指的彎曲和伸展?fàn)顟B(tài)進行識別。實驗結(jié)果見表2。
表2 左右手判別
為了驗證本文的識別效果,特別對3種不同的環(huán)境下手勢識別率進行了一下對比,分別將采集到的3種場景下的手勢各400張圖片進行了分別實驗,實驗結(jié)果見表3。
表3 特殊環(huán)境識別率
從實驗結(jié)果上面來看,顯然本文的方法取得了較好的識別率,當(dāng)光照或環(huán)境過于復(fù)雜的情況下,本文提出的算法比另外兩種算法分割出的手勢更加完整。而基于HOG直方圖的識別效果最差。從本文方法錯誤識別的圖像來看,當(dāng)手指并攏或者相鄰手指之間呈現(xiàn)非常規(guī)角度時,識別效果會受到一定影響。本文方法對光照、前景和背景干擾都有很強的魯棒性。對于左右手的識別,識別率達(dá)到了96%,從識別錯誤的圖片可以看出,當(dāng)相鄰手指呈現(xiàn)非常規(guī)角度的時候,左右手識別會受到影響。3種特殊環(huán)境下識別效果如圖9~圖11所示。
圖9 光照條件下
圖10 黑暗條件下
圖11 復(fù)雜背景下
本文利用RGB-D圖像的深度和彩色數(shù)據(jù),提出了一種魯棒性強的靜態(tài)手勢識別方法。本文方法利用深度信息和彩色信息相結(jié)合的方法對手勢進行分割能夠消除背景和光照條件對采集手勢數(shù)據(jù)信息的影響;而特征提取的過程中通過卷積和閾值相結(jié)合的方式得到手指信息特征,以及利用具體的手指角度信息和尺寸信息能夠很準(zhǔn)確地判斷手指的彎曲狀態(tài)和左右手信息。通過對比實驗,本文的方法對手勢的判別更加精準(zhǔn),而在左右手的判別上也有很高的識別率。
[1]Ben Abdallah M,Kallel M,Bouhlel M S.An overview of gesture recognition[C]//6th International Conference on Sciences of Electronics,Technologies of Information and Telecommunications.IEEE,2012:20-24.
[2]Song Y,Demirdjian D,Davis R.Continuous body and hand gesture recognition for natural human-computer interaction[J].ACM Transactions on Interactive Intelligent Systems,2012,2(1):1-28.
[3]WU Xia,ZHANG Qi,XU Yanxu,et al.Survey on current situation of the development of gesture recognition[J].Electronic Science and Technology,2013,26(6):171-174(in Chinese).[武霞,張崎,徐艷旭,等.手勢識別研究發(fā)展現(xiàn)狀綜述[J].電子科技,2013,26(6):171-174.]
[4]Droeschel D,Ckler J,Behnke S.Learning to interpret poin-ting gestures with a time-of-flight camera[C]//ACM/IEEE International Conference on Human-Robot Interaction.IEEE,2011:481-488.
[5]Ghosh DK,Ari S.Static hand gesture recognition using mixture of features and SVM classifier[C]//IEEE International Conference on Communication Systems and Network Technologies.IEEE,2015:1094-1099.
[6]CHANG Yanan.Dynamic gesture recognition based on HMM[D].Guangzhou:South China University of Technology,2012(in Chinese).[常亞南.基于HMM的動態(tài)手勢識別[D].廣州:華南理工大學(xué),2012.]
[7]Zhou Yimin,Jiang Guolai,Lin Yaorong.A novel finger and hand pose estimation technique for real-time hand gesture recognition[J].SCI-Pattern Recognition,2016,49(C):102-114.
[8]Wu D,Zhu F,Shao L.One shot learning gesture recognition from RGBD images[C]//Computer Vision and Pattern Recognition Workshops.IEEE,2012:7-12.
[9]HE Xiaolei.Gesture recognition based on depth information and color information[D].Hubei:Huazhong University of Scie-nce and Technology,2012(in Chinese).[何小磊.基于深度信息和彩色圖像的手勢識別[D].湖北:華中科技大學(xué),2012.]
[10]Panwar M.Hand gesture recognition based on shape parameters[C]//International Conference on Computing,Communication and Applications.IEEE,2012:1-6.
[11]Chen M,Alregib G,Juang BH.Feature processing and mo-deling for 6D motion gesture recognition[J].IEEE Transactions on Multimedia,2013,15(3):561-571.
[12]PU Xingcheng,WANG Tao,ZHANG Yi.Kinect gesture recognition based on improved Hu moment algorithm[J].Computer Engineering,2016,42(7):165-172(in Chinese).[蒲興成,王濤,張毅.基于改進Hu矩算法的Kinect手勢識別[J].計算機工程,2016,42(7):165-172.]
[13]Ju Z,Gao D,Cao J,et al.A novel approach to extract hand gesture feature in depth images[J].Multimedia Tools & Applications,2016,75(19):11929-11943.
[14]WU Xiaoyu,YANG Cheng,FENG Qi.Research on Kinect-based hand gesture recognition algorithm and its applications[J].Computer Applications and Software,2015,32(7):173-176(in Chinese).[吳曉雨,楊成,馮琦.基于Kinect的手勢識別算法研究及應(yīng)用[J].計算機應(yīng)用與軟件,2015,32(7):173-176.]