王向強(qiáng),,黃俊,張作運(yùn)
?。ㄖ貞c郵電大學(xué) 信號與信息處理重慶市重點(diǎn)實(shí)驗(yàn)室,,重慶 400065)
摘要:利用Kinect的局部骨骼追蹤技術(shù),捕獲人體數(shù)據(jù),、彩色數(shù)據(jù)和深度數(shù)據(jù),,對采集到的數(shù)據(jù)進(jìn)行分析,描繪出手的輪廓并且根據(jù)深度信息識別出手勢的意思,,做邏輯處理后,,通過Kinect設(shè)備將信息發(fā)送給PC,,形成操作命令映射到虛擬文物上,虛擬文物會進(jìn)行相應(yīng)的動作,,比如移動,、放大、旋轉(zhuǎn)等,。測試結(jié)果表明,,系統(tǒng)工作穩(wěn)定可靠,體驗(yàn)者能夠通過體感交互技術(shù)較好地對虛擬文物進(jìn)行控制,。虛擬文物互動展示系統(tǒng)突破了傳統(tǒng)文物的展示方式,,使觀眾積極參與到展覽之中。
關(guān)鍵詞:Kinect,;骨骼跟蹤,;手勢識別
中圖分類號:TP391文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.02.014
引用格式:王向強(qiáng),黃俊,,張作運(yùn).基于Kinect虛擬文物互動展示系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,,2017,36(2):41-43,47.
0引言
2008年,,比爾蓋茨提出“自然用戶界面”的概念,,并預(yù)言人機(jī)交互在未來幾年內(nèi)會有很大的改變,鍵盤和鼠標(biāo)將會逐步被更為自然的觸摸式,、視覺性以及語音控制界面所代替,。Kinect是一個動作捕捉設(shè)備,Kinect和用戶的結(jié)合就形成了一套完整的控制系統(tǒng),。
目前我國很多博物館所建立的虛擬博物館大多數(shù)是使用VRML語言進(jìn)行建模,,借助于WRL文件瀏覽器插件基于IE進(jìn)行瀏覽,這樣用戶可以方便快捷地瀏覽,。但是VRML是基于瀏覽器的一種腳本語言,,對于相應(yīng)事件的處理能力有限,與用戶的交互能力較差,,并且也無法與數(shù)據(jù)庫連接,在構(gòu)建虛擬展館過程中需要手動添加文物模型[1],。
針對以上問題,,本文所設(shè)計的虛擬文物互動展示系統(tǒng)使用MySQL數(shù)據(jù)庫存儲文物的詳細(xì)信息;使用FTP服務(wù)器來存儲3D模型文件,,并由系統(tǒng)自行獲?。皇褂肒inect手勢識別技術(shù),,讓用戶與文物模型隔空交互,,從而有效地解決了交互能力差的問題,。本文還提出了KMeans算法來有效地解決手型圖標(biāo)的抖動問題。
可以想象到,,在一個博物館里,,觀眾只需要用手勢去觸碰虛擬的按鈕,就可以選擇你感興趣的文物,,只需要變換手勢,,就可以對文物進(jìn)行移動、放大,、旋轉(zhuǎn),。虛擬文物與參觀者互動的方式,讓展覽更具感染力,。
1系統(tǒng)介紹
基于Kinect虛擬文物互動展示系統(tǒng)的結(jié)構(gòu)主要由顯示模塊,、文物控制模塊、UI交互模塊,、文物存儲模塊以及動作捕捉與識別模塊構(gòu)成,,各模塊之間協(xié)同合作,構(gòu)成了具有完備功能的虛擬文物展示系統(tǒng),,如圖1所示,。
圖1系統(tǒng)結(jié)構(gòu)圖(1)顯示模塊:負(fù)責(zé)獲取場景中的用戶影像,并將虛擬文物模型與用戶影像進(jìn)行融合并顯示,。
?。?)文物控制模塊:負(fù)責(zé)對虛擬文物模型的位置、大小和角度進(jìn)行調(diào)整,,并且接收動作捕捉與識別模塊發(fā)過來的控制信息,,做出相應(yīng)的變動。
?。?)UI交互模塊:負(fù)責(zé)獲取界面控件的位置,,并且比對用戶手的位置,進(jìn)行對應(yīng)的響應(yīng),。
?。?)手勢捕捉與識別模塊:負(fù)責(zé)捕捉到用戶手的關(guān)鍵點(diǎn),并且獲取手的深度信息,,然后對信息進(jìn)行處理,,識別出用戶手勢的意思,并發(fā)送指令給文物控制模塊,。
?。?)文物存儲模塊:該系統(tǒng)包括MySQL數(shù)據(jù)庫以及FTP服務(wù)器。虛擬文物的編號、朝代以及其他詳細(xì)信息數(shù)據(jù)會存儲到MySQL數(shù)據(jù)庫中,。因?yàn)樘摂M文物模型所占空間比較大,,所以把模型放在FTP服務(wù)器中,由該軟件直接調(diào)用,。
基于Kinect的虛擬文物互動展示系統(tǒng)的結(jié)構(gòu)化設(shè)計,,提高了系統(tǒng)的靈活性,降低了模塊之間的耦合性,,不同模塊之間通過接口進(jìn)行通信,,使得各個模塊能夠獨(dú)立高效地完成各自功能。
2Kinect介紹
Kinect體感設(shè)備主要是由彩色攝像頭,、深度攝像頭和紅外線投影機(jī)組成,。Kinect設(shè)備與普通攝像頭的區(qū)別在于紅外線發(fā)射和紅外線接收功能,通過這個功能,,Kinect可以獲取場景的深度信息,。Kinect的基本原理是:紅外投影機(jī)主動投射紅外光譜,照射到粗糙物體,,或是穿透毛玻璃后,,光譜發(fā)生扭曲,會形成隨機(jī)的反射斑點(diǎn),,也就是散斑,,進(jìn)而被紅外攝像頭讀取。這些散斑就有高度隨機(jī)性,,并且隨著距離的變化,,散斑也隨著改變,在同一空間中不同的散斑圖案都不相同[2],。因此,,只要使用散斑對空間編碼,當(dāng)有物體進(jìn)入空間時,,即可定位,。
3系統(tǒng)軟件設(shè)計
虛擬文物互動展示平臺軟件采用WPF進(jìn)行開發(fā)。WPF是微軟推出的Windows Vista的用戶界面框架,。它提供了統(tǒng)一的編程模型,、語言和框架,真正做到了分離界面設(shè)計人員與開發(fā)人員的工作,,同時它提供了全新的多媒體交互用戶圖形界面,。WPF最重要的特色是支持3D模型,以及支持模型的點(diǎn)擊事件,。整個虛擬文物展示系統(tǒng)軟件設(shè)計運(yùn)用Kinect體感設(shè)備和WPF框架等技術(shù)手段,包括手勢識別,、UI交互,、文物展示以及文物存儲的智能交互展示系統(tǒng),,對虛擬文物展示實(shí)現(xiàn)了主動選擇、交互體驗(yàn)良好,、操作方便的目標(biāo),。虛擬文物互動展示的主要功能模塊如圖2所示。
3.1GUI設(shè)計
在主界面上包括四個不同功能的懸浮按鈕,,這四個懸浮按鈕是根據(jù)人體的合理肢體操作距離而設(shè)計的,。這四個懸浮按鈕的功能分別為虛擬文物展示、虛擬文物詳情,、博物館視頻簡介以及退出,。在本項(xiàng)目設(shè)計中,最重要的是虛擬文物展示功能,。當(dāng)用戶選擇虛擬文物展示懸浮按鈕時,,該軟件會彈出另一個窗口,用戶可以根據(jù)自己的興趣愛好,,選擇不同朝代的文物來進(jìn)行控制,,比如根據(jù)不同的手勢來移動、放大以及縮小和旋轉(zhuǎn)文物,。
3.2懸浮按鈕
懸浮按鈕控制流程如圖3所示,。懸浮按鈕其實(shí)是一個普通的控件,有三種狀態(tài)分別為經(jīng)過,、按下和離開,,可以有效地解決不小心點(diǎn)擊的問題[3]。通過Kinect SDK首先識別出用戶舉起的是左手還是右手,,再獲取左手或者右手的三維坐標(biāo)數(shù)據(jù),,然后激活界面的一張手型圖標(biāo),通過坐標(biāo)映射的方法,,把手的三維坐標(biāo)轉(zhuǎn)換成二維坐標(biāo),,轉(zhuǎn)換過的二維坐標(biāo)映射到手型圖標(biāo)上,這樣界面上的手型圖標(biāo)會隨著用戶的手在界面上移動,。當(dāng)用戶的手型圖標(biāo)沒有接觸到該懸浮按鈕的時候,,它沒有任何變化。當(dāng)手型圖標(biāo)移動到按鈕區(qū)域時,,手型圖標(biāo)周圍會出現(xiàn)進(jìn)度條控件,,當(dāng)時間超過2 s后,會觸發(fā)懸浮按鈕OnClick事件,,當(dāng)手型圖標(biāo)不在按鈕區(qū)域時,,懸浮按鈕恢復(fù)初始狀態(tài)。
3.3解決手型圖標(biāo)抖動問題
圖4二維坐標(biāo)點(diǎn)群Kinect每秒鐘會采集30幀的深度/RGB數(shù)據(jù),每幀所獲取的骨骼的三維坐標(biāo)都是不相同的,,轉(zhuǎn)變成二維坐標(biāo)也是不相同的,,所以把二維坐標(biāo)映射到手型圖標(biāo)上,手型圖標(biāo)會出現(xiàn)抖動的情況,。在軟件編程中,,取出30幀的二維坐標(biāo)數(shù)據(jù)如圖4所示。
本文的設(shè)計考慮到抖動這一問題,,提出采用KMeans算法[4]的解決方案,,其基本方法為:首先在軟件中提取出最近的6個幀的骨骼三維數(shù)據(jù),然后轉(zhuǎn)換成二維坐標(biāo)數(shù)據(jù),。再使用KMeans算法,,隨機(jī)在圖中取K個種子點(diǎn),然后對所有點(diǎn)求出到其K個種子點(diǎn)的距離,,假如點(diǎn)pi離種子點(diǎn)最近,,那么pi屬于si點(diǎn)群。接下來,,把種子點(diǎn)移動到屬于它的點(diǎn)群中心,。然后重復(fù)上述步驟,直到種子點(diǎn)沒有移動,。最后使用各個點(diǎn)的X/Y坐標(biāo)的平均值,,計算出點(diǎn)群中心的坐標(biāo)。把6幀二維坐標(biāo)的點(diǎn)群中心坐標(biāo)映射到手型圖標(biāo)上可以有效地解決抖動的問題,。具體算法流程如圖5所示,。
3.4文物選擇與控制
該系統(tǒng)首先根據(jù)客戶的需求,對用戶的手勢行為做了規(guī)范協(xié)議[5],,如表1,、表2所示。如果用戶的手勢不是協(xié)議中所規(guī)定的,,系統(tǒng)將不會做出任何響應(yīng),。
用戶操作虛擬文物的流程如圖6所示。用戶可以用自己的左右手來選擇查看哪個朝代的文物,,只需要把手放在圖標(biāo)按鈕2 s即可,。當(dāng)用戶選擇了清朝的文物,界面右邊會出現(xiàn)文物的二維圖片,,用戶可以繼續(xù)選擇具體的文物,。當(dāng)用戶選擇了一個自己比較感興趣的文物時,界面會出現(xiàn)一個3D文物模型,,用戶可以根據(jù)手勢協(xié)議來操作模型,,例如對模型旋轉(zhuǎn),、放大等。當(dāng)用戶想查看其他的文物時,,只需要把當(dāng)前文物撤銷即可,。用戶想要和當(dāng)前文物模型合影時,只需要把手放在照相按鈕上,,系統(tǒng)會把圖片保存到文件夾上。
4實(shí)驗(yàn)結(jié)果
為了驗(yàn)證系統(tǒng)的可靠性以及響應(yīng)時間,,進(jìn)行了如下的現(xiàn)場測試,。測試環(huán)境為Win10+WPF+Kinect for Windows SDK 1.8。測試者站在Kinect正前方,,做出不同的手勢,,以驗(yàn)證不同手勢識別的準(zhǔn)確性。
實(shí)驗(yàn)結(jié)果表明,,使用Kinect能夠正確判斷出用戶手勢的意思,,通過相應(yīng)的算法以及手型圖標(biāo)抖動問題的解決,進(jìn)而實(shí)現(xiàn)了對虛擬文物的位置,、角度,、姿態(tài)的控制,充分驗(yàn)證了基于Kinect的虛擬文物互動展示系統(tǒng)的可行性,。
5結(jié)束語
基于Kinect的虛擬文物互動展示系統(tǒng)是一個新穎而又充滿意義的課題,。本文使用Kinect與WPF完成了一套用戶體驗(yàn)良好、功能完備的用戶與虛擬文物互動系統(tǒng),。該系統(tǒng)主要通過Kinect 來獲取人體骨骼坐標(biāo)數(shù)據(jù),,通過對數(shù)據(jù)的分析與綜合識別出用戶的肢體語言,然后映射到3D文物上,,實(shí)現(xiàn)用戶與3D文物之間的互動,。本文還提出了使用KMeans算法來解決手型圖標(biāo)在屏幕上的抖動問題,使用戶具有更好的體驗(yàn),。下一步研究方向是采用手機(jī)App和Unity3D的開發(fā)方式,,如通過掃描文物圖片,在手機(jī)屏幕上出現(xiàn)3D文物模型,,用戶通過觸屏的方式與3D文物進(jìn)行互動,。這樣可以有效地解決用戶多的問題,讓每位用戶都可以積極參與到博物館展覽之中,。
參考文獻(xiàn)
?。?] 劉鵬飛 虛擬博物館系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].長春:吉林大學(xué),2011.
?。?] 馬源駔.基于Kinect的內(nèi)容展示系統(tǒng)設(shè)計與實(shí)現(xiàn)[D].鄭州: 鄭州大學(xué),,2014.
?。?] 韓娜,陳東偉,,鐘單成,,等. 基于Kinect的虛擬試衣系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].信息技術(shù),2015(7):59-61.
?。?] 陳皓.K均值算法[DB/OL].(2013-11-28)[2016 08 25]http://blog.jobbole.com/23157/.
?。?] 胡焰.基于Kinect 的虛擬試衣系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2013.