王子懿, 沈三民, 佘碩鋮
(中北大學 儀器科學與動態(tài)測試教育部重點實驗室, 山西 太原 030051)
隨著計算機技術的發(fā)展, 智能機器和虛擬現(xiàn)實等相關技術也得到了極大的發(fā)展, 因此, 人機交互便成了近年來被廣泛研究的熱點之一[1]。 基于動態(tài)手勢識別的人機交互也逐漸受到各個領域的青睞。
動態(tài)手勢識別是指對人手部運動軌跡進行識別, 關注某一段時間的連續(xù)動作, 更加符合人的表達習慣, 而與其對應的靜態(tài)手勢識別只是關注某時刻的手部外形特征。1996年,Kadous等[2]利用PowerGlov設備, 運用實例學習和決策樹判別的方法對95個手勢識別, 識別率為80%; 哈爾濱工業(yè)大學的吳江琴等[3]利用美國Vinual Technologies公司的CyberGlove型數(shù)據(jù)手套, 將人工神經(jīng)網(wǎng)絡與隱馬爾可夫模型(HMM)相結合, 成功建立了120個簡單手語詞的手語識別系統(tǒng)。 雖然基于可穿戴設備的手勢識別可以準確獲得手勢信號,但由于穿戴設備不夠方便且降低了手指的靈活性,基于視覺與感應傳感器的非接觸手勢識別應運而生。1997年,Grobel等采用HMM 對手部圖像進行處理, 手勢識別率達95%;2011年,Kurita教授分析了人體靜電分布情況, 并利用靜電感應信號實現(xiàn)了對雙足機器人的控制[4]。2006年,Wimmer等利用平面電容傳感器識別動態(tài)手勢, 實現(xiàn)了非觸的屏幕控制[5]。 目前, 利用視覺的手勢識別技術受光線影響較大, 而基于感應傳感器的主要的3種方式中, 激光與靜電方式受光線與氣候的影響較大, 電容檢測方式較前兩種受環(huán)境影響較小, 并且現(xiàn)行的電容檢測方式主要實現(xiàn)了簡單的位置解算。
本文將使用卡爾曼濾波與基于視覺手勢識別的HMM 方法[6], 實現(xiàn)對平面電容傳感陣列的信號捕捉與手部運動軌跡提取, 并完成簡單圖形的識別。
電容傳感器的激勵電極與感應電極通常情況下呈平行對立放置, 所以, 兩電極間的電場線也在兩極板之間平行均勻分布。 當兩個電極慢慢張開, 傳感器內部原本均勻平行的電場線逐漸向外擴張, 直至兩極板完全打開至共面狀態(tài)時, 兩極板之間的邊緣電場占主要地位, 而內部電場卻十分微弱, 如圖1所示。 平面電容傳感器陣列正是利用這一效應識別敏感區(qū)域內的動態(tài)手勢[7]。
圖1 平行板電容旋轉為平面電容Fig.1 Parallel plate capacitance rotation to a flat capacitor
人體脂肪的相對介電常數(shù)約為12.7, 肌肉的相對介電常數(shù)約為66.2, 均大于空氣的介電常數(shù)。因此, 當人體靠近平面電容傳感器時, 傳感器敏感空間內介質的介電常數(shù)會發(fā)生改變, 傳感器容值也會相應改變。
基于平面電容傳感器陣列的動態(tài)手勢識別流程如圖2所示。 首先, 由平面電容傳感器陣列感應手部運動, 電容檢測系統(tǒng)采集感應數(shù)據(jù)[ΔCij]n×m, 不同時刻的手部空間位置的變化即是手部運動軌跡。 由于環(huán)境噪聲等因素造成手部運動軌跡的平滑度低, 因此, 采用卡爾曼濾波對手部運動軌跡進行降噪處理為(x,y)[8]。 利用手部位置跟蹤HMM 算法解算出某時刻對應的手部的空間位置(Xs,Ys), 并匹配預先設置的動態(tài)手勢識別圖形Gi, 最后, 通過上位機根據(jù)識別的圖形進行相應的交互操作。
圖2 基于平面電容傳感陣列的動態(tài)手勢識別過程Fig.2 Dynamic gesture identification process based onflat capacitive sensing array
平面電容傳感器激勵電極與感應電極結構與位置的不同, 將影響該傳感器的電容分布。 其中,主要的電極形狀有圓形, 矩形, 梳齒形, 螺旋形等[9-10]。 各種形狀的傳感器在COMSOL軟件中得出的網(wǎng)格劃分圖如圖3所示。
圖3 4種形狀傳感器的尺寸與網(wǎng)格Fig.3 Size and grid of four shape sensors
使用COMSOL軟件仿真獲得的4種形狀電極的三維電場圖與電勢圖如表1所示。 由表1中的三維電場圖可以看出, 敏感空間主要分布于電極間隙。 對于圓形與矩形電極而言, 該區(qū)域相對整個電極平面來說面積較窄; 對于梳齒形與螺旋形電極而言, 電極間面積相對較大且分布相對均勻, 且由于梳齒形及螺旋形電極的電極相互感應部分較多, 在相同電極大小的情況下, 這兩種形狀的電極電場模較大[11]。 經(jīng)過仿真與理論分析可知, 螺旋形電極敏感空間較大且較為均勻。 因此, 本文采用螺旋形電極進行平面電容傳感陣列的設計。
表1 4種形狀電極的電場圖與電勢圖Tab.1 Electric field map and potential map of four shape electrodes
通過對比表1中的仿真結果, 最終確定了單個電極的形狀采用螺旋形結構, 由于采用蜂窩形結構可以在同樣的傳感面積內加入更多的傳感單元, 故本文設計的傳感器陣列采用六邊形結構,共19個電極單元, 如圖4所示。 在電極平面中,通過六邊形結構將每個電極單元包裹起來形成屏蔽電極地, 這樣設計可以有效減少相鄰電極單元之間的串擾, 并且六邊形的設計可以在相同的空間內堆積更多的電極單元(平面最密堆積)[12], 增加手勢識別的精確度。 電極寬度、 電極長度、 電極厚度、 基板的厚度、 基板的介電常數(shù)等均通過仿真方法進行確定[13]。 經(jīng)過仿真與實驗驗證, 最終設計出來的基于平面電容傳感器陣列的尺寸如下:交互界面的面積約為460 mm×540 mm, 屏蔽地寬度為10 mm, 單個傳感器半徑約為80 mm, 其電寬度與極間距均為5 mm。
圖4 平面電容傳感器陣列結構圖示Fig.4 Structure illustration of planar capacitance sensor array
如圖4所示, 傳感器正面為電極單元和屏蔽地的銅層組成, 并在底面添加襯底與保護電極,其中襯底為絕緣襯底, 保護電極是在平面電容傳感器的襯底背面覆蓋導體并接地, 這樣可以一定程度地減少環(huán)境產(chǎn)生的寄生效應, 從而減小雜散電容, 減小噪聲的干擾[14]。
當手部處于傳感器陣列敏感區(qū)域時, 會與各個電極形成多電容, 但每個位置的感應強度有所不同, 手部距離越近的傳感器感應越強。 因此, 可以根據(jù)不同傳感器感應的大小(檢測系統(tǒng)的輸出電壓變化大小)引入線性加權法來估計手部的空間位置。 其計算式如下
式中:ΔVi為電容檢測系統(tǒng)各通道的電壓變化值,(xi,yi)為平面電容傳感器陣列中每個傳感器的電極質心坐標。 當手部從遠處移動到傳感器陣列的感應區(qū)域時, 手部處于某傳感器的電極正前方,此時手部與該傳感器的電極距離最近, 電容檢測系統(tǒng)對應的檢測通道輸出電壓變化值最大, 因此,其在坐標計算時權重最大。 本文通過設定電壓閾值點來判斷手勢運動的開始點和結束點, 即當傳感器陣列中任意傳感器的信號輸出超過閾值, 則認為手部運動開始, 當傳感器陣列中所有傳感器的信號輸出均不超過閾值, 則認為手部運動結束。圖5為根據(jù)式(1)計算得到的坐標繪制的手部運動軌跡。 兩次試驗的手部運動軌跡都為“V”形, 從圖中可以看出, 經(jīng)過新的手部運動軌跡跟蹤方法得到的軌跡曲線平滑度差, 會大大降低對軌跡圖形的識別效率, 因此, 需要對軌跡曲線進行平滑處理。 本文選擇的卡爾曼濾波方法動態(tài)手勢識別中被廣泛應用。
圖5 根據(jù)手部位置跟蹤方法得到“V”形軌跡Fig.5“V”trajectory according to the hand positiontracking method
本文通過卡爾曼濾波算法對手部運動軌跡在MATLAB軟件上進行仿真[15]。 仿真時, 在真實的手部運動軌跡上疊加10%的白噪聲, 使用卡爾曼濾波后得到的手部運動軌跡如圖6所示。 從圖中可以看出, 經(jīng)過手部位置跟蹤算法解算后的手部運動軌跡散布在真實軌跡周圍, 經(jīng)過卡爾曼濾波后, 手部運動軌跡變得平滑且接近于真實軌跡。
圖6 卡爾曼濾波算法仿真結果Fig.6 Kalman filter algorithm simulation results
手勢識別的實質是曲線識別和匹配。 曲線識別和匹配中, 常用鏈碼(又稱為freeman 碼)描述曲線, 鏈碼匹配算法描述鏈狀結構時具有顯著優(yōu)越性, 因此被廣泛應用于曲線、 圖形的模式識別等領域[16]。 本文采用的平面電容傳感器的電極數(shù)較少, 因此無需采用過多方向鏈碼, 選用8方向鏈碼即可對手部運動軌跡每個時段的運動方向進行離散化(如圖7所示), 由該圖可見,8方向在二維空間內均勻分布。 如果采用8方向鏈碼編碼表示圖8所示的運動曲線, 則曲線的編碼為8822。 通過上述的鏈碼對曲線編碼, 其編碼值構成特征向量, 即得到特征觀察量O={O1, …,Ok}, 再利用HMM 識別算法對手部運動軌跡進行識別[17]。
圖7 空間運動8方向鏈碼圖示Fig.7 Space motion 8 direction chain code illustration
圖8 待編碼的運動曲線Fig.8 Sport curve to be encoded
HMM 識別算法主要通過觀測出的坐標結果來預測本次手勢內容, 該模型主要包含觀測量O,隱含狀態(tài)S; 參數(shù)矩陣包含初始狀態(tài)分布矩陣π,狀態(tài)轉移概率矩陣A及觀測狀態(tài)概率矩陣B。 首先需要使用EM 算法中的鮑姆-韋爾奇算法(Baum-Welch algorithm)對不同手勢的矩陣模型(π,A,B)進行訓練, 然后通過向前向后算法求出當前觀測序列在不同模型下出現(xiàn)的概率, 同時設定一個概率閾值, 若出現(xiàn)概率均沒有超過設定的概率閾值, 則認為此次手勢識別失敗, 否則, 出現(xiàn)概率最大的模型即為當前手勢識別結果。
本文主要實現(xiàn)0~5數(shù)字的文字識別, 預設的交互圖形見圖9。 由于0~5中有些數(shù)字形狀較為復雜, 為了提高圖形識別率, 本文對其進行了簡化處理。 利用簡化處理后的交互圖形, 可以降低識別的難度。 數(shù)字圖形的簡化與原圖形基本類似,仍能從簡化圖形中直觀看出對應的數(shù)字, 這樣不會降低用戶體驗。
圖9 預設的數(shù)字圖形與文件操作圖形Fig.9 Preset digital graphics and file operation graphics
在進行動態(tài)手勢識別圖形試驗時, 對于HMM 模型的訓練樣本數(shù)為50, 人手距離電極平面約為200 m。 每種圖形的測試數(shù)為25。 根據(jù)每次試驗中正確次數(shù)計算出成功識別圖形的正確率。從表2可以看出, 數(shù)字“1”這類較為簡單的圖形狀識別率最高為100%, 其余數(shù)字圖形的識別率均在88%以上, 平均識別率達到95%。
表2 動態(tài)手勢識別結果Tab.2 The result of dynamic gesture identification
在通過對各個數(shù)字進行識別后發(fā)現(xiàn), 較為簡單且直觀的數(shù)字識別率較高, 如果圖形較為復雜, 則識別率會相應降低。 因此, 在基于手勢識別進行人機交互的命令設計時, 可以設置一些較為簡單的圖形, 其一方面可以相應的提升傳感器的識別率, 另一方面也可以降低使用難度, 提高用戶的體驗感。
本文利用平面電容傳感器對人體的敏感性,開展了基于平面電容傳感陣列的動態(tài)手勢識別應用研究。 使用手部位置跟蹤算法得到了手部運動軌跡曲線, 再利用卡爾曼濾波算法對手部離散位置進行預測和平滑處理, 顯著提高了噪聲條件下手部運動軌跡的位置解算精度。 并運用HMM 算法對手勢軌跡進行識別, 實現(xiàn)了對預設交互圖形的匹配。 最后, 通過實驗驗證了該系統(tǒng)對數(shù)字圖形0~5的識別, 平均識別率高達95%, 可以較好地運用于基于動態(tài)手勢識別的簡單的人機交互。