王粉花, 張萬書
(北京科技大學自動化學院,北京 100083)
真實人與虛擬世界的溝通要憑借人機交互技術,在人與計算機之間相互適應的互動過程中,人機交互技術也不再局限于鼠標鍵盤輸入、遙控器操作等,而是以更加新奇的方式出現,如聲波振動、手勢動作、眼珠和舌頭的轉動等。基于手勢識別的人機交互技術是目前虛擬現實領域的研究熱點之一。利用手的位置、姿勢和運動來與計算機進行交互,是一種自然高效的交互方式[1-3]。
基于手勢識別技術的3D虛擬交互系統采用一個固定攝像頭采集左手的姿態和動作信息,控制視角在3D環境中移動和轉向;采用兩個具有兩個自由度轉動的攝像頭動態跟蹤采集右手的姿態和位置,控制3D環境中虛擬手的移動和動作變化,通過對虛擬手的操作實現與虛擬環境中三維物體的交互,如抓取、移動物體等動作。并隨著左手的移動切換3D場景,同時伴隨不同的動作發出不同的聲音,可實現真實的人與虛擬3D環境之間的沉浸式交互[4-5]。
系統的硬件結構包括圖像采集模塊、嵌入式主處理器平臺、協處理器動態跟蹤模塊三部分,如圖1所示。以英特爾凌動處理器平臺作為整個嵌入式系統的核心,通過DVI接口,Audio芯片分別和顯示器及音響連接,作為整個系統圖像和聲音的輸出;通過PCI插槽與視頻采集卡相連,采集3個角度攝像頭的圖像信息,經過圖像處理和手勢識別后作為交互的輸入信息;通過COM1接口采用串口方式與ATMega16協處理器相通信,用來控制攝像頭實時動態跟蹤手的運動。
圖像采集模塊包括視頻采集卡、拍攝左手圖像的左攝像頭,以及分別拍攝右手圖像的左、右視圖的右攝像頭1和右攝像頭2。

圖1 系統硬件結構圖
選用模擬攝像頭+采集卡的圖像采集方案。采用3個輸出信號為模擬量的攝像頭采集原始圖像,通過HB17004TV視頻采集卡轉換為數字格式的圖像,采集卡通過PCI總線插槽與嵌入式主板相連,應用采集卡SDK中的API接口函數,啟動采集卡并獲取圖像。
嵌入式主處理器平臺包括英特爾凌動處理器、音頻接口、視頻接口、串行通信接口。它是基于英特爾功能強大的Menlow處理器,該平臺功耗低,體積小,具有LPC、PCI、ISA等豐富的硬件接口,可在實驗環境下保持長時間穩定運行[6]。
主處理器的主要任務包括:利用左手分割信息獲得虛擬場景視角變化信息;基于右手分割信息進行手勢識別獲得手勢姿態信息;分別計算右手圖像的目標位置和采集位置偏差的實際轉化值;根據右手的空間坐標值、右手的手勢姿態信息以及虛擬場景視角變化信息,進行3D場景更新。
協處理器動態跟蹤模塊包括協處理器和步進電機。協處理器基于每個循環周期從主處理器發送的右手圖像的目標位置和采集位置偏差的實際轉化值,獲取當前循環周期各步進電機的位置和步進值,其中,步進電機包括右攝像頭1的左水平步進電機、左垂直步進電機,和右攝像頭2的右水平步進電機、右垂直步進電機;并根據右攝像頭1和2的轉角獲取右手的空間坐標。
系統軟件的設計步驟是:系統開始運行后,首先進入系統初始化階段,進行窗體初始化、協處理器通信初始化、采集卡初始化、3D場景初始化。
初始化結束,進入消息循環階段,處理窗體有關的消息。在大部分的循環空閑時間執行圖像處理和3D顯示的程序。
在圖像處理部分,首先進行圖像采集,之后對采集的圖像進行分割,把圖像中手的部分分離處理,確定其范圍和中心點。其中左手的分割結果直接送到交互接口程序,判斷視角的移動和旋轉;右手的分割結果一部分計算距離偏差,由協處理器進行跟蹤的運動控制,計算并返回手的空間坐標值;右手的分割結果另一部分送入手勢識別程序,經過邊緣提取、分類判別得到手勢姿態。
交互接口部分綜合得到視角的移動和旋轉值、手的移動和姿態值,交給3D場景更新部分。3D場景更新部分根據交互接口的傳遞值和目前3D環境中的狀態,根據物理規則計算下一時刻場景的狀態和聲音情況,并更新、輸出下一時刻的3D場景和聲音。系統軟件設計流程圖如圖2所示。

