張倩,鄭明輝
(江蘇科技大學電子與信息學院,江蘇鎮江212003)
手勢是日常生活中一種直觀形象、簡單豐富的交流方式[1]。嵌入式手勢識別技術讓我們不再需要去理會繁瑣復雜的按鍵和按鈕,讓設備使用起來更簡單靈活,在機器人、智能家居及日常生活和娛樂等領域的作用日益卓越。
1991年,TAKAHASHI[2]開始研究手勢符號,實現對46個手勢符號的識別。美國研究人員Starner[3]等人在對手勢的研究中完成了對40個詞匯隨機組成的句子進行比較精確的識別。Yi Li[4]依據輪廓和凸凹點檢測確定5個手指位置并通過計算三點的夾角特征識別靜態手勢。哈爾濱工業大學的吳江琴[5]等人在中國手語研究中,將人工神經網絡與HMM兩種方法相互結合,增強識別方法的分類特性,最終實現了對孤立詞和簡單語句的較準確識別。上海海事大學的研究人員,利用幾何特征及距離特征等對手勢圖像進行特征提取[6],經過多次實驗研究,最終實現較穩定的靜態手勢識別。
本文采用HMM算法進行手勢識別并創新地將識別結果應用到可改造的工作臺上。
本文應用了Kinect這一設備,Kinect是微軟公司2010年推出的一款XBOX360體感外部設備[7]。Kinect主要包括紅外投影機、RGB攝像頭、麥克風陣列、仰角控制馬達[8]。用戶只需使用語音、手勢或者各種動作就能實現與計算機的交互。
Kinect通過紅外接收裝置記錄下每個散斑,根據散斑圖案可以推測出物體的實際深度[9]。通過OpenNI可以獲得Kinect的RGB圖像、紅外圖像以及深度圖像等等。
本課題就是將手勢識別技術應用于可移動工作臺上,融合多領域的研究,包括手勢識別、智能控制等技術。通過Kinect設備采集手勢數據,控制工作臺的移動,滿足人們生產、生活、學習的需要,還可將工作臺改造成物流分發小車或特殊人群用小車,可實現多種功能。使得該工作臺在現實的基礎上有更好的人機交互性、自主性,實時性好,方便快捷。
系統的總體結構設計如圖1所示。

圖1 設計方案系統框圖
該工作臺控制系統主要分為3個部分。
1)手勢識別模塊主要是先將用戶的手勢分割出來,再進行手勢特征提取,將提取到的特征與手勢庫進行特征匹配,匹配率最高的手勢即為手勢識別的結果[10]。在這里手勢特征提取是手勢識別效果好壞的關鍵因素[11]。
2)ARM9處理器模塊主要是將手勢識別的結果轉換成數字信號,以便能夠控制驅動器。
3)驅動模塊采用96560A V3型CNC驅動器驅動步進電機以實現工作臺的左右轉動,采用L298芯片設計出直流電機驅動模塊以實現工作臺的上下移動。ARM9處理器輸出的信號控制驅動器,實現對工作臺系統的控制。
手勢識別算法有很多,常見的幾種算法如下:
動態時間規整(DTW):用時間規整函數描述輸入手勢和模板的時間對應關系,求解模板匹配時累計距離最小所對應的規整函數。該算法在時間規整過程引入誤差,識別精度不高。
神經網絡模型:在某種學習準則下循環進行學習,使得犯錯的概率達到最低。該算法容錯能力強,受噪聲干擾不大。但是該方法訓練強度大。
隱性馬爾科夫模型(HMM):每一種手勢對應一個HMM模型,識別時取概率最大的一個模型。該算法識別精度比較高,修改手勢庫簡單方便。本文選用HMM算法。
隱馬爾可夫模型是關于時序的概率模型。隱藏的馬爾可夫鏈隨機生成的狀態的序列,稱為狀態序列;每個狀態生成一個觀測,而由此產生的觀測的隨機序列,稱為觀測序列[12]。其中,狀態序列是隱藏不可見的,觀測序列是可見的[13]。由觀測序列可以推測出狀態序列。
一個隱馬爾可夫模型可以用μ=(S,K,A,B,π)來表示,其中S為狀態的有限集合,K為觀察值的有限集合,A為狀態轉移概率,B為輸出概率,π為初始狀態的概率分布。也可將其簡記為μ=(A,B,π)。
HMM可以用來解決3個基本問題:
1)估計問題:給定一個觀察序列O=O1,O2…OT和模型μ=(A,B,π),計算出該模型下觀察序列O出現的概率P(O|μ)。前向后向算法可以解決這個問題;
2)序列問題:給定一個觀察序列O=O1,O2…OT和模型μ=(A,B,π),尋找最可能的狀態序列Q=q1,q2…qT。維特比(Viterbi)算法可以解決這個問題;
3)訓練問題或參數估計問題:給定一個觀察序列O=O1,O2…OT,調整模型μ=(A,B,π)參數,使得P(O|μ)最大。Baum-Welch算法或類似的最大期望值算法可以解決這個問題。
本文重點研究訓練問題即給定一個觀察序列,調節模型的參數使得P(O|μ)最大化:argmaxP(Otraining|μ)。模型的參數是指構成μ的πi,aij,bj(k)。選擇最大似然估計法進行參數估計。如果產生觀察序列O的狀態序列Q=q1q2…qT已知,根據最大似然估計,HMM的參數可以通過以下公式計算:


