本發(fā)明涉及計(jì)算機(jī)科學(xué)的虛擬現(xiàn)實(shí)領(lǐng)域,具體涉及一種虛擬現(xiàn)實(shí)中基于移動(dòng)軌跡識(shí)別進(jìn)行人機(jī)交互的方法。
背景技術(shù):
:虛擬現(xiàn)實(shí),簡(jiǎn)稱VR(virtualreality),是由美國(guó)VPL公司創(chuàng)建人拉尼爾(JaronLanier)在20世紀(jì)80年代初提出的,在90年代經(jīng)歷了徹底的失敗之后再次閃耀地出現(xiàn)在大眾的視野中。其具體內(nèi)涵是:綜合利用計(jì)算機(jī)圖形系統(tǒng)和各種現(xiàn)實(shí)及控制等接口設(shè)備,在計(jì)算機(jī)上生成的、可交互的三維環(huán)境中提供沉浸感覺(jué)的技術(shù)。VR(虛擬現(xiàn)實(shí))技術(shù)可廣泛地應(yīng)用于城市規(guī)劃、室內(nèi)設(shè)計(jì)、工業(yè)仿真、古跡復(fù)原、橋梁道路設(shè)計(jì)、房地產(chǎn)銷售、旅游教學(xué)、水利電力、地質(zhì)災(zāi)害、教育培訓(xùn)等眾多領(lǐng)域,為其提供切實(shí)可行的解決方案。如今使用最多的VR設(shè)備是GoogleCardboard,因?yàn)槠鋬r(jià)格較低、能搭配手機(jī)直接使用,所以大部分用戶愿意通過(guò)它來(lái)嘗試這一新興領(lǐng)域,然而使用手機(jī)作為VR設(shè)備也有一個(gè)缺點(diǎn),那就是沒(méi)有合適的輸入設(shè)備,用戶不能再通過(guò)觸摸屏幕來(lái)操作軟件。如果我們通過(guò)應(yīng)用市場(chǎng)搜索VR,搜出來(lái)的軟件基本分為以下3類:視頻播放器類,漫游體驗(yàn)類,游戲類。其中視頻播放器和漫游體驗(yàn)類幾乎沒(méi)有用到任何交互方式,用戶所需要做的僅僅是戴上Cardboard和耳機(jī),安靜地坐著欣賞就行。除此之外,其他應(yīng)用用到的交互方式無(wú)非是以下幾種。1.使用Cardboard盒子上的物理按鈕Cardboard2.0相較于之前的版本,在紙盒上多了一個(gè)物理按鈕。這個(gè)按鈕連接的是一個(gè)末端裝有導(dǎo)電墊板的三角形折翼,按下按鈕,折翼就會(huì)接觸觸屏。在用戶不能接觸到觸摸屏的情況下起到點(diǎn)擊觸屏的效果。但是,該按鈕的觸發(fā)位置是固定的,始終位于屏幕的正上方。這個(gè)按鈕一般作為返回或者退出鍵使用,沒(méi)有特別大的交互意義。2.視覺(jué)中心凝視觸發(fā)這是目前市面上VR應(yīng)用中最常見(jiàn)的交互方式,在屏幕中心會(huì)有一個(gè)用于瞄準(zhǔn)的原點(diǎn),由于用戶無(wú)法觸摸到屏幕,用戶可以通過(guò)旋轉(zhuǎn)頭部,使得該小圓點(diǎn)對(duì)準(zhǔn)某些觸發(fā)器,通過(guò)短時(shí)間的凝視該物體來(lái)達(dá)到觸發(fā)事件的效果。大部分漫游體驗(yàn)類和游戲類軟件用到的交互方式都是這種,例如月球體驗(yàn),將中心對(duì)準(zhǔn)不同的數(shù)字可以看到不同的信息,再例如打僵尸游戲,會(huì)一直朝屏幕中心開槍,玩家只需要轉(zhuǎn)動(dòng)頭部使得中心對(duì)準(zhǔn)僵尸即可。3.虛擬按鈕虛擬按鈕是由Vuforia套件提供的一種增強(qiáng)現(xiàn)實(shí)交互方式,通過(guò)攝像頭識(shí)別出現(xiàn)實(shí)空間中的特征圖像,在屏幕上對(duì)應(yīng)位置創(chuàng)建一個(gè)虛擬的按鈕,如果用戶用手指觸摸這個(gè)按鈕,則會(huì)觸發(fā)相應(yīng)事件。但是這種交互方式響應(yīng)準(zhǔn)確率不高,速度也不佳。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供了一種虛擬現(xiàn)實(shí)中基于移動(dòng)軌跡識(shí)別進(jìn)行人機(jī)交互的方法,該方法通過(guò)攝像頭捕捉特征圖像的移動(dòng)軌跡,依據(jù)移動(dòng)軌跡的識(shí)別結(jié)果,對(duì)虛擬物件進(jìn)行相應(yīng)操控。一種虛擬現(xiàn)實(shí)中基于移動(dòng)軌跡識(shí)別進(jìn)行人機(jī)交互的方法,包括:步驟1,用戶定義若干特征圖像,作為特征圖像集;步驟2,用戶定義單條或多條特征圖像空間移動(dòng)軌跡,以及單條或多條特征圖像空間移動(dòng)軌跡所對(duì)應(yīng)的事件,作為軌跡-事件集合;步驟3,用戶選擇特征圖像集中的一個(gè)或多個(gè)特征圖像進(jìn)行操作,操作過(guò)程通過(guò)攝像機(jī)進(jìn)行實(shí)時(shí)采集;步驟4,根據(jù)采集的視頻中特征圖像的位置,計(jì)算用戶操作特征圖像在空間中的移動(dòng)軌跡;步驟5,將用戶操作特征圖像的移動(dòng)軌跡與用戶定義的特征圖像空間移動(dòng)軌跡進(jìn)行比較,當(dāng)有單條或多條特征圖像空間移動(dòng)軌跡匹配用戶定義的特征圖像空間移動(dòng)軌跡時(shí),觸發(fā)對(duì)應(yīng)事件。步驟1中,所有特征圖像構(gòu)成特征圖像集。步驟2中,單條或者多條特征圖像空間移動(dòng)軌跡對(duì)應(yīng)觸發(fā)一個(gè)事件,空間移動(dòng)軌跡與事件的映射關(guān)系構(gòu)成軌跡-事件集合。步驟5中,用戶操作特征圖像的軌跡與用戶定義的特征圖像空間移動(dòng)軌跡被判定為相同時(shí),則依據(jù)軌跡-事件集合中空間移動(dòng)軌跡與事件的映射關(guān)系,觸發(fā)特征圖像空間移動(dòng)軌跡相應(yīng)的事件。作為優(yōu)選,特征圖像空間移動(dòng)軌跡由若干依次連接的二維向量組成。步驟4中,計(jì)算用戶操作特征圖像在空間中的移動(dòng)軌跡包括:步驟4-1,采集用戶輸入的移動(dòng)軌跡,以每幀視頻中的特征圖像坐標(biāo)為端點(diǎn),將移動(dòng)軌跡轉(zhuǎn)化為若干依次連接的向量;步驟4-2,在二維平面中定義若干個(gè)方向,針對(duì)某一向量,八個(gè)方向中與該向量夾角最小的方向即為該向量的方向;步驟4-3,根據(jù)移動(dòng)軌跡的先后順序,依次比較當(dāng)前向量與前一向量的方向,若兩個(gè)向量的方向相同,則將兩個(gè)向量合并;若兩個(gè)向量的方向不相同,則保持當(dāng)前向量方向;步驟4-4,合并后的向量去噪聲后,依據(jù)下式計(jì)算與可供匹配的移動(dòng)軌跡的編輯距離Leva,b(i,j),編輯距離最短且編輯距離小于可接受距離上限的可供匹配的移動(dòng)軌跡即為用戶輸入的移動(dòng)軌跡:Leva,b(i,j)=max(i,j),ifmin(i,j)=0minLeva,b(i-1,j)+1Leva,b(i,j-1)+1Leva,b(i,j)+cost(ai,bj),otherwise;]]>其中cost函數(shù)為:cost(ai,bj)=0,ai=bj0.5,|ai-bj|=1or71,otherwise;]]>式中:Leva,b(i,j)為字符串a(chǎn)的前i個(gè)字符與字符串b的前j個(gè)字符的編輯距離;a為用戶輸入的移動(dòng)軌跡編碼;i為用戶輸入的移動(dòng)軌跡的字符串中的字符序數(shù);ai為用戶輸入的移動(dòng)軌跡的字符串中的第i個(gè)字符;b為可供匹配的移動(dòng)軌跡編碼;j為可供匹配的移動(dòng)軌跡的字符串中的字符序數(shù);bj為可供匹配的移動(dòng)軌跡的字符串中的第j個(gè)字符。本發(fā)明利用攝像頭捕捉特征圖像的移動(dòng)軌跡,通過(guò)識(shí)別不同的移動(dòng)軌跡觸發(fā)相應(yīng)的響應(yīng)事件,例如,移動(dòng)現(xiàn)實(shí)場(chǎng)景中的物體,通過(guò)改變兩個(gè)物體之間的物理距離來(lái)實(shí)現(xiàn)虛擬物體的大小的縮放,現(xiàn)實(shí)場(chǎng)景中的兩個(gè)物體在采集的視頻中即作為特征圖像,通過(guò)對(duì)特征圖像之間移動(dòng)軌跡的識(shí)別,觸發(fā)相應(yīng)的事件??晒┢ヅ涞囊苿?dòng)軌跡是指系統(tǒng)預(yù)先設(shè)定好的軌跡,這些軌跡與觸發(fā)的事件一一對(duì)應(yīng),采集特征圖像的移動(dòng)軌跡,然后對(duì)特征圖像的移動(dòng)軌跡與系統(tǒng)預(yù)先設(shè)定的軌跡進(jìn)行匹配,若匹配成功,則觸發(fā)相應(yīng)的事件。本發(fā)明提供的移動(dòng)軌跡的識(shí)別算法,在不需要訓(xùn)練數(shù)據(jù)和學(xué)習(xí)過(guò)程的情況下能夠?qū)壽E進(jìn)行快速識(shí)別,且具有較高的準(zhǔn)確性。編輯距離體現(xiàn)了待識(shí)別的移動(dòng)軌跡與可供匹配的移動(dòng)軌跡的相似程度,相似程度需小于可接受距離上限,方能判定待識(shí)別的移動(dòng)軌跡與可供匹配的移動(dòng)軌跡相似。移動(dòng)軌跡的字符串長(zhǎng)度越大,則可接受距離上限越大,越短的字符串,可接受距離上限越小。作為優(yōu)選,步驟4-1中,在用戶輸入移動(dòng)軌跡的過(guò)程中采集視頻,獲取每幀視頻中的特征圖像坐標(biāo),若特征圖像坐標(biāo)停頓時(shí)間超過(guò)閾值,則對(duì)特征圖像坐標(biāo)進(jìn)行識(shí)別,相鄰兩幀視頻的特征圖像坐標(biāo)構(gòu)造一個(gè)向量。作為優(yōu)選,步驟4-2中,二維平面中定義八個(gè)方向,相鄰兩個(gè)方向之間的夾角為45度。作為優(yōu)選,步驟4-4中,去噪聲的步驟如下:步驟4-4-1、刪除當(dāng)前所有向量中最短的向量,刪除最短的向量后,根據(jù)移動(dòng)軌跡的先后順序,依次比較當(dāng)前向量與前一向量的方向,若兩個(gè)向量的方向相同,則將兩個(gè)向量合并;若兩個(gè)向量的方向不相同,則保持當(dāng)前向量方向;步驟4-4-2、重復(fù)步驟4-4-1,直至刪除后的向量總長(zhǎng)度恰好不少于原始向量總長(zhǎng)度的60%(該值可根據(jù)實(shí)際使用的情況調(diào)整,一般為60%至90%)。作為優(yōu)選,二維平面中的八個(gè)方向分別對(duì)應(yīng)一個(gè)編碼,針對(duì)步驟4-4去噪聲后的向量,依據(jù)向量的方向依次進(jìn)行編碼。作為優(yōu)選,編碼時(shí),為同一移動(dòng)軌跡添加正向和反向的編碼,或?yàn)橥灰苿?dòng)軌跡添加相似編碼。在實(shí)際使用過(guò)程中,每個(gè)人喜好不同,例如,有的人喜歡順時(shí)針畫圓,有的人喜歡逆時(shí)針畫圓,可以為同一個(gè)向量分別添加正向和反向的編碼?;蛘?,為同一個(gè)向量添加相似的編碼,例如同時(shí)使用“0”和“010”來(lái)表示向右的移動(dòng)軌跡。本發(fā)明提供的虛擬現(xiàn)實(shí)中基于移動(dòng)軌跡識(shí)別進(jìn)行人機(jī)交互的方法,能夠快速識(shí)別用戶輸入的移動(dòng)軌跡,依據(jù)移動(dòng)軌跡的識(shí)別結(jié)果,對(duì)虛擬現(xiàn)實(shí)進(jìn)行操控,改善用戶體驗(yàn)。附圖說(shuō)明圖1為本發(fā)明計(jì)算用戶操作特征圖像在空間中的移動(dòng)軌跡的流程圖;圖2為用戶輸入的移動(dòng)軌跡;圖3為采樣得到的移動(dòng)軌跡;圖4為向量合并后的結(jié)果;圖5為去噪聲的流程圖;圖6為本發(fā)明中在二維平面中定義的方向的示意圖;圖7為本發(fā)明虛擬現(xiàn)實(shí)中基于移動(dòng)軌跡識(shí)別進(jìn)行人機(jī)交互的方法的流程示意圖。具體實(shí)施方式下面結(jié)合附圖,對(duì)本發(fā)明虛擬現(xiàn)實(shí)中基于移動(dòng)軌跡識(shí)別進(jìn)行人機(jī)交互的方法做詳細(xì)描述。本實(shí)施例在Unity3D引擎中進(jìn)行實(shí)現(xiàn),其中的圖像識(shí)別功能使用的是由Vuforia提供的特征圖像識(shí)別,可以有效地識(shí)別攝像機(jī)中的任何高對(duì)比的圖像。如圖7所示,一種虛擬現(xiàn)實(shí)中基于移動(dòng)軌跡識(shí)別進(jìn)行人機(jī)交互的方法,包括:步驟1,用戶打印若干二維碼圖案,將二維碼圖案作為特征圖像,將若干二維碼圖案作為特征圖像集.步驟2,用戶定義單條或多條特征圖像空間移動(dòng)軌跡,以及單條或多條特征圖像空間移動(dòng)軌跡所對(duì)應(yīng)的事件,作為軌跡-事件集合。步驟3,用戶選擇特征圖像集中的一個(gè)或多個(gè)特征圖像進(jìn)行操作,操作過(guò)程通過(guò)攝像機(jī)進(jìn)行實(shí)時(shí)采集。步驟4,采集用戶輸入移動(dòng)軌跡的視頻,在Unity的OnUpdate函數(shù)中獲取每幀視頻中的特征圖像坐標(biāo)并保存下來(lái),記為positions。如果圖像保持停頓超過(guò)預(yù)定時(shí)間,則對(duì)所有保存的特征圖像坐標(biāo)進(jìn)行識(shí)別,使用公式vectors[i]=positions[i+1]-positions[i]將所有錄入的特征圖像坐標(biāo)轉(zhuǎn)化成向量,式中,positions[i]為第i幀視頻中的特征圖像坐標(biāo),positioms[i+1]為第i+1幀視頻中的特征圖像坐標(biāo)。用戶輸入的移動(dòng)軌跡如圖2所示,特征圖像坐標(biāo)轉(zhuǎn)化成向量后的軌跡如圖3所示。步驟5,定義平面的8個(gè)方向如圖6所示,編號(hào)依次為0到7。定義一個(gè)向量的方向?yàn)榕c平面的8個(gè)方向最接近的一個(gè)方向。步驟6,對(duì)于所有向量,進(jìn)行一次合并過(guò)程:依據(jù)移動(dòng)軌跡的順序,依次比較當(dāng)前向量和前一個(gè)向量的方向,如果兩個(gè)向量的方向一樣,則將其合并,合并采用公式newVector=vectors[i]+vectors[i-1],式中,vectors[i]為第i個(gè)向量,vectors[i-1]為第i-1個(gè)向量。合并后的結(jié)果如圖4所示。步驟7,對(duì)合并后的向量進(jìn)行去噪聲和編碼,然后計(jì)算編輯距離。因?yàn)槠聊欢秳?dòng)、用戶手抖動(dòng)、數(shù)據(jù)采集錯(cuò)誤等若干因素,直接合并向量方向后往往會(huì)有細(xì)小的誤差向量來(lái)影響軌跡的判斷。為了去掉這些影響,采取多次刪掉當(dāng)前所有向量中長(zhǎng)度最短向量的方法,每次刪掉最短的向量后再進(jìn)行一次合并過(guò)程。為了保證主體信息不受影響,刪掉的向量不應(yīng)過(guò)多,應(yīng)保證刪掉后的向量總長(zhǎng)度在原始總長(zhǎng)度的一定百分比之上,經(jīng)過(guò)試驗(yàn),70%到90%均是合理的范圍。在實(shí)際操作時(shí),如圖5所示,每次刪除最短的向量,當(dāng)某一次刪除最短向量后,向量長(zhǎng)度小于原始向量總長(zhǎng)度的70%,則取消最后一次刪除操作,將所得向量作為去噪后的向量。對(duì)去噪后的向量進(jìn)行編碼,編碼方式直接采用依次包含所有方向向量的字符串,例如將向右的軌跡編碼成”0”,將Z型的軌跡編碼成”050”。在傳統(tǒng)的編輯距離計(jì)算中,替換、增加、刪除3種操作都會(huì)增加1的代價(jià),比如方向0與方向1很接近,但是與方向3相差很大,相鄰的兩個(gè)方向之間的替換需要付出更少的代價(jià),本實(shí)施例將LevenshteinDistance的遞推公式修改為:Leva,b(i,j)=max(i,j),ifmin(i,j)=0minLeva,b(i-1,j)+1Leva,b(i,j-1)+1Leva,b(i,j)+cost(ai,bj),otherwise]]>其中cost函數(shù)為cost(ai,bj)=0,ai=bj0.5,|ai-bj|=1or71,otherwise;]]>式中:Leva,b(i,j)為字符串a(chǎn)的前i個(gè)字符與字符串b的前j個(gè)字符的編輯距離;a為用戶輸入的移動(dòng)軌跡編碼;i為用戶輸入的移動(dòng)軌跡的字符串中的字符序數(shù);ai為用戶輸入的移動(dòng)軌跡的字符串中的第i個(gè)字符;b為可供匹配的移動(dòng)軌跡編碼;j為可供匹配的移動(dòng)軌跡的字符串中的字符序數(shù);bj為可供匹配的移動(dòng)軌跡的字符串中的第j個(gè)字符。步驟7計(jì)算得到編輯距離后,將編輯距離最短且編輯距離小于可接受距離上限的可供匹配的移動(dòng)軌跡作為用戶輸入的移動(dòng)軌跡。步驟4-步驟7的流程如圖1所示。步驟8,將用戶操作特征圖像的移動(dòng)軌跡與用戶定義的特征圖像空間移動(dòng)軌跡進(jìn)行比較,當(dāng)有單條或多條特征圖像空間移動(dòng)軌跡匹配用戶定義的特征圖像空間移動(dòng)軌跡時(shí),觸發(fā)對(duì)應(yīng)事件。當(dāng)前第1頁(yè)1 2 3