>[0008]一種利用上臂伸展信息進(jìn)行命令選擇的方法,其步驟為:
[0009]I)在控制器上創(chuàng)建一 Stretching組件及該Stretching組件的菜單;
[0010]2)控制器通過顯示屏幕上的深度攝像機實時采集該用戶手心的三維空間位置,然后計算手心位置到該用戶身體平面的投影距離,得到該用戶的手臂伸展長度并將其發(fā)送給Stretching 組件;
[0011]3) Stretching組件將該用戶的手臂伸展長度轉(zhuǎn)換為屏幕上光標(biāo)在所述菜單上的顯示位置;其中,手臂伸展長度為零時,光標(biāo)位于所述菜單的起點;
[0012]4)用戶通過改變手臂伸展長度控制光標(biāo)移動,當(dāng)光標(biāo)移動到所述菜單上的一待選菜單項時,保持手勢懸停時間大于設(shè)定時間,則該菜單項被選中。
[0013]進(jìn)一步的,所述Stretching組件根據(jù)公式SCPosit1n = L/Y*CPosit1n將該用戶的手臂伸展長度轉(zhuǎn)換為屏幕上光標(biāo)在所述菜單上的顯示位置;其中,SCPosit1n為光標(biāo)的位置,CPosit1n為當(dāng)前手臂所在位置,屏幕的上下方向長度為Y像素,L為該用戶的手臂伸展長度。
[0014]進(jìn)一步的,所述菜單為餅形菜單,光標(biāo)起點為餅形菜單的圓心,光標(biāo)在圓心到菜單外邊緣的范圍內(nèi)與手臂伸展長度進(jìn)行映射。
[0015]進(jìn)一步的,所述菜單為豎直菜單或水平菜單,光標(biāo)起點為菜單的一端,光標(biāo)的位置在菜單長度范圍內(nèi)與手臂伸展長度進(jìn)行映射。
[0016]進(jìn)一步的,當(dāng)進(jìn)行圖片瀏覽操作時,用戶抬起手向外推或向里收時,Stretching組件自動控制圖片相對應(yīng)地在屏幕上放大或縮小顯示。
[0017]進(jìn)一步的,所述菜單狀態(tài)包括:菜單被激活,菜單失效,菜單選擇開始和菜單選擇完成。
[0018]進(jìn)一步的,當(dāng)用戶將手臂抬起至肩部位置時,菜單處于被激活狀態(tài);當(dāng)手臂處于向前水平伸展?fàn)顟B(tài),光標(biāo)位于某個菜單項的邊緣時,菜單處于失效狀態(tài);當(dāng)手臂處于向前水平伸展?fàn)顟B(tài),光標(biāo)進(jìn)入所述菜單的中心區(qū)域時,菜單處于選擇開始狀態(tài);當(dāng)手臂處于向前水平伸展?fàn)顟B(tài),光標(biāo)位于某個菜單項的邊緣并保持,則菜單處于選擇完成狀態(tài)。
[0019]本發(fā)明通過采用一種新技術(shù)(Stretching組件)來執(zhí)行深度攝像機捕捉下的離散性和連續(xù)性的交互任務(wù)。離散性交互任務(wù)的例子包括菜單選擇,模式切換等。Stretching組件可以設(shè)計成不同的形狀,如豎直菜單、水平菜單、餅形菜單等。不同形式的菜單設(shè)計需要選擇合適的映射參數(shù)。當(dāng)采用豎直或水平菜單時,光標(biāo)起點為在其一端,光標(biāo)的位置(在菜單豎直長度或水平長度范圍內(nèi))與手臂伸展長度進(jìn)行映射。當(dāng)采用餅型菜單時,其光標(biāo)起點為餅形菜單的圓心,在圓心到菜單外邊緣的范圍內(nèi)與手臂伸展長度進(jìn)行映射。連續(xù)性交互任務(wù)包括移動物體或在空間中導(dǎo)航。對于這樣的任務(wù),Stretching組件可以設(shè)計為一維形狀(如線,圓),而光標(biāo)需要在一維形狀上不斷移動,給用戶提供當(dāng)前參數(shù)值的實時反饋。
[0020]Stretching組件為軟件模塊,通過安置在顯示屏幕上方的深度攝像機采集用戶上臂伸展信息,將其發(fā)送給該組件,該組件根據(jù)伸展信息控制光標(biāo)移動進(jìn)行命令選擇,通過該組件的不同選擇轉(zhuǎn)換為指令對大屏幕進(jìn)行控制。
[0021]Stretching組件基于三維的方向信息(見圖1)來完成上述任務(wù),通過深度攝像機采集到手心的三維空間位置,然后計算手心位置到身體平面的投影距離(手臂伸展長度),將該長度的變化按照映射規(guī)則轉(zhuǎn)換為屏幕菜單的光標(biāo)顯示位置??梢院茌p松地植入用戶界面中,不會與現(xiàn)有的設(shè)計相沖突,無需其它輔助設(shè)備的幫助。因此,本發(fā)明能完全自由地使用單手來同時完成指令選擇和確認(rèn)的任務(wù),并且不影響手指精細(xì)動作。
[0022]本發(fā)明Stretching組件的顯示形狀見圖2,形狀為矩形或圓盤形,矩形菜單選項呈矩形垂直排列,圓盤形菜單選項在圓盤中呈環(huán)形排列。用戶通過向前水平伸縮手臂來選擇一個菜單項。當(dāng)要選中一個菜單項時,保持手勢懸停時間大于0.8秒,該菜單項被選中。
[0023]Stretching組件通過深度攝像機追蹤手掌中心的三維位置,利用手掌中心的二維平面坐標(biāo)來控制菜單的顯示位置,以手掌中心在屏幕上的投影位置為其界面的中心,以手臂伸展長度的變化來控制光標(biāo)的移動和顯示位置,當(dāng)手臂伸展控制光標(biāo)移動時,菜單的顯示位置保持固定。因此,Stretching組件可以節(jié)省菜單定位時間,節(jié)省物理上的選擇位移。與此同時,用戶采用伸縮上臂的方式來選擇菜單項,不用改變手勢原有的運動軌跡。大大便利了用戶操作。
[0024]我們是基于上下文的當(dāng)前任務(wù)需求來調(diào)用Stretching組件的,而不是一個明確的調(diào)用行為。當(dāng)用戶將手抬起,手掌心位置達(dá)到一定高度時,則顯示當(dāng)前任務(wù)環(huán)境下相應(yīng)的功能選單,若當(dāng)前所提供的功能選項可以直接與手臂伸展長度進(jìn)行直接映射時(如伸展長度增大、減少對應(yīng)圖片的放大、縮小功能),則無需進(jìn)行菜單選擇,直接通過手臂的伸縮動作進(jìn)行控制。例如,在深度攝像機的深度感知范圍內(nèi),當(dāng)瀏覽客廳電視上的圖片時(深度攝像機安置在屏幕上方),抬起手向外推或向里收時,Stretching組件會自動出現(xiàn),控制圖片相對應(yīng)地在屏幕上放大或縮小顯示。當(dāng)上下文情境改變時,如手臂放下或退出當(dāng)前交互任務(wù),Stretching組件會自動消失,無需用戶的取消操作。
[0025]我們在三維笛卡爾坐標(biāo)系中計算動態(tài)光標(biāo)是否選中了 Stretching組件的某個菜單項(見圖3)。
[0026]Stretching組件的中心定位在手掌中心的位置,該中心即為三維坐標(biāo)系的中心點。視點位于Z軸正方向的無窮遠(yuǎn)處。將手掌所處的位置向量投影到XOY平面,將投影量命名為Stretching動態(tài)光標(biāo)。用動態(tài)光標(biāo)來選擇Stretching組件中的某個菜單項。
[0027]計算Stretching組件的菜單項是否被選中,其步驟為:
[0028]I)計算動態(tài)光標(biāo)的位置SCPosit1n ;
[0029]Stretching組件在進(jìn)行菜單項顯示時需要使用動態(tài)光標(biāo)來標(biāo)識當(dāng)前被選中的菜單項,計算動態(tài)光標(biāo)的位置SCPosit1n,需要用到如下參數(shù)(見圖3):手臂長度(肩部到掌心的Z軸距離)L,屏幕的上下方向長度為Y像素。L和Y兩個值在手臂和光標(biāo)的不同坐標(biāo)系統(tǒng)之間建立映射。手臂的坐標(biāo)系統(tǒng)是XYZ,映射關(guān)系是Z軸和光標(biāo)的線性坐標(biāo)系統(tǒng)建立映射關(guān)系。即在手臂伸展長度與光標(biāo)位置之間建立映射:
[0030]SCPosit1n = L/Y*CPosit1n ;其中CPosit1n為當(dāng)前手臂所在位置,L為通過深度圖像計算出來的手臂伸展長度,SCPosit1n為菜單選擇動態(tài)光標(biāo)的實際位置。
[0031]2)若SCPosit1n的值在中心區(qū)域的范圍內(nèi),意味著動態(tài)光標(biāo)處于激活狀態(tài),或選中了 Stretching組件中的某個菜單項。
[0032]Stretching組件狀態(tài)轉(zhuǎn)換:
[0033]見圖2,Stretching組件界面的由菜單項包圍的內(nèi)區(qū)域稱為中心區(qū)域(CenterReg1n)。見圖4,總共有四種狀態(tài):
[0034]狀態(tài)1:菜單被激活。
[0035]狀態(tài)2:菜單失效。此時手臂處于向前水平伸展?fàn)顟B(tài),動態(tài)光標(biāo)擊中了中心區(qū)域的邊緣。
[0036]可由狀態(tài)I進(jìn)入狀態(tài)2,狀態(tài)轉(zhuǎn)移條件是:在動態(tài)光標(biāo)處于狀態(tài)1,光標(biāo)擊中了某個菜單項的邊緣。
[0037]狀態(tài)3:菜單選擇開始。此時手臂處于向前水平伸展?fàn)顟B(tài),動態(tài)光標(biāo)進(jìn)入中心區(qū)域的內(nèi)部。
[0038]可由狀態(tài)I進(jìn)入狀態(tài)3,狀態(tài)轉(zhuǎn)移條件是:在動態(tài)光標(biāo)處于狀態(tài)I,此時手臂處于向前水平伸展?fàn)顟B(tài),動態(tài)光標(biāo)完全位于中心區(qū)域的內(nèi)部。
[0039]可由狀態(tài)2進(jìn)入狀態(tài)3,狀態(tài)轉(zhuǎn)移條件是:在動態(tài)光標(biāo)處于狀態(tài)2,此時手臂處于向前水平伸展?fàn)顟B(tài),動態(tài)光標(biāo)重新進(jìn)入中心區(qū)域的內(nèi)部。
[0040]狀態(tài)4:菜單選擇完成。
[0041]可由狀態(tài)3進(jìn)入狀態(tài)4,狀態(tài)轉(zhuǎn)移條件是:在動態(tài)光標(biāo)處于狀態(tài)3,此時手臂處于向前水平伸縮狀態(tài),光標(biāo)擊中了某個菜單項的邊緣或進(jìn)入菜單選項區(qū)域,并保持0.8秒。
[0042]狀態(tài)轉(zhuǎn)換全過程:
[0043]1、動態(tài)光標(biāo)處于狀態(tài)1,菜單被激活,中心處于手掌中心在屏幕的投影位置。菜單動態(tài)光標(biāo)自動跟隨手臂前后伸展運動進(jìn)行移動,選擇菜單項,用戶完成選擇活動后,組件消失。在此過程中,手臂伸展的距離信息決定了菜單的下一個狀態(tài)。
[0044]2、動態(tài)光標(biāo)處于狀態(tài)I,動態(tài)光標(biāo)整體位于本發(fā)明Stretching組件界面的中心區(qū)域內(nèi),狀態(tài)轉(zhuǎn)換至狀態(tài)3:開始準(zhǔn)備選擇狀態(tài)。在狀態(tài)3,用戶通過保持動態(tài)光標(biāo)位置0.8秒,來完成選擇任務(wù)。
[0045]3、動態(tài)光標(biāo)處于狀態(tài)I,在用戶執(zhí)行選擇任務(wù)之前,動態(tài)光標(biāo)已經(jīng)擊中了某個菜單項的邊緣,那么狀態(tài)轉(zhuǎn)換至狀態(tài)2,菜單失效。
[0046]4、若用戶想從狀態(tài)2轉(zhuǎn)移到狀態(tài)3,必須調(diào)整手臂伸展距離,使得動態(tài)光標(biāo)整體位于本發(fā)明的中心區(qū)域內(nèi)。
[0047]5、用戶當(dāng)前處于狀態(tài)3,此時只要使動態(tài)光標(biāo)擊中本發(fā)明的Stretching組件某個菜單項的邊緣或進(jìn)入菜單項區(qū)域,保持0.8秒,即可完成某個菜單項的選擇活動。
[0048]為使用戶能夠高效地使用Stretching組件,我們對手臂伸展和菜單的狀態(tài)采取實時可視反饋的技術(shù):使用動態(tài)光標(biāo)動態(tài)反饋手臂伸展?fàn)顟B(tài)的三維可視化線索。當(dāng)菜單處于