姚 欣,陽(yáng)夢(mèng)珂,周小梅,高 然,何明濤,應(yīng) 申
(武漢大學(xué) 資源與環(huán)境科學(xué)學(xué)院,湖北 武漢430079)
傳統(tǒng)的地圖瀏覽方式通過(guò)對(duì)鼠標(biāo)和鍵盤的操作來(lái)進(jìn)行,通常是一個(gè)人講解,一個(gè)人通過(guò)電腦進(jìn)行系統(tǒng)操作,對(duì)地圖的公眾講解有所限制。講解者和參觀者不能有效地與展品互動(dòng)。新興的體感技術(shù)使得人們直接使用肢體動(dòng)作,身臨其境地與機(jī)器或者環(huán)境互動(dòng)。如果能夠建立一個(gè)使用體感系統(tǒng)操作的地圖平臺(tái),解放鼠標(biāo)與鍵盤輸入對(duì)人機(jī)交互的束縛,探尋體感姿態(tài)與動(dòng)作對(duì)地圖瀏覽操作的適用性則會(huì)更加容易。
與傳統(tǒng)的鼠標(biāo)、鍵盤等人機(jī)交互設(shè)備不同,用戶借助Kinect用身體動(dòng)作就可以直接控制計(jì)算機(jī),Kinect很可能和鍵盤鼠標(biāo)成為新一代標(biāo)準(zhǔn)人機(jī)交互設(shè)備[1]。而Kinect與電子地圖的結(jié)合,將帶來(lái)全新的地圖瀏覽體驗(yàn)。
基于人體手勢(shì)動(dòng)作的地圖瀏覽可以劃分為兩個(gè)模塊:地圖平臺(tái)和地圖瀏覽的內(nèi)核操作;人體手勢(shì)識(shí)別需要兩者的關(guān)聯(lián)和鏈接(見(jiàn)圖1)。第一步,同時(shí)進(jìn)行地圖瀏覽系統(tǒng)的搭建與體感系統(tǒng)的姿態(tài)動(dòng)作定義。地圖瀏覽系統(tǒng),主要實(shí)現(xiàn)縮放與平移功能,并根據(jù)現(xiàn)有的鼠標(biāo)或鍵盤操作方式,建立一個(gè)全屏地圖場(chǎng)景漫游系統(tǒng);體感系統(tǒng)則是設(shè)計(jì)對(duì)應(yīng)的操作手勢(shì),并提供識(shí)別功能,Kinect提供的 Windows SDK可實(shí)現(xiàn)在Windows平臺(tái)下獲取操作者肢體動(dòng)作。第二步,將兩系統(tǒng)對(duì)接,結(jié)合人體行為和習(xí)慣認(rèn)知,用手勢(shì)動(dòng)作來(lái)實(shí)現(xiàn)對(duì)GIS地圖瀏覽的操作,整體技術(shù)路線如圖1所示。
圖1 技術(shù)路線
手勢(shì)是指人手或者手臂結(jié)合產(chǎn)生的各種姿勢(shì)或者動(dòng)作[2],是一種表達(dá)思想或感情的肢體運(yùn)動(dòng)。手勢(shì)識(shí)別是通過(guò)計(jì)算機(jī)設(shè)備對(duì)人的手勢(shì)進(jìn)行精確解釋,已成為當(dāng)前人機(jī)交互的一種重要手段,這種方式是非接觸性的、自然的交互,相比傳統(tǒng)的鍵盤鼠標(biāo)等具有自然簡(jiǎn)潔和豐富性等特點(diǎn),是人機(jī)交互發(fā)展的趨勢(shì)[3]。
作為新一代的人機(jī)交互工具,Kinect提供了骨架跟蹤系統(tǒng),通過(guò)偵測(cè)到的3D深度圖像,通過(guò)機(jī)器學(xué)習(xí)的方式,可以很好地識(shí)別人體的軀干、四肢以及手指等動(dòng)作。其核心算法就是探測(cè)識(shí)別雙手在空間中的運(yùn)動(dòng),如在Kinect里,為模擬鼠標(biāo)點(diǎn)擊的下壓按鈕動(dòng)作,使用手向前推的手勢(shì)來(lái)模擬[4]。按照這種思路,本文使用了全身6個(gè)骨骼點(diǎn),包括頭、手、肘、肩、髖、膝,總共定義了8個(gè)基本的地圖瀏覽手勢(shì),包括4個(gè)平移,2個(gè)縮放,以及圖層切換、縮放至全地圖4個(gè)平移手勢(shì),兩個(gè)縮放手勢(shì),以及圖層切換、縮放至全地圖等手勢(shì)(見(jiàn)圖2)。具體描述如下:
1)上移:兩手臂同時(shí)在胸前抬升;
2)下移:保持兩手臂豎直,同時(shí)向后擺動(dòng);
3)左移:右手臂向左揮動(dòng);
4)右移:左手臂向右揮動(dòng);
5)放大:兩手平推向肩外側(cè);
6)縮?。簝墒终瓶拷?;
7)圖層切換:任意一手抬升至頭頂;
8)縮放至全地圖:左或者右膝蓋抬高。
與鍵盤、鼠標(biāo)相比,頻繁地使用肢體動(dòng)作進(jìn)行控制操作更易讓人感到疲憊,因此手勢(shì)設(shè)計(jì)充分考慮了簡(jiǎn)單、高效的原則,盡量減小肢體運(yùn)動(dòng)距離,并且符合人的一般認(rèn)知習(xí)慣。
由于Kinect可以利用它的景深攝像頭提供深度圖像,其中的像素記錄了場(chǎng)景中各點(diǎn)的校準(zhǔn)深度,分辨率達(dá)到幾厘米。這種深度攝像機(jī)可以很好地消除背景噪音,提取出人的信息。本文利用Microsoft Kinect提供的 Windows SDK v1.8建立對(duì)應(yīng)的操作手勢(shì)來(lái)搭建體感系統(tǒng),從而實(shí)現(xiàn)在 Windows平臺(tái)下獲取操作者肢體動(dòng)作。
當(dāng)Kinect的位置確定后,人的肢體的每個(gè)關(guān)節(jié)便對(duì)應(yīng)有一個(gè)空間坐標(biāo)(x,y,z),并隨關(guān)節(jié)位置的變化而改變。通過(guò)比較各個(gè)節(jié)點(diǎn)的3個(gè)方向的坐標(biāo)值,便可以判斷它們的位置關(guān)系,從而對(duì)不同手勢(shì)進(jìn)行判別。根據(jù)前述手勢(shì)設(shè)計(jì),對(duì)其動(dòng)作的判斷規(guī)則如下:
圖2 手勢(shì)的設(shè)計(jì)和約定
1)上移:右手在右肩前,并且左手臂高于左手手肘,右手臂高于右手手肘。
2)下移:右手低于右肩,并且左右手同時(shí)在臀部后。
3)左移:左手低于左肩,并且右手在髖部中心左側(cè)。
4)右移:右手低于右肩,并且左手在髖部中心右側(cè)。
5)放大:右手高于右手手肘,并且右手在右肩右側(cè),左手在左肩左側(cè)。
6)縮小:右手高于右手手肘,并且左手高于左手手肘,左右手距離小于一定數(shù)值。
7)圖層切換:右手高于頭部,或者左手高于頭部。
8)縮放至全地圖:左膝高于右膝,或者右膝高于左膝。
對(duì)于每個(gè)手勢(shì)相應(yīng)設(shè)置了一個(gè)或多個(gè)位置參數(shù),當(dāng)兩個(gè)關(guān)節(jié)的空間X,Y或Z方向上的距離在這個(gè)參數(shù)的限定范圍內(nèi)時(shí),便會(huì)觸發(fā)相應(yīng)的事件。例如,在圖層切換手勢(shì)中,“右手高于頭部”對(duì)應(yīng)的條件語(yǔ)句為:
其中p為參數(shù),值為0.2,是一個(gè)最佳測(cè)試值。
由于Kinect捕捉、處理的是肢體的瞬時(shí)位置信息,因此這種識(shí)別方式屬于靜態(tài)識(shí)別。
OpenLayers是一個(gè)用于開(kāi)發(fā)網(wǎng)絡(luò)地圖客戶端的JavaScript包,用于實(shí)現(xiàn)標(biāo)準(zhǔn)格式發(fā)布的地圖數(shù)據(jù)訪問(wèn),其實(shí)現(xiàn)訪問(wèn)地理空間數(shù)據(jù)的方法符合OGC(開(kāi)放地理信息系統(tǒng)協(xié)會(huì))標(biāo)準(zhǔn)[5-7]。
首先是創(chuàng)建地圖并加載圖層。在HTML文檔的JavaScript模塊中利用web地圖服務(wù)請(qǐng)求返回相應(yīng)的地圖圖層進(jìn)行加載,本文選用的地圖為必應(yīng)虛擬地球(Bing Virtual Earth),圖層包括衛(wèi)星圖層、道路圖層、混合圖層。
然后是實(shí)現(xiàn)對(duì)地圖的控制,主要是通過(guò)調(diào)用OpenLayers.Map下的相關(guān)函數(shù)完成。Kinect中根據(jù)關(guān)節(jié)的節(jié)點(diǎn)坐標(biāo)進(jìn)行動(dòng)作的識(shí)別,之后向地圖瀏覽平臺(tái)傳遞一個(gè)信號(hào),JavaScript根據(jù)信號(hào)來(lái)調(diào)用相應(yīng)的地圖瀏覽控制函數(shù)。
本系統(tǒng)Kinect開(kāi)發(fā)使用CJHJ語(yǔ)言生成控制臺(tái)程序,地圖搭建基于 OpenLayers 2.10,使用JavaScript編寫html文檔,借助Windows平臺(tái)實(shí)現(xiàn)連接。通過(guò)基于手勢(shì)動(dòng)作識(shí)別,可以不使用任何鼠標(biāo)、鍵盤工具,直接從Kinect接入OpenLayers地圖,來(lái)實(shí)現(xiàn)地圖的瀏覽。本文搭建的體感控制地圖的平臺(tái),通過(guò)反復(fù)測(cè)試并不斷改進(jìn)代碼,手勢(shì)識(shí)別的正確率得以提高,用戶友好度也得以加強(qiáng)。已有多名人員測(cè)試過(guò)本系統(tǒng)實(shí)現(xiàn)的體感地圖控制,總體效果良好,能很快識(shí)別成功并進(jìn)行地圖瀏覽。測(cè)試發(fā)現(xiàn)人體與Kinect的最近有效距離為2m,在2~6m的范圍內(nèi)能夠較好地完成地圖控制。圖3為部分測(cè)試照片,其中圖3(a)為每個(gè)測(cè)試的初始地圖狀態(tài),通過(guò)動(dòng)作可以實(shí)現(xiàn)對(duì)地圖的放大、左移和圖層切換。
通常地圖的瀏覽用鼠標(biāo)和鍵盤交互實(shí)現(xiàn);但是在基于手勢(shì)動(dòng)作的識(shí)別時(shí),由于人體動(dòng)作的連續(xù)性和先后性,動(dòng)作和所想的瀏覽結(jié)果可能產(chǎn)生沖突,如“放大”時(shí)有胳膊的舉起,人在執(zhí)行時(shí)會(huì)附帶有“上移”或“下移”的動(dòng)作,引出在文中動(dòng)作的設(shè)計(jì)和判斷時(shí)必須準(zhǔn)確地分類,并規(guī)定相關(guān)的參數(shù),才能實(shí)現(xiàn)有效的動(dòng)作和地圖瀏覽的一致性。通常來(lái)說(shuō),對(duì)于這些動(dòng)作需設(shè)置一個(gè)優(yōu)先級(jí)來(lái)降低動(dòng)作的誤判,例如,要實(shí)現(xiàn)放大,首先必須滿足右手高于右手手肘,然后才是外推動(dòng)作的識(shí)別。
圖3 實(shí)驗(yàn)測(cè)試
本文實(shí)現(xiàn)基于Kinect手勢(shì)識(shí)別,搭建體感地圖平臺(tái),以探索瀏覽地圖的交互方式,是利用自然用戶界面實(shí)現(xiàn)交互系統(tǒng)的初探。對(duì)手勢(shì)動(dòng)作的識(shí)別,精度和自由度是一個(gè)難點(diǎn),文章限定了識(shí)別的距離才獲得了比較良好的效果,在距離較近或者較遠(yuǎn)的時(shí)候誤差就會(huì)很大。Kinect是下一代自然用戶界面的一個(gè)縮影,基于Kinect等自然用戶界面的人機(jī)交互設(shè)計(jì)可大幅度提高用戶工作的能力和效率,成為當(dāng)前桌面系統(tǒng)、移動(dòng)終端后的另一種地圖瀏覽方式。
[1]孫樹(shù)森,馬文娟,桂江生,等.基于Kinect的《互動(dòng)應(yīng)用開(kāi)發(fā)》課 程 開(kāi) 發(fā) 探 究 [J].中 國(guó) 校 外 教 育,2012(30):161,165.
[2]江立,阮秋琦.基于神經(jīng)網(wǎng)絡(luò)的手勢(shì)識(shí)別技術(shù)研究[J].北京交通大學(xué)學(xué)報(bào),2006,30(5):32-36.
[3]陶麗君,李翠華,張希婧,等.基于Kinect傳感器深度信息的動(dòng)態(tài)手勢(shì)識(shí)別[J].廈門大學(xué)學(xué)報(bào):自然科學(xué)版,2013,52(4):493-497.
[4]余濤.Kinect應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn):用最自然的方式與機(jī)器對(duì)話[M].北京:機(jī)械工業(yè)出版社,2013.249.
[5]陳德鑫.基于OpenLayers客戶端的網(wǎng)絡(luò)地圖實(shí)現(xiàn)技術(shù)框架[J].現(xiàn)代測(cè)繪,2010,33(3):48-49.
[6]馮駿,劉文兵,夏翔.Web2.0下網(wǎng)絡(luò)地圖的發(fā)展及存在問(wèn)題探討[J].測(cè)繪工程,2013,22(2):37-41.
[7]張志軍,邱俊武,于忠海.通用地圖符號(hào)表達(dá)機(jī)制的研究[J].測(cè)繪工程,2013,22(5):5-8.