圖2 系統軟件流程圖
攝像頭的好壞決定了圖像采集的原始質量,采集卡則決定了圖像采集的分辨率、傳輸的速度。
經過多次比較發現,USB攝像頭采集的圖像色彩明顯不如模擬攝像頭采集的圖像色彩飽和、鮮艷、真實,在基于顏色的判別時會有偏差。而且在光照條件變化的情況下,因“補償”和“增益”的性能影響,USB攝像頭的適應性也不如模擬攝像頭好。傳輸速度上,USB攝像頭對動態圖像的分辨率和響應會下降,而模擬攝像頭因采用專用視頻壓縮采集卡,對動態的圖像也可以很流暢地采集。因此,本系統最終選擇了模擬攝像頭的采集方案。同時嘗試了很多種型號的采集卡,最終選擇了漢邦HB17004TV系列采集卡。該采集卡性能分析如下[7]:
(1)采集卡總線接口為PCI,支持4路視頻輸入;
(2)視頻的分辨率為CIF(352×288);
(3)該采集卡提供SDK開發包,方便圖像采集的開發。
本文采用基于多智能體協作思想的圖像分割算法,其原理敘述如下:
把圖像看作一個復雜的“環境”,在這個“環境”里,每一個像素點都是一個獨立的“智能體”,這個“智能體”具有它獨立的屬性和能力[5]。屬性包括所代表的像素點的灰度值、RGB顏色分量值、HSV顏色分量值、相鄰個體的地址、所屬的分組值等;能力包括“行為”和“對話”等能力,“行為”能力包括判斷自身顏色,“對話”能力包括ask、tell等對話的語句。復雜“環境”中的一群“智能體”在“管理者”的引導下互相交流,共同去完成圖像分割的任務,也就是找到其中符合規則協議的子群體,這個子群體就是最終分割的結果。在“智能體”概念的基礎上建立的“管理者”不具備某一個像素點的屬性,但它具有像素點的能力和監督引導個體行為的權力,它負責利用規則協議引導個體之間進行有效的行為和對話,完成圖像分割的任務[8-9]。
規則協議分為區域規則和邊緣規則。在區域規則中,每個組都要計算個體的數量,對于雜點來說,這樣的組個體數量應該較小,所以排除個體數較小的組。
在邊緣規則中,每個組要計算組的中心點位置,每兩個中心點做連線,判斷圖像在連線上的顏色,經過手和手臂的連線上黑色和膚色將是主要的顏色,再根據連線的方向最終可判斷出手的區域[10]。圖像分割算法流程如圖3所示。
手在做動作時,手掌和手指的形狀特征變化很明顯,所以本文采用了基于形狀特征的方法識別手勢動作。具體方法如下:

圖3 圖像分割算法流程圖
從右手分割信息中獲得包含右手手部區域的最小矩形的縱橫比系數、最小矩形面積以及右手手部區域實際面積,計算右手手部區域實際面積與最小矩形面積的面積比,當縱橫比系數接近于1且面積比大于0.6,為握拳姿態,否則為手掌姿態;當為手掌姿態時,在最小矩形縱向邊長的三分之二處和四分之三處分別畫兩條橫線,判斷兩條橫線上膚色點翻轉次數之和,當翻轉次數大于6時,為伸直平掌,否則為伸直側掌。
動態跟蹤模塊的程序分主處理器端和協處理器端。主處理器端在每個循環周期里向協處理器發送偏差值并讀取坐標,協處理器則根據偏差控制電機帶動攝像頭轉動,并根據各攝像頭轉角計算出手的空間坐標,返回給主處理器。協處理器接收數據采用中斷方式,這樣在電機正常轉動的同時保證數據的接收與控制計算[11]。主處理器端程序流程如圖4所示,協處理器端程序流程如圖5所示。

圖4 主處理器端程序流程圖
本系統采用Direct3D和DirectSound開發3D虛擬交互界面和聲音系統。可根據不同的場景需求,進而發出不同的聲音,使得人機虛擬交互場景更加生動和真實。場景模型的建立,采用3dsmax進行輔助開發,實現復雜場景及物體模型的建立[12-13],在手的動作上,采用骨骼蒙皮技術實現[14]。3D虛擬場景程序開發流程如圖6所示。

圖5 協處理器端程序流程圖

圖6 3D虛擬場景程序開發流程圖
對虛擬手位置控制的測試,分別測試了上移、下移、左移、右移四個位置的控制。控制位置測試記錄如表1所示。控制移動動作識別的成功率測試記錄如表2所示。
測試發現,真實的手在水平方向作左右移動時,虛擬手的運動路線呈一條曲線,當離中心點越遠偏差越大。經過分析,發現定位算法造成的誤差不大,誤差的產生是機械安裝的精度造成的,在攝像頭旋轉時,成像的中心點和旋轉的中心點會有不可避免的安裝精度誤差,這樣當旋轉角度較大時,會造成成像中心點的偏移,導致了位置的誤差;經過對機械結構的改造,基本滿足了實際控制的精度要求[15]。
對虛擬手動作控制的測試,分別測試了伸直側向、握緊2個動作。測試結果分別如圖7、8所示。

