張倩,鄭明輝
(江蘇科技大學(xué)電子與信息學(xué)院,江蘇鎮(zhèn)江212003)
手勢是日常生活中一種直觀形象、簡單豐富的交流方式[1]。嵌入式手勢識別技術(shù)讓我們不再需要去理會繁瑣復(fù)雜的按鍵和按鈕,讓設(shè)備使用起來更簡單靈活,在機器人、智能家居及日常生活和娛樂等領(lǐng)域的作用日益卓越。
1991年,TAKAHASHI[2]開始研究手勢符號,實現(xiàn)對46個手勢符號的識別。美國研究人員Starner[3]等人在對手勢的研究中完成了對40個詞匯隨機組成的句子進行比較精確的識別。Yi Li[4]依據(jù)輪廓和凸凹點檢測確定5個手指位置并通過計算三點的夾角特征識別靜態(tài)手勢。哈爾濱工業(yè)大學(xué)的吳江琴[5]等人在中國手語研究中,將人工神經(jīng)網(wǎng)絡(luò)與HMM兩種方法相互結(jié)合,增強識別方法的分類特性,最終實現(xiàn)了對孤立詞和簡單語句的較準確識別。上海海事大學(xué)的研究人員,利用幾何特征及距離特征等對手勢圖像進行特征提取[6],經(jīng)過多次實驗研究,最終實現(xiàn)較穩(wěn)定的靜態(tài)手勢識別。
本文采用HMM算法進行手勢識別并創(chuàng)新地將識別結(jié)果應(yīng)用到可改造的工作臺上。
本文應(yīng)用了Kinect這一設(shè)備,Kinect是微軟公司2010年推出的一款XBOX360體感外部設(shè)備[7]。Kinect主要包括紅外投影機、RGB攝像頭、麥克風(fēng)陣列、仰角控制馬達[8]。用戶只需使用語音、手勢或者各種動作就能實現(xiàn)與計算機的交互。
Kinect通過紅外接收裝置記錄下每個散斑,根據(jù)散斑圖案可以推測出物體的實際深度[9]。通過OpenNI可以獲得Kinect的RGB圖像、紅外圖像以及深度圖像等等。
本課題就是將手勢識別技術(shù)應(yīng)用于可移動工作臺上,融合多領(lǐng)域的研究,包括手勢識別、智能控制等技術(shù)。通過Kinect設(shè)備采集手勢數(shù)據(jù),控制工作臺的移動,滿足人們生產(chǎn)、生活、學(xué)習(xí)的需要,還可將工作臺改造成物流分發(fā)小車或特殊人群用小車,可實現(xiàn)多種功能。使得該工作臺在現(xiàn)實的基礎(chǔ)上有更好的人機交互性、自主性,實時性好,方便快捷。
系統(tǒng)的總體結(jié)構(gòu)設(shè)計如圖1所示。
圖1 設(shè)計方案系統(tǒng)框圖
該工作臺控制系統(tǒng)主要分為3個部分。
1)手勢識別模塊主要是先將用戶的手勢分割出來,再進行手勢特征提取,將提取到的特征與手勢庫進行特征匹配,匹配率最高的手勢即為手勢識別的結(jié)果[10]。在這里手勢特征提取是手勢識別效果好壞的關(guān)鍵因素[11]。
2)ARM9處理器模塊主要是將手勢識別的結(jié)果轉(zhuǎn)換成數(shù)字信號,以便能夠控制驅(qū)動器。
3)驅(qū)動模塊采用96560A V3型CNC驅(qū)動器驅(qū)動步進電機以實現(xiàn)工作臺的左右轉(zhuǎn)動,采用L298芯片設(shè)計出直流電機驅(qū)動模塊以實現(xiàn)工作臺的上下移動。ARM9處理器輸出的信號控制驅(qū)動器,實現(xiàn)對工作臺系統(tǒng)的控制。
手勢識別算法有很多,常見的幾種算法如下:
動態(tài)時間規(guī)整(DTW):用時間規(guī)整函數(shù)描述輸入手勢和模板的時間對應(yīng)關(guān)系,求解模板匹配時累計距離最小所對應(yīng)的規(guī)整函數(shù)。該算法在時間規(guī)整過程引入誤差,識別精度不高。
神經(jīng)網(wǎng)絡(luò)模型:在某種學(xué)習(xí)準則下循環(huán)進行學(xué)習(xí),使得犯錯的概率達到最低。該算法容錯能力強,受噪聲干擾不大。但是該方法訓(xùn)練強度大。
隱性馬爾科夫模型(HMM):每一種手勢對應(yīng)一個HMM模型,識別時取概率最大的一個模型。該算法識別精度比較高,修改手勢庫簡單方便。本文選用HMM算法。
隱馬爾可夫模型是關(guān)于時序的概率模型。隱藏的馬爾可夫鏈隨機生成的狀態(tài)的序列,稱為狀態(tài)序列;每個狀態(tài)生成一個觀測,而由此產(chǎn)生的觀測的隨機序列,稱為觀測序列[12]。其中,狀態(tài)序列是隱藏不可見的,觀測序列是可見的[13]。由觀測序列可以推測出狀態(tài)序列。
一個隱馬爾可夫模型可以用μ=(S,K,A,B,π)來表示,其中S為狀態(tài)的有限集合,K為觀察值的有限集合,A為狀態(tài)轉(zhuǎn)移概率,B為輸出概率,π為初始狀態(tài)的概率分布。也可將其簡記為μ=(A,B,π)。
HMM可以用來解決3個基本問題:
1)估計問題:給定一個觀察序列O=O1,O2…OT和模型μ=(A,B,π),計算出該模型下觀察序列O出現(xiàn)的概率P(O|μ)。前向后向算法可以解決這個問題;
2)序列問題:給定一個觀察序列O=O1,O2…OT和模型μ=(A,B,π),尋找最可能的狀態(tài)序列Q=q1,q2…qT。維特比(Viterbi)算法可以解決這個問題;
3)訓(xùn)練問題或參數(shù)估計問題:給定一個觀察序列O=O1,O2…OT,調(diào)整模型μ=(A,B,π)參數(shù),使得P(O|μ)最大。Baum-Welch算法或類似的最大期望值算法可以解決這個問題。
本文重點研究訓(xùn)練問題即給定一個觀察序列,調(diào)節(jié)模型的參數(shù)使得P(O|μ)最大化:argmaxP(Otraining|μ)。模型的參數(shù)是指構(gòu)成μ的πi,aij,bj(k)。選擇最大似然估計法進行參數(shù)估計。如果產(chǎn)生觀察序列O的狀態(tài)序列Q=q1q2…qT已知,根據(jù)最大似然估計,HMM的參數(shù)可以通過以下公式計算:
其中,δ(x,y)為克羅奈克函數(shù),當x=y時,δ(x,y)=1;否則,δ(x,y)=0。vk是HMM輸出符號集中的第k個符號。
但實際上,由于HMM中的狀態(tài)序列Q是觀察不到的(隱變量),因此,這種最大似然估計的方法不行。不過,期望最大化(EM)算法可以得到參數(shù)最大似然估計。首先,給模型的參數(shù)賦值,得到模型μ0。然后,由μ0計算出模型中隱變量的期望值。最后,重新估計模型的參數(shù)。不斷重復(fù)這個過程,直到參數(shù)收斂。
Baum-Welch算法用于具體實現(xiàn)這種EM方法。給定參數(shù)μ和觀察序列O=O1O2…OT,在時間t位于狀態(tài)si,那么,時間t+1位于狀態(tài)sj的概率εt(i,j)=P(qt=si,qt+1=sj|O,μ)(1≤t≤T,1≤i,j≤N) 可 由下面的公式計算獲得:
給定μ和觀察序列O=O1O2…OT,在時間t位于狀態(tài)si的概率,由此,μ的參數(shù)可以由下面的公式重新估計:
重復(fù)執(zhí)行EM計算,直到πi,aij,bj(k)收斂。
動態(tài)手勢軌跡可以看做一個點軌跡,取手勢的中心為這個觀察點,并對其進行特征提取。一個點的運動可由該點的初始位置、運動方向、運動的距離確定[14]。即可以用軌跡的方向矢量來簡單的表示運動軌跡。如圖2所示,將運動軌跡的方向夾角量化成8等份[15]并將方向矢量作為隱馬爾可夫模型的觀察值。軌跡特征值可由離散的運動方向值來表示,在一定時間段內(nèi),選取手勢圖像中兩個相鄰的點p1,p2,計算的方向角θ,根據(jù)對角度θ所屬方向的劃分,得到運動方向的離散值。
圖2 角度的劃分和運動軌跡的角度
動態(tài)手勢識別可分為兩部分:1)手勢識別預(yù)處理;2)手勢運動軌跡提取[16]。本文先用OpenNI的預(yù)備手勢檢測到人手,再通過記錄手部重心的位置來跟蹤運動的手勢,進而實現(xiàn)對動態(tài)手勢的識別。在運動方向上對軌跡點序列進行方向特性量化后得到離散方向特征序列,利用離散HMM模型來對離散方向特征序列進行評估。隨后進行模糊化預(yù)處理、模糊推理與判決,最終得到手勢的含義。
輸入的手勢圖像經(jīng)嵌入式處理器處理識別后,經(jīng)過無線傳輸模塊傳輸給工作臺控制端控制板,輸出信號驅(qū)動步進電機和直線電機工作,最終實現(xiàn)工作臺的上下移動和水平方向正反向轉(zhuǎn)動。
圖3 工作臺的機械模型
工作臺的模型如圖3所示。該模型是一種可以在水平方向旋轉(zhuǎn)和在豎直方向上下移動的傳動機構(gòu)。根據(jù)實際需求,整個裝置在水平方向的旋轉(zhuǎn)和豎直方向的移動既能同時進行,又能分開進行。
如圖4所示:通過3個GB M10*55的螺栓和M5的螺母將步進電機固定在底板上,同時通過兩個GB M10*55的螺栓和螺母將軸承和底板固定在一起。2是帶動3小圓柱正齒輪(下面簡稱為小齒輪)的步進電機,小齒輪的規(guī)格是齒數(shù)z=30,大徑d=48,齒厚b=15,臺階厚度h=10。4為直徑d=28長度h=180的光軸。5為與小齒輪嚙合的大圓柱正齒輪(以下簡稱大齒輪),它的規(guī)格為齒數(shù)z=46,大徑d=74,齒厚b=15。6為與光軸相連的直流線圈電機外殼。7為直流線圈電機。8為平臺。9是GB M10*55的螺栓,10是GB M10*55的螺栓。11是GB M3*22的緊釘螺釘,12是GB M3*8的緊釘螺釘。13是GB M6*35的螺栓。14是GB M6*30的螺栓。16是在光軸上用轉(zhuǎn)頭轉(zhuǎn)的一個直徑d1=18深h=18的孔槽。18是一個長l=6,寬b=6,高h=15的鍵槽。最終工作臺的實物如圖5所示。
圖4 結(jié)構(gòu)示意圖
圖5 手勢識別工作臺
本實驗采用 Kinect for Windows 1.6,Kinect 1.0,OpenNI。所需的硬件要求:PC一臺,32位的處理器,OS為win7,以及ARM9處理器和自行設(shè)計的工作臺一臺。在Microsoft Visual Studio 2010的編譯環(huán)境下,本文采用C++編程實現(xiàn)識別功能。
定義向左、向右、向上、向下這幾個手勢分別控制工作臺的左移、右移、上移和下移。
邀請10個人來采集他們的動態(tài)手勢軌跡,每人每種手勢重復(fù)10次,那么可以得到相同手勢的軌跡樣本數(shù)為100。測試的時候每種手勢測試50次,識別結(jié)果如表1所示,可以看出這4種動態(tài)手勢識別率還是很高的。
表1 實驗數(shù)據(jù)統(tǒng)計
還在不同環(huán)境下進行了測試。分別在白天和晚上每種手勢測試50次,識別結(jié)果如表2所示。
表2 實驗數(shù)據(jù)統(tǒng)計
從表2可以看出本文的手勢識別方法在不同亮度的環(huán)境下識別結(jié)果幾乎沒什么太大的差別,實驗證明該方法具有較好的魯棒性。
本文結(jié)合運動檢測、跟蹤與識別,設(shè)計了一種Kinect工作臺控制系統(tǒng),完成了對手勢的檢測與識別,實現(xiàn)了對工作臺的控制。通過實驗證明,該控制系統(tǒng)能靈活的控制工作臺的運動,同時可以滿足實時性的要求,實用性強。當然還有許多不足之處,以后爭取在此基礎(chǔ)上進行改進以達到更好的實驗效果。
參考文獻:
[1]翁漢良,戰(zhàn)蔭偉.基于視覺的多特征手勢識別[J].計算機工程與科學(xué),2012(2):123-127.
[2]Takahashi T,Shino F K.Hand gesture coding based on experiments using a hand gesture interface deviee[J].SIGCHI Bul-letin,1991,23(2):67-73.
[3]Starner T,Pentland A.Real-time American Sign Language recognition from video using hidden Markov models[C]//Motion-Based Recognition.Springer Netherlands,1997:227-243.
[4]Li Y.Hand gesture recognition using Kinect[C]//Software Engineering and Service Science(ICSESS),2012 IEEE 3rd International Conference on.IEEE,2012:196-199.
[5]吳江琴,高文,宋益波.HMM方法在手語識別中的應(yīng)用[J].計算機工程與科學(xué),1999(3):42-46.
[6]何陽清.基于幾何特征的手勢識別算法研究[D].上海:上海海事大學(xué)信息工程學(xué)院,2004.
[7]錢鶴慶.應(yīng)用Kinect與手勢識別的增強現(xiàn)實教育輔助系統(tǒng)[D].上海:上海交通大學(xué),2011.
[8]余濤.Kinect用開發(fā)實踐[M].北京:機械工業(yè)出版社,2013.
[9]陳燕軍,汪地,楊浩,等.基于Kinect的手術(shù)輔助系統(tǒng)研究[J].計算機技術(shù)與發(fā)展,2014,24(9):81-83.
[10]馮志全,蔣彥.手勢識別研究綜述[J].濟南大學(xué)學(xué)報:自然科學(xué),2013,27(4):336-341.
[11]王松林.基于Kinect的手勢識別與機器人控制技術(shù)研究[D].北京:北京交通大學(xué),2014.
[12]張毅,張爍,羅元,等.基于Kinect深度圖像信息的手勢軌跡識別及應(yīng)用[J].計算機應(yīng)用研究,2012(9):3547-3550.
[13]李航.統(tǒng)計學(xué)習(xí)方法[M].北京:清華大學(xué)出版社,2012.
[14]江超,艾矯燕.基于OpenCV的攝像頭動態(tài)手勢軌跡識別及其應(yīng)用[J].計算機應(yīng)用,2012(S1):128-133.
[15]郭曉利,楊婷婷,張雅超.基于Kinect深度信息的動態(tài)手勢識別[J].東北電力大學(xué)學(xué)報,2016(2):90-94.
[16]陶麗君,李翠華,張希婧,等.基于Kinect傳感器深度信息的動態(tài)手勢識別[J].廈門大學(xué)學(xué)報:自然科學(xué)版,2013,52(4):493-497.