其中,δ(x,y)為克羅奈克函數,當x=y時,δ(x,y)=1;否則,δ(x,y)=0。vk是HMM輸出符號集中的第k個符號。
但實際上,由于HMM中的狀態序列Q是觀察不到的(隱變量),因此,這種最大似然估計的方法不行。不過,期望最大化(EM)算法可以得到參數最大似然估計。首先,給模型的參數賦值,得到模型μ0。然后,由μ0計算出模型中隱變量的期望值。最后,重新估計模型的參數。不斷重復這個過程,直到參數收斂。
Baum-Welch算法用于具體實現這種EM方法。給定參數μ和觀察序列O=O1O2…OT,在時間t位于狀態si,那么,時間t+1位于狀態sj的概率εt(i,j)=P(qt=si,qt+1=sj|O,μ)(1≤t≤T,1≤i,j≤N) 可 由下面的公式計算獲得:

給定μ和觀察序列O=O1O2…OT,在時間t位于狀態si的概率,由此,μ的參數可以由下面的公式重新估計:

重復執行EM計算,直到πi,aij,bj(k)收斂。
動態手勢軌跡可以看做一個點軌跡,取手勢的中心為這個觀察點,并對其進行特征提取。一個點的運動可由該點的初始位置、運動方向、運動的距離確定[14]。即可以用軌跡的方向矢量來簡單的表示運動軌跡。如圖2所示,將運動軌跡的方向夾角量化成8等份[15]并將方向矢量作為隱馬爾可夫模型的觀察值。軌跡特征值可由離散的運動方向值來表示,在一定時間段內,選取手勢圖像中兩個相鄰的點p1,p2,計算的方向角θ,根據對角度θ所屬方向的劃分,得到運動方向的離散值。

圖2 角度的劃分和運動軌跡的角度
動態手勢識別可分為兩部分:1)手勢識別預處理;2)手勢運動軌跡提取[16]。本文先用OpenNI的預備手勢檢測到人手,再通過記錄手部重心的位置來跟蹤運動的手勢,進而實現對動態手勢的識別。在運動方向上對軌跡點序列進行方向特性量化后得到離散方向特征序列,利用離散HMM模型來對離散方向特征序列進行評估。隨后進行模糊化預處理、模糊推理與判決,最終得到手勢的含義。
輸入的手勢圖像經嵌入式處理器處理識別后,經過無線傳輸模塊傳輸給工作臺控制端控制板,輸出信號驅動步進電機和直線電機工作,最終實現工作臺的上下移動和水平方向正反向轉動。