表1 虛擬手控制位置測試表

表2 控制移動動作識別的成功率測試

圖7 控制虛擬手動作——伸直側向

圖8 控制虛擬手動作——握緊
手勢識別的成功率測試記錄如表3所示:

表3 識別的成功率測試
本文設計實現了一個基于手勢識別的3D虛擬交互系統。通過對左手運動方位的分析控制場景中視角的變化,并對右手位置和右手手勢進行分析,得到右手在場景中對應虛擬手的三維位置信息,進而不斷更新場景中虛擬手的位置和手勢。通過手勢動作去控制真實人與顯示在計算機桌面中的虛擬環境進行交互,能夠控制虛擬手完成抓取和移動物體的動作,并取得了良好的測試效果。
[1] 陳 超,孟劍萍.基于手勢識別的人機交互技術[J].計算機與數字工程,2012,40(10):137-139,142.CHEN Chao,MENG Jian-ping.Research and Design for Human-Computer Interaction Based on Gesture[J].Computer & Digital Engineering,2012,40(10):137-139,142.
[2] 張東明,張國鋒,戴樹齡.基于視覺的多用戶手勢識別人機交互技術研究[J].系統仿真學報,2008,20(9):53-56.ZHANG Dong-ming,ZHANG Guo-feng,DAI Shu-ling.Research on Vision-Based Multi-userGesture Recognition Human-Computer Interaction[J].Journal of System Simulation,2008,20(9):53-56.
[3] 劉衛光.圖像信息融合與識別[M].北京:電子工業出版社,2008.
[4] 周見光,石 剛,馬小虎.增強現實系統中的虛擬交互方法[J].計算機工程,2012,38(1):251-252,255.ZHOU Jian-guang,SHI Gang,MA Xiao-hu.Virtual Interactive Method in Augmented Reality System[J].Computer Engineering,2012,38(1):251-252,255.
[5] 袁 麗,張寶運.人機自然交互支持的3D虛擬教具設計[J].系統仿真學報,2012,24(9):1973-1975,1979.YUAN Li,ZHANG Bao-yun.Design of 3D Virtual Manipulatives Supported by Natural Human Computer Interaction[J].Journal of System Simulation,2012,24(9):1973-1975,1979.
[6] 華北工控.EMB_4650 EPIC Board USER'Manual V1.0[Z].北京:華北工控,2009.
[7] 北京漢邦高科數字技術有限公司.HB18T系統SDK開發指南[Z].北京:北京漢邦高科數字技術有限公司,2009.
[8] 張曉勇,吳 敏,彭 軍.基于信息融合的多智能體協作方法的研究與應用[J].計算機工程與應用,2008,44(22):27-30.ZHANG Xiao-yong,WU Min,PENG Jun.Research and application on MAS collaboration mechanism based on information fusion.Computer Engineering and Applications,2008,44(22):27-30.
[9] 付躍文,梁加紅,李 猛,等.基于多智能體粒子群的快速碰撞檢測算法研究[J].系統仿真學報,2013,25(8):1876-1880.FU Yue-wen,LIANG Jia-hong,LI Meng,et al.Research on Fast Collision Detection Using Multi-Agent Particle Swarm Optimization[J].Journal of System Simulation,2013,25(8):1876-1880.
[10] CAO Long-bing, DAI Ru-wei. Human-Computer-Cooperated Intelligent Information System Based on Multi-Agents[J].Acta Automatica Sinica,2003,29(1):86-94.
[11] Frank D.Luna.DirectX 9.0 3D 游戲開發編程基礎[M].北京:清華大學出版社,2007.
[12] Jim Adams.DirectX高級動畫制作[M].重慶:重慶大學出版社,2005.
[13] 李維杰,楊 昱,林紀河.中文版3dsmax8三維造型與動畫制作簡明教程[M].北京:清華大學出版社,2007.
[14] 張沙沙.基于骨骼蒙皮動畫的虛擬人手勢合成技術的研究[J].計算機光盤軟件與應用,2013,16(7):108-110.ZHANG Sha-sha.Research on virtual human gesture synthesis technology based on skinned mesh animation[J].Computer CD Software and Application,2013,16(7):108-110.
[15] 朱向慶,胡均萬,陳宏華,等.多功能單片機實驗系統的研制[J].實驗室研究與探索,2012,31(4):41-44.ZHU Xiang-qing, HU Jun-wan, CHEN Hong-hua, etal.Development of a Multifunctional Experimental System for Single Chip Microprocessor[J].Research and Exploration in Laboratory,2012,31(4):41-44.