一種基于虛擬界面的手勢交互方法
【技術(shù)領域】
[0001]本發(fā)明屬于人機交互領域,具體涉及一種基于虛擬界面的手勢交互方法。
【背景技術(shù)】
[0002]手勢交互作為一種自然的交互方式越來越受到人們的重視,是人機交互領域的一個研宄熱點。與傳統(tǒng)的基于圖形用戶界面的交互方式相比,基于視覺的手勢交互界面(Vis1n-Based Gesture Interface,VBGI)使用戶擺脫了鍵盤、鼠標的束縛,因而成為一種自然、無約束的交互方式。基于視覺的手勢交互界面被廣泛應用在智能空間、增強現(xiàn)實、普適計算等多個領域,逐漸成為國內(nèi)外的研宄熱點。但是由于VBGI具有非接觸性和模糊性等特點,所以還存在一個問題即“Midas Touch Problem”。由于人手活動的有效范圍往往是攝像頭所能捕獲到的整個范圍,系統(tǒng)無法區(qū)分哪些是用戶的真正意圖,哪些是下意識的動作,即有效和無效手勢。
[0003]在VBGI中“Midas Touch”是一個普遍存在的問題。在文獻“基于視覺的手勢界面關鍵技術(shù)研宄[J]”(武匯岳,張鳳軍,劉玉進,戴國忠..計算機學報,2009,10:2030-2041)中,武岳匯等人總結(jié)到對于該問題的解決辦法大致可以分為3類,分別是基于時間延遲的策略、基于空間接近的原則以及基于widget提供交互上下文的方法。基于時間延遲的策略是Jacob提出的,其主要思想是通過計算手勢控制界面上的光標在界面對象上停留時間的長短來判斷該對象是否被選中。顯然,該方法存在一定的不足。因為用戶在操作時必須時刻注意手勢停留在對象上的時間,這無疑增加了用戶的認知負擔和操作負擔。Kato等人提出了基于空間接近原則的策略。該方法的主要思想是通過判斷用戶手持的paddle與虛擬對象之間的距離來完成一系列的交互任務。此方法的缺陷是由于paddle與虛擬對象之間的距離不容易控制所以也會造成誤選。Kjeldsen提出在手勢動作和視覺界面widget之間建立一定的映射關系。由于每個界面widget具有一定的空間位置,所以可通過其提供的交互上下文來約束視覺交互行為。雖然此系統(tǒng)在一定程度上解決了誤選的問題,但是該方法不夠自然。因為當系統(tǒng)需產(chǎn)生很多widget時,這無疑會加大用戶的認知負擔,而且會使界面空間過大而影響交互。武岳匯等人提出了一個可擴展的視覺手勢交互模型,該模型將手勢交互分為選擇性處理、分配性處理和集中處理三個階段;然后在此模型的基礎上提出了一個手勢識別框架。
[0004]現(xiàn)有技術(shù)雖然在某種程度上能解決“Midas Touch Problem”,但存在兩方面的不足:(1)很容易造成誤選;(2)由于多條件的限制,增加了用戶的操作負擔和認知負擔。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于解決上述現(xiàn)有技術(shù)中存在的難題,提供一種基于虛擬界面的手勢交互方法,高效解決“Midas Touch Problem”,具有良好的用戶體驗。
[0006]本發(fā)明是通過以下技術(shù)方案實現(xiàn)的:
[0007]一種基于虛擬界面的手勢交互方法,包括:
[0008]SI,手勢分割:從復雜背景中把手勢圖像分離出來,只在前景中保留手勢部分;
[0009]S2,構(gòu)建虛擬界面:操作者按照從左到右、從下到上的順序,在空中畫矩形軌跡,根據(jù)該矩形軌跡擬合得到虛擬界面;
[0010]S3,對所述虛擬界面進行分區(qū),并判斷人手所處的分區(qū);
[0011]S4,虛擬界面的實時刷新移動:當人體移動時,已生成的虛擬界面隨著人體的移動進行相應的同方向移動。
[0012]所述SI中是采用kinect傳感器獲取深度數(shù)據(jù),利用深度數(shù)據(jù)進行手勢分割,具體如下:
[0013]利用OpenNI跟蹤人手,獲取人手的位置;
[0014]然后利用人手的深度數(shù)據(jù)在人手附近進行閾值化,提取出人手的部位;
[0015]運用膚色模型對已分割出的人手進行處理得到分割結(jié)果;
[0016]對分割結(jié)果進行去噪、腐蝕、膨脹處理,獲得手勢空間點。
[0017]所述S2中的虛擬界面的大小和位置由兩部分確定:手勢空間點在屏幕上的投影點所確定的平面矩形范圍,用集合Range1表示,采用最小二乘法線性擬合的方法得到;人手在空間中的深度范圍,用集合Range2表示,采用對深度數(shù)據(jù)求最值的方法得到。
[0018]所述S2是這樣實現(xiàn)的:
[0019](Al)保存初始狀態(tài)人手的空間坐標點;
[0020](A2)判斷虛擬界面學習過程是否結(jié)束,若同時滿足結(jié)束條件,則表明學習結(jié)束,然后轉(zhuǎn)向步驟(A7);若不滿足以下條件,則轉(zhuǎn)入步驟(A3);所述結(jié)束條件為:
[0021]Cur_pointy-Sta_pointy < a (I)
[0022]I Cur_pointx_Sta_pointx I < a (2)
[0023]其中,Cur_pointy為當前幀人手空間坐標y值,Sta_pointy為初始狀態(tài)人手空間坐標I值,Cur_pointx為當前幀人手空間坐標x值,Sta_pointx為初始狀態(tài)人手空間坐標X值;a為常量;
[0024](A3)將當前幀手勢投影坐標值保存在集合C1中,η為集合C 元素的個數(shù)。將人手空間深度值HandDepth保存到集合C2中;同時判斷是否滿足公式(3),若滿足公式(3)所示的條件,則將該幀手勢的投影坐標值保存在中間變量Temp中:
[0025]Cur_pointx-Sta_pointx < b (3)
[0026]b為常量;
[0027](A4)確定左下角點的坐標,判斷是否滿足:
[0028]Cur_pointx-Sta_pointx > b (4)
[0029]若滿足,則Temp即當前點為左下角點的坐標值,同時也為投影矩形下面的邊y =Ymax的初始點坐標值;
[0030](A5)擬合投影矩形左邊的直線X = Xfflin,對集合CjP η運用最小二乘法進行直線擬合,得到Xmin的值;
[0031](Α6)尋找右下角的點,開始對直線y = YmfJi行擬合;
[0032](A7)確定虛擬界面學習過程中的深度范圍:對集合C2求最大和最小值得到HD min,HD.
[0033](A8)按照同樣的方法分別對直線Y = Ymax>X = xmax、y = Ymin進行擬合,得到Range !=?Χ Y Y V ).LyvInin? yvInax? 1Hiinj 1IiiaxJ ,
[0034]虛擬界面的范圍Range為:
[0035]Range = Range1U Range 2= {X min, Xmax, Ymin, Y眶,HDmin, HDmaJ (5)
[0036]其中,Xmin, Xmax分別為投影矩形X方向的最小值和最大值,Ymin、和Ymax分別為投影矩形I方向的最小值和最大值,HDmin、HDmax分別為學習過程中手勢深度的最小值和最大值;
[0037]人手在屏幕上的投影點X坐標為Ρι.οΧ,y坐標為ProY,人手在空間中的深度坐標為 HandZ ;當滿足 ProX e [Xmin, XmaJ , ProY e [Ymin, Ym J,HandZ e [HDmin, HDmaJ 時,手勢命令才是有效的。
[0038]所述a取值為30 ;所述b其推薦取值為50。
[0039]所述S3是這樣實現(xiàn)的:
[0040]將投影矩形按照從左到右的順序平均分成三份,分別為第一分區(qū)、第二分區(qū)、第三分區(qū),各分區(qū)功能依次為:控制3D場景中物體的放大、縮小和旋轉(zhuǎn);具體如下:
[0041](BI)根據(jù)以下公式計算 Value1'ValuejWl^
[0042]xeach = (Xmax-Xmin) / 3 (6)
[0043]Value1=Xmir^xeach (7)
[0044]Value2= Value Jxeach (8)
[0045]其中,xeach為被分割后的每一個小矩形的長度,Xniin為投影矩形左端點x方向的值,Xmax為平面矩形右端點X方向的值,Value OValue2S分割點,其中Value丨< Value 2;
[0046](B2)判斷人手的位置:實時獲取每幀手勢的RroX、ProY, HandZ值。
[0047]所述(B2)是這樣實現(xiàn)的:
[0048](B2a)當滿足 ProXe [Xmin, Valuex1], ProY e [Ymin, YmaJ,HandZe [HDmin, HDmaJ時,表明人手處于第一分區(qū),此時3D場景中三維物體的體積變大;
[0049](B2b)當滿足 ProX e [Value1, Value2], ProY e [Ymin, YmaJ , HandZ e [HDmi