史亨禎,王 昱,石孟楠,賈常見 (東北石油大學軟件學院,黑龍江 大慶 163318)
基于ARToolKit的手指識別增強現實系統的設計
史亨禎,王 昱,石孟楠,賈常見 (東北石油大學軟件學院,黑龍江 大慶 163318)
介紹了一種利用ARToolKit開發包和Opencv進行創新開發、實現手指識別的增強現實系統,該系統可以準確定位手掌、5根手指甚至是指尖,為進一步實現人機交互奠定了堅實的基礎。通過該系統可以很大程度上擺脫硬件對人機交互的束縛,使用手指在攝像頭形成的視頻空間圖像觸發一些虛擬菜單,進而實現人機交流。
增強現實;虛擬成像;人機交互;手指識別

圖1 ARToolKit的三維注冊及工作流程

圖2 ARToolKit轉換坐標系
ARToolKit是一套基于C++語言的增強現實系統函數庫,是由日本廣島城市大學加藤博一博士與美國華盛頓大學HITL(Human Interface Technology Lab)聯合開發的增強現實系統二次開發工具,該開發包主要包括完成攝像機定標、標記識別與三維注冊的AR模塊,實現圖像實時采集功能的Video模塊和完成圖像的實時顯示、三維虛擬場景的實時渲染等功能的Gsub模塊。其實時、精確的三維注冊功能使得工程人員能夠非常方便、快捷的開發增強現實應用系統[1]。ARToolKit通過計算機視覺來進行三維虛實注冊,其工作流程如圖1所示。
在增強現實中,坐標系統也是非常重要的一部分,其影響著坐標變換、三維注冊、加載圖像的位置及方向,是不可缺少的一部分,而從標識坐標系經過矩陣變換得到攝像機坐標系是最為關鍵的,其轉換坐標系如圖2所示。通過該坐標系的轉換,計算機能夠準確的將虛擬對象加載到相應的標識圖上,為進一步人機交互奠定了基礎[2]。
在手指識別系統中,為了能夠快速、穩定、準確的識別手指,是需要滿足一定條件的,要求在交互過程中手指盡量伸直,若是檢測5根手指,則應該將手指盡量展開,并且使交互環境中與膚色相近的事物盡可能的少,避免其他事物對試驗進行干擾。
1)手指膚色識別 系統采用最常用膚色檢測方法——RGB分量分析方法,進行人手區域的檢測。該方法基于人手膚色的檢驗知識,對RGB(其中,R、G、B分別表示8位的紅色、綠色、藍色亮度)3個顏色分量進行分析,滿足式(1)的像素被認為是人手區域[3]:

(1)
然后,通過上述方法得到膚色檢測結果,處理所得到的圖像,對圖像中的壞點進行修復,平滑其中較為粗糙的部分,得到較好的圖像效果。另外,也可以通過使用RANSAC算法(隨機抽樣一致性算法)減小系統識別時的匹配誤差,以提高識別的精度。RANSAC算法的引入使得手指識別更加準確,排除了一定的環境和人為干擾,使人機交互更加容易實現,并提高了人機交互的成功率[4]。
2)手指輪廓識別 手指識別系統采用的是基于邊界輪廓提取辦法,這種方法區別于ARToolKit自帶的連通域提取算法,受環境的影響相對較小,性能上遠遠優于連通域提取算法[5]。因此,即使識別到的手指的象素不是非常的完整,一樣可以識別出部分受干擾的手指。同時在處理圖像方面,筆者對攝像機獲取的視頻流采用了實時橫向濾幀技術,并做了相應的改進和優化,使獲取的圖像幀更加穩定,增強了該系統在環境光改變的情況下的適應能力,即使在環境光照不統一(同一幀圖像中明暗不一致)的地方,該方法同樣可以達到較好的效果。
在得到手指的大致輪廓后,需要對得到的圖像進行二值化處理。所謂二值化是指設定一個閾值T,用T將圖像的數據分成2部分:大于T的像素群和小于T的像素群。這是研究灰度變換的最特殊的方法,稱為圖像的二值化,也就是將圖像上的像素點的灰度值設置為0或255,使得整個圖像呈現出只有黑和白的視覺效果。在二值化過程中,閾值T的選取很大程度上決定了試驗結果的好壞:在光昏暗的條件下,將閾值設置到60~235范圍內,可以達到良好的識別效果;當環境光線比較適中時,需要在80~235范圍內設置閾值,才能達到相同的效果;而在光線明亮時,則應該在100~235范圍內調整設置閾值。
3)虛擬對象加載 在檢測到手指后,可以觸發一些事件,如在視頻所示空間中加載一些虛擬對象。這些對象可以是有OpenGL函數生成的,也可以通過Opencv形成,甚至可以直接導入一些模型文件,如后綴為mqo的模型文件。可以先通過3D建模軟件3DSMAX構建模型,然后導出后綴為obj的文件,再將此文件導入水杉軟件中,經過適當處理優化、調整貼圖,再導出mqo格式的模型。在原來程序的基礎上,加入一些頭文件,修改部分代碼,即可調用這些模型。