圖3 工作臺的機械模型
工作臺的模型如圖3所示。該模型是一種可以在水平方向旋轉和在豎直方向上下移動的傳動機構。根據實際需求,整個裝置在水平方向的旋轉和豎直方向的移動既能同時進行,又能分開進行。
如圖4所示:通過3個GB M10*55的螺栓和M5的螺母將步進電機固定在底板上,同時通過兩個GB M10*55的螺栓和螺母將軸承和底板固定在一起。2是帶動3小圓柱正齒輪(下面簡稱為小齒輪)的步進電機,小齒輪的規格是齒數z=30,大徑d=48,齒厚b=15,臺階厚度h=10。4為直徑d=28長度h=180的光軸。5為與小齒輪嚙合的大圓柱正齒輪(以下簡稱大齒輪),它的規格為齒數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是在光軸上用轉頭轉的一個直徑d1=18深h=18的孔槽。18是一個長l=6,寬b=6,高h=15的鍵槽。最終工作臺的實物如圖5所示。

圖4 結構示意圖

圖5 手勢識別工作臺
本實驗采用 Kinect for Windows 1.6,Kinect 1.0,OpenNI。所需的硬件要求:PC一臺,32位的處理器,OS為win7,以及ARM9處理器和自行設計的工作臺一臺。在Microsoft Visual Studio 2010的編譯環境下,本文采用C++編程實現識別功能。
定義向左、向右、向上、向下這幾個手勢分別控制工作臺的左移、右移、上移和下移。
邀請10個人來采集他們的動態手勢軌跡,每人每種手勢重復10次,那么可以得到相同手勢的軌跡樣本數為100。測試的時候每種手勢測試50次,識別結果如表1所示,可以看出這4種動態手勢識別率還是很高的。

表1 實驗數據統計
還在不同環境下進行了測試。分別在白天和晚上每種手勢測試50次,識別結果如表2所示。

表2 實驗數據統計
從表2可以看出本文的手勢識別方法在不同亮度的環境下識別結果幾乎沒什么太大的差別,實驗證明該方法具有較好的魯棒性。
本文結合運動檢測、跟蹤與識別,設計了一種Kinect工作臺控制系統,完成了對手勢的檢測與識別,實現了對工作臺的控制。通過實驗證明,該控制系統能靈活的控制工作臺的運動,同時可以滿足實時性的要求,實用性強。當然還有許多不足之處,以后爭取在此基礎上進行改進以達到更好的實驗效果。
參考文獻:
[1]翁漢良,戰蔭偉.基于視覺的多特征手勢識別[J].計算機工程與科學,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方法在手語識別中的應用[J].計算機工程與科學,1999(3):42-46.
[6]何陽清.基于幾何特征的手勢識別算法研究[D].上海:上海海事大學信息工程學院,2004.
[7]錢鶴慶.應用Kinect與手勢識別的增強現實教育輔助系統[D].上海:上海交通大學,2011.
[8]余濤.Kinect用開發實踐[M].北京:機械工業出版社,2013.
[9]陳燕軍,汪地,楊浩,等.基于Kinect的手術輔助系統研究[J].計算機技術與發展,2014,24(9):81-83.
[10]馮志全,蔣彥.手勢識別研究綜述[J].濟南大學學報:自然科學,2013,27(4):336-341.
[11]王松林.基于Kinect的手勢識別與機器人控制技術研究[D].北京:北京交通大學,2014.
[12]張毅,張爍,羅元,等.基于Kinect深度圖像信息的手勢軌跡識別及應用[J].計算機應用研究,2012(9):3547-3550.
[13]李航.統計學習方法[M].北京:清華大學出版社,2012.
[14]江超,艾矯燕.基于OpenCV的攝像頭動態手勢軌跡識別及其應用[J].計算機應用,2012(S1):128-133.
[15]郭曉利,楊婷婷,張雅超.基于Kinect深度信息的動態手勢識別[J].東北電力大學學報,2016(2):90-94.
[16]陶麗君,李翠華,張希婧,等.基于Kinect傳感器深度信息的動態手勢識別[J].廈門大學學報:自然科學版,2013,52(4):493-497.