郭闖世, 孟朝暉
(河海大學(xué) 計算機與信息學(xué)院,南京 210000)
隨著人工智能發(fā)展,現(xiàn)有的人機交互已遠遠不能滿足用戶的需求,迫切需要一種更自然、友好的人機交互形式. 而手勢是人們與外界溝通最常用直接的交互形式,所以手勢識別是人機交互的一個重要領(lǐng)域. 而人們也一直致力于手勢識別的研究未曾間斷,研究方向主要分為兩種,其一是以數(shù)據(jù)手套為基礎(chǔ)的手勢識別,該方法主要是通過穿戴數(shù)據(jù)手套[1]上的傳感器將手勢動作的位置方向等信息傳遞給計算機以供識別. 這種方式雖然取得相當(dāng)?shù)某晒?但由于設(shè)備昂貴,穿戴麻煩等約束在現(xiàn)實生活中難以普及,不能真正滿足人機交互簡單化的需求. 另一種則是基于視覺的手勢識別,通過攝像頭捕捉到手勢圖片或者視頻,然后經(jīng)過手勢分割,特征提取,分類識別等一系列處理最終得出識別結(jié)果. 該方法更為方便,應(yīng)用前景更好.
手勢分割就是將圖片中手勢區(qū)域分割提取出來,基于輪廓信息的分割模型[2]以及基于膚色檢測模型[3]被應(yīng)用在手勢分割中,都取得了一定的效果. 而深度攝像頭的廣泛應(yīng)用,如Microsoft Kinect[4-6]等,則為目標(biāo)分割提供了另外的思路. 其所呈現(xiàn)的是物體到攝像頭之間的距離,通過閾值分割的方式即可將完成的目標(biāo)區(qū)域分割,更簡單高效. 分割之后所提取的特征也不盡相同,如 HOG[7,8]、Zernike[9],灰度直方圖,細節(jié)紋理[10]以及輪廓[11]特征等等. 最終就是對所提取的特征進行手勢分類得到識別結(jié)果,分類方法如SVM,決策樹,神經(jīng)網(wǎng)絡(luò)等等.
本文中采用的是基于深度圖像的手勢識別算法,算法主要流程如圖1所示.
圖1 手勢識別流程
算法將從攝像頭捕捉到的手勢深度圖像轉(zhuǎn)換為灰度圖像,據(jù)此創(chuàng)建灰度直方圖,并以此對手勢區(qū)域進行分割提取[12]. 提取手勢區(qū)域后,對其進行距離變換[13,14].進而可得到手勢的中心點,并以此為中心,對手勢圖像進行歸一化. 隨后對歸一化后的手勢圖片進行邊緣檢測,并根據(jù)所提取的邊緣信息使用本文提出的改進霍夫變換算法檢測手指邊緣曲線,以此可得到完整的手指信息. 同時提取手勢的邊緣曲線并對其分段進行特征提取,使用3D直方圖對提取到的邊緣曲線特征進行統(tǒng)計. 最終對這兩種特征進行融和,作為特征向量輸入MEB-SVM[15]中進行手勢識別.
深度圖像技術(shù)因在識別等領(lǐng)域的卓越表現(xiàn),逐漸受到大家青睞. 深度圖像和普通的BGR等圖像相比,雖然忽略了細節(jié)紋理方面的信息,但在輪廓區(qū)域信息的表示上有著明顯優(yōu)勢,這為目標(biāo)的分割提供了極大地方便. 具體如圖2(a)所示.
圖2 深度圖像及手勢分割
在手勢識別中第一步就是手勢分割,由于深度圖像是所拍攝物體到鏡頭距離的呈現(xiàn),將深度圖像轉(zhuǎn)換為灰度圖像后,灰度值所表示的即是距離大小,可使用閾值方法對手勢進行分割. 然而不同人不同時間手勢動作無法保證出現(xiàn)在固定的距離范圍內(nèi),便無法確定固定的閾值對手勢進行分割. 故而采取通過灰度直方圖尋找最佳的閾值,對手勢進行分割提取.
灰度直方圖是對灰度圖像每個像素點按灰度值分段統(tǒng)計,所得到的值即對應(yīng)灰度范圍內(nèi)圖像的面積. 在人機交互的過程中,手相較于其他多數(shù)背景物體距離鏡頭較近,而且手所占面積較小. 據(jù)此在灰度直方圖中選擇適當(dāng)?shù)幕叶乳撝?對圖像進行分割得到掩模M,如圖2(b)所示,除手勢區(qū)域外還包含了一些干擾區(qū)域. 根據(jù)區(qū)域大小等信息將其過濾,得到掩模M',只包括手勢區(qū)域所在二值圖像. 如圖2(c)所示.
距離變換(Distance Transforms,DT),即將前景值為1,背景值為0的二值圖像轉(zhuǎn)換為一副灰度級距離圖像,灰度圖像每個點的像素值表示該點到最近的背景點的距離. 公式(1)以歐氏距離為例:
D(u,v)是距離變換后的像素值,mask表示前景像素集合. 理論上,需要計算到所有背景像素點的距離,這會帶來巨大的計算開銷. 而一幅圖像的全局距離近似等于局部距離的傳遞,基于這一理論在實際計算中,我們通過計算相鄰像素點的局部距離得到近似的距離圖像. 對M'進行距離轉(zhuǎn)換后效果如圖3所示.
圖3 距離轉(zhuǎn)換圖像
因人手的大小不同,以及距攝像頭遠近不同,所得到的手勢區(qū)域大小會有較為明顯的差異. 又因為在拍攝手勢動作時具有較大的隨意性,手勢部分在圖像中位置的不同,也將會為后續(xù)的計算帶來一定麻煩. 為了解決這一問題需要對所得圖像進行歸一化操作.
所得到的距離圖像中像素值最大的點即可視為手勢的中心P,如果最大值點個數(shù)大于1,則選取這些點的形心作為手勢的中心.
其中Dmax為距離圖像中最大像素值,D(u,v)是距離轉(zhuǎn)換后圖像每個點的像素值. 掃描圖像得到值為Dmax的點,進而得到手勢中心P. 并以之為圓心,3.8*Dmax為半徑畫圓(3.8是由實驗中經(jīng)驗所得),圓內(nèi)包含了主要的手勢區(qū)域,將一些可能存在的背景干擾信息和對識別無用的手臂區(qū)域摒除在外. 將截取到的手勢區(qū)域,統(tǒng)一映射到100*100的新圖像M''中. 不僅新圖像大小相同,圖中手的大小也基本相似.
進行手指檢測和邊緣曲線特征提取都需要先檢測出手勢的邊緣,本文中采用的是Canny[16]邊緣檢測算法. 由于是針對分割后的二值圖像進行邊緣檢測,邊緣較為明顯且無須考慮細節(jié)紋理信息,所以主要檢測到的也就是手的輪廓信息.
霍夫變換[17]是檢測直線行之有效的方法,其受直線間隙和噪聲的干擾較少,具有極強的魯棒性. 然而手指邊緣大多數(shù)情況下都無法很好的擬合成一條直線,所以本文提出一種改進的霍夫變換算法對手指邊緣進行檢測.
手指的輪廓并非一條真正意義上的直線,存在各種凸凹彎曲等情況,使用標(biāo)準(zhǔn)的霍夫變換無法完成既定任務(wù). 故而本文提出一種改進的霍夫變換算法,以檢測到近似直線的手指輪廓.
霍夫變換基本思想是圖像空間中的共線的點對應(yīng)在參數(shù)空間的線必然相交在同一點. 在圖像空間中所有經(jīng)過點(x,y)的直線都滿足公式(3).
其中k為斜率,b為截距,而對公式(3)變形可得到公式(4).
如果認為-x為斜率,y為截距,公式(4)可以看做是在參數(shù)空間過點(k,b)的一條直線,表示在原圖像空間內(nèi)所有過點(x,y)的直線簇,直線上每一個點代表一條原圖像空間一條特定截距斜率的直線. 所以原圖像中的共線的點經(jīng)過轉(zhuǎn)換后,在參數(shù)空間內(nèi)必然相交于一點. 據(jù)此,把圖像空間中點轉(zhuǎn)換到了參數(shù)空間,在參數(shù)空間中進行簡單的投票統(tǒng)計即可完成直線的檢測.
如上所述霍夫變換過程,經(jīng)過轉(zhuǎn)換后在參數(shù)空間內(nèi)相交的點即表示為原圖像空間內(nèi)這兩個點所連成的直線的截距和斜率. 而手指等輪廓線是一條近似的直線,中間會出現(xiàn)彎曲,但弧度不大. 這就意味著將輪廓線上相鄰兩個點所在直線方程截距和斜率不同,但差距不會很大. 在參數(shù)空間中雖然不會經(jīng)過同一個點,但都會經(jīng)過一個特定的小區(qū)域內(nèi).
算法具體計算步驟如下:
上述算法針對手指邊緣這樣的近似直線的檢測.h選擇不同,所能檢測的結(jié)果有著很大的區(qū)別,h過大會造成相差較遠的點也被檢測在內(nèi),h較小檢測到的多為離散線段.
提取手指輪廓信息分為兩步完成,首先找到手勢輪廓的外部凸包,然后使用改進的霍夫變換算法進行手指的輪廓線檢測,進而提取手指信息的特征.
使用Graham’s Scan[18]算法找到手勢外部凸包,凸包頂點P={pi|i=1,2,…}主要包括指尖和手臂邊緣拐點. 然后通過上述改進后的霍夫變換檢測到一系列近似直線的輪廓,遍歷可得到m對滿足以下條件的輪廓線.
1) 兩條輪廓線靠近頂點pi的一端橫坐標(biāo)y1,y2,滿足y1 2) 有且只有一個頂點滿足1); 3) 兩條輪廓線的斜率范圍中點值k的差值 |k1-k2|在一定范圍內(nèi). 滿足上述條件的輪廓線對,即可認為是手指兩側(cè)輪廓線,對應(yīng)的pi則為該手指的指尖. 以此可提取到手指信息特征,包括每根伸出的手指的指尖到手勢中心的歐式距離,以及手指的角度. 鑒于手部的生理特征,手指兩側(cè)輪廓線是近似對稱的,根據(jù)提取到的手指輪廓線對,求其均值即可找到手指所在的中線,示意圖如圖4所示,直線ab為手指中線,其角度也就是手指的角度. 圖4 手指中線 由于人的手具有高度的靈活性,即便是相同的手勢,每個手指的相對位置都有著很大的差距. 且由于關(guān)節(jié)較多,極容易發(fā)生自遮擋等現(xiàn)象,影響計算機對手勢圖像的識別效率. 所以上一節(jié)中所提取到的手指信息特征,不足以完全對手勢進行描述. 于是又提出了基于邊緣曲線的特征,從總體輪廓邊緣上對手勢進行更進一步的描述. 基于邊緣曲線的特征即是將檢測到的輪廓信息分割后進行詳細描述. 本文所提出的基于輪廓信息的特征是由兩部分組成,將所有邊緣點按順序分割成若干份后,每段邊緣曲線的形心到手勢中心的距離d和邊緣曲線對應(yīng)的弦與曲線中點到手勢中心連線的夾角θ. 所提取到的手勢邊緣信息,是手勢邊緣上n個點的集合{ei|i=1,2,3,…,n}. 以固定長度k,將集合中點分割為若干段,得到若干有k個連續(xù)點組成的曲線,即是所要得到的邊緣曲線. 其中,c(x,y)是k個連續(xù)點的形心,(px,py)是手勢中心的坐標(biāo).d即是每一段曲線的形心到手勢中心的歐氏距離. 夾角θ是每一段曲線所對應(yīng)的弦與曲線中點與手勢中心的連線的夾角. 如圖5所示,假設(shè)曲線ADB是所得邊緣中分割出來的一段曲線,D是曲線的中點,夾角θ即為線段AB和DP的夾角. 因已知所有點的坐標(biāo),線段AB,DP可視為兩個向量,由向量乘積公式(6)可得兩向量夾角. 由圖5可知兩向量之間的夾角即是所要求的夾角θ. 圖5 夾角θ示意圖 邊緣的長度不同所得到的特征個數(shù)也不相同,而學(xué)習(xí)算法要求輸入向量具有相同維度. 本文將提取到的特征整合到一個3D直方圖中,X軸表示每一段邊緣曲線的形心到手勢中心的距離,Y軸表示每一段邊緣曲線的弦和曲線中點到手勢中心點連線的夾角,Z軸表示滿足x,y的情況的邊緣曲線的頻率. 經(jīng)過歸一化后圖像的大小為100*100,手勢中心即圖像的中心,圖像中手的大小基本相同,所以手勢邊緣到中心的距離都在統(tǒng)一范圍內(nèi),而夾角也必然在0~6.28的范圍內(nèi). 以這兩個特征作為變量,統(tǒng)計出滿足不同情況的邊緣曲線的個數(shù). 本文實驗中將距離分為7組,角度也分為7組最終得到維度49的向量. 并融合第2節(jié)中所提取到的基于邊緣曲線特征最終得到59維的特征向量輸入到學(xué)習(xí)算法中,以完成手勢的識別任務(wù). Cortes等人[19]于1995年被正式提出支持向量機(Support Vector Machine,SVM)的概念,在線性分類問題的卓越表現(xiàn)使得其很快成為機器學(xué)習(xí)的中流砥柱.SVM作為最為常用的分類器,其在數(shù)據(jù)量較小、非線性以及高緯度等情況的樣本上有著優(yōu)異的表現(xiàn). 在識別和分類問題上被廣泛應(yīng)用,如文本識別、手寫題識別、人臉識別等等. 最小閉包球SVM方法(MEB-SVM)相較于傳統(tǒng)的SVM算法,在時間和空間復(fù)雜度上都得到了大大的降低,且更適用于多分類問題. 無需像傳統(tǒng)的SVM一樣,針對多分類問題需要進行多次二分類. MEB-SVM只需要針對各個類別樣本計算出其最小閉包球即可. 針對手勢識別問題,對選取的樣本集合T經(jīng)過上述特征提取后,得到一組特征向量. 然后用核函數(shù)對這些向量進行空間映射. 本文中核函數(shù)選擇徑向基函數(shù)(RBF). 首先針對每個分類隨機選取樣本點以初始化閉包球,半徑R0=0,找到特征空間內(nèi)該類別樣本點距離閉包球球心最遠的樣本點,并添加進所對應(yīng)閉包球內(nèi),同時更新閉包球的半徑和球心位置,經(jīng)過多次迭代直到所有的樣本點都被包括在內(nèi),分類結(jié)束. 對于測試樣本則只需要計算其距離各個閉包球球心的距離,經(jīng)過比對確定落于某一閉包球內(nèi),即可得到該樣本所屬類別. 實驗平臺為Windows 7操作系統(tǒng),CPU Intel Core i5-6400 2.7 GHz,內(nèi)存 6 G. 編譯環(huán)境:OpenCV 2.4.10工具包,VS 2013. 本文所采用的數(shù)據(jù)集Giulio Marin等人[20]所提供的深度手勢數(shù)據(jù)庫,其中包含14人的手勢圖片. 且數(shù)據(jù)集中的圖片均在自然場景下拍攝,更符合現(xiàn)實場景的手勢識別要求. 從中選取5種手勢3000多張圖片,并依次將每種手勢標(biāo)記為0,1,2,3,4,具體如圖6所示. 將選取的圖片分為訓(xùn)練集和測試集,訓(xùn)練集2324張,測試集865張. 根據(jù)上述方法提取基于邊緣曲線的特征和手指信息特征,進行融合后輸入到MEB-SVM進行識別訓(xùn)練.在實驗中提取基于邊緣曲線的特征時,按照不同長度劃分邊緣曲線最終結(jié)果識別率隨之變化,實驗測試結(jié)果如圖7所示. 整體上呈上升后繼而下降的趨勢,在取值12時達到峰值. 圖6 識別手勢 圖7 算法識別率與邊緣劃分長度關(guān)系 選取12作為最佳劃分長度,在數(shù)據(jù)集中得到的識別結(jié)果如表1所示. 表1 手勢識別結(jié)果 經(jīng)由驗證本文算法識別平均正確率為96.6%,表現(xiàn)良好. 為了驗證本文算法的成果,與其他基于深度圖像的手勢識別算法做了對比,具體結(jié)果如表2所示. 表2 本文算法與其他方法對比結(jié)果 表2的算法對比表明本文所提出的手勢識別算法具有一定優(yōu)勢. 另外本文算法識別效率較快,平均識別時間為2.9 ms,能滿足大部分應(yīng)用的需求. 本文所提出改進的霍夫變換算法對手指邊緣的檢測有著良好的表現(xiàn),根據(jù)所提取的手指信息特征和基于邊緣曲線特征經(jīng)由MEB-SVM訓(xùn)練分類取得了很好的效果,最終識別率為96.6%. 用深度圖像僅僅反映了物體目標(biāo)距離攝像頭的距離,所以對光照等因素不敏感. 且此方法的識別速度較快,能滿足大部分應(yīng)用需求,具有較好推廣性. 1 Hsiao PC,Yang SY,Lin BS,et al. Data glove embedded with 9-axis IMU and force sensing sensors for evaluation of hand function. Proceedings of the 37th Annual International Conference of the IEEE Engineering in Medicine and Biology Society. Milan,Italy,2015:4631-4634. [doi:10.1109/EMBC.2015.7319426] 2 黃藝,杜宇人. 基于邊緣信息的圖像分割技術(shù)研究. 現(xiàn)代電子技術(shù),2005,(5):116-117. 3 Zhang QY,Lu JC,Zhang MY,et al. Hand gesture segmentation based on mixed skin-color model and FCM algorithm. Journal of Information & Computational Science,2015,12(9):3527-3536. [doi:10.12733/jics20106078] 4 Ren Z,Yuan JS,Meng JJ,et al. Robust part-based hand gesture recognition using Kinect sensor. IEEE Transactions on Multimedia,2013,15(5):1110-1120. [doi:10.1109/TMM.2013.2246148] 5 Li Y. Hand gesture recognition using Kinect. Proceedings of 2012 IEEE International Conference on Computer Science and Automation Engineering. Beijing,China,2012:196-199. [doi:10.1109/ICSESS.2012.6269439] 6 Jiang F,Zhang SP,Wu S,et al. Multi-layered gesture recognition with Kinect. Journal of Machine Learning Research,2015,16(1):227-254. 7 Li H,Yang L,Wu XY,et al. Static hand gesture recognition based on HOG with Kinect. Proceedings of the 4th International Conference on Intelligent Human-Machine Systems and Cybernetics. Nanchang,China,2012:271-273.[doi:10.1109/IHMSC.2012.75] 8 Hamda M,Mahmoudi A. Hand gesture recognition using Kinect’s geometric and HOG features. Proceedings of the 2nd International Conference on Big Data,Cloud and Applications. Tetouan,Morocco,2017,48. [doi:10.1145/3090354.3090403] 9 Rekha J,Bhattacharya J,Majumder S. Shape,texture and local movement hand gesture features for Indian sign language recognition. Proceedings of the 3rd International Conference on Trendz in Information Sciences & Computing.Chennai,India,2011:30-35. [doi:10.1109/TISC.2011.6169079] 10 Singh C,Uupneja R. Fast and accurate method for high order Zernike moments computation. Applied Mathematics and Computation,2012,218(15):7759-7773. [doi:10.1016/j.amc.2012.01.040] 11 Memo A,Minto L,Zanuttigh P. Exploiting silhouette descriptors and synthetic data for hand gesture recognition.In:Biasotti S,Tarini M,Giachetti A,eds. STAG:Smart Tools & Apps for Graphics. The Eurographics Association.Cagliari,Italy,2015. [doi:10.2312/stag.20151288] 12 李瑞峰,曹雛清,王麗. 基于深度圖像和表觀特征的手勢識別. 華中科技大學(xué)學(xué)報(自然科學(xué)版),2011,39(S2):88-91. 13 Yi ZH,Hu XQ,Kim EK,et al. Accelerating distance transform image based hand detection using CPU-GPU heterogeneous computing. Journal of Semiconductor Technology and Science,2016,16(5):557-563. [doi:10.5573/JSTS.2016.16.5.557] 14 Borgefors G. Distance transformations in digital images.Academic Press Professional,Inc. Inc. San Diego,CA,USA,1986. [doi:10.1016/S0734-189X(86)80047-0] 15 Tsang IW,Kwok JT,Cheung PM. Core vector machines:Fast SVM training on very large data sets. The Journal of Machine Learning Research,2005,6:363-392. 16 Canny J. A computational approach to edge detection. IEEE Transactions on Pattern Analysis and Machine Intelligence,1986,PAMI-8(6):679-698. [doi:10.1109/TPAMI.1986.4767851] 17 易玲. 基于分級的快速霍夫變換直線檢測. 微計算機信息,2007,23(11-1):206-208. 18 Graham RL. An efficient algorith for determining the convex hull of a finite planar set. Information Processing Letters,1972,1(4):132-133. [doi:10.1016/0020-0190(72)90045-2] 19 Cortes C,Vapnik V. Support-vector networks. Machine Learning,1995,20(3):273-297. [doi:10.1023/A:10226274 11411] 20 Marin G,Dominio F,Zanuttigh P. Hand gesture recognition with leap motion and kinect devices. Proceedings of 2014 IEEE International Conference on Image Processing. Paris,France,2015:1565-1569. [doi:10.1109/ICIP.2014.7025313] 21 尚常軍,丁瑞. 基于曲率局部二值模式的深度圖像手勢特征提取. 計算機應(yīng)用,2016,36(10):2885-2889,2894. [doi:10.11772/j.issn.1001-9081.2016.10.2885] 22 Plouffe G,Cretu AM. Static and dynamic hand gesture recognition in depth data using dynamic time warping. IEEE Transactions on Instrumentation and Measurement,2016,65(2):305-316. [doi:10.1109/TIM.2015.2498560]3 基于邊緣曲線的特征提取
3.1 特征提取
3.2 創(chuàng)建特征直方圖
4 手勢識別
5 實驗與分析
6 結(jié)論與展望