圖3 手指識別效果圖
虛擬對象的坐標取決于所識別的手的位置,當成功識別到時候,會經過復雜的計算得到手的位置,并以手為中心加載其他的虛擬對象,若利用函數直接繪制虛擬體,則可以在坐標數據的位置寫入以手為中心的相對坐標位置,即可成功的繪制出虛擬對象。
試驗結果表明,在光照條件適宜,周圍缺少相近色事物干擾的情況下,實現交互的成功率高達71%,基本滿足了手指識別的要求。并且在該系統下,可以準確的識別5根手指、指尖以及手掌,并加載一些標記來表明已經識別,如用色塊表示指尖,橢圓表示手指,圓圈表示手掌,識別效果如圖3所示。
在手指交互系統中,初始狀態僅顯示虛擬菜單,當手指觸及到菜單選項并且被識別的時候,該選項的顏色會發生變化,并且觸發該事件。經過多次測試,結果表明在光照適宜,環境合適的條件下,手指識別系統運行良好,其運行效果如圖4(a)、(b)、(c)、(d)所示。由圖4可知,該系統交互過程簡單方便,界面簡潔明了,運行結果良好,具有一定的實時交互功能。

圖4 運行效果圖
區別于傳統的人機交互模式,手指識別人機交互系統較大程度的擺脫了用戶對硬件的束縛,僅利用虛擬菜單實現人與計算機的“交流”,交互過程更加自然方便。由于指尖的檢測容易受到光線以及周圍環境色彩的影響,使得該系統需要在一些特定環境下運行,這對交互產生了一定的限制作用。但在良好環境下,該系統交互過程簡單流暢、操作自然,起到了實時交互的作用。
[1]Auley C M.Aut0CAD2000objectARX編程指南[M].李世國,潘建忠,平雪良 等譯.北京:機械工業出版社,2000.
[2] 盛君,王毅剛.基于ARToolKit手指交互系統的研究 [J] .機電工程,2010(6):116-119.
[3] Molineros J,Sharma R.Real-Time Tracking of Multiple Objects Using Fiducials for Augmented Reality[M].London,UK:Academic Press Ltd,2001.
[4] Fischler M A,Bolles R C.Randomsample consensus:Aparadigmfor model fitting with applications to image analysis and automated cartography[J].CommACM,1981,24(6):381-395.
[5] 王涌天,鄭偉,劉越,等.基于增強現實技術的圓明園現場數字重建[J].科技導報,2006(3): 36-40.
2012-10-14
史亨禎(1992-),男,現主要從事軟件工程方面的學習。
TP311.52
A
1673-1409(2013)04-0054-02
[編輯] 洪云飛