呂寶媛,蔡煜城,林偉達(dá),曹家榕,楊敬達(dá),蔡澤民
(汕頭大學(xué) 工學(xué)院,廣東汕頭 515063)
全息投影技術(shù)又名虛擬成像技術(shù),通過干涉、衍射等光學(xué)原理,將真實(shí)物體的三維圖像進(jìn)行重現(xiàn)。
根據(jù)技術(shù)方法與實(shí)現(xiàn)途徑的不同,可以將全息投影分為以下兩類:
(1)投射全息投影:將激光投射到全息投影材質(zhì)的膠片上,從全息膠片背面觀察重建之后的圖像。
(2)反射全息投影:將白的光源從觀察者的方向投射到全息投影膠片上,利用反射的原理重建彩色的圖像[1]。
全息投影技術(shù)是當(dāng)今一種前沿的顯像技術(shù)。憑借其技術(shù)產(chǎn)生了各類全息投影產(chǎn)品,應(yīng)用于廣告業(yè)、博物館、科技館、珠寶企業(yè)、車企等領(lǐng)域。但現(xiàn)今的全息投影技術(shù)僅限于全息影像的展示,播放全息視頻,并沒有交互功能,用戶體驗(yàn)不佳,且能進(jìn)行交互的設(shè)備也僅局限于平面播放,并無立體效果。
針對(duì)上述問題,本文提出了一種基于Leap Motion與全息投影技術(shù)的交互全息投影方法。本方法在傳統(tǒng)只顯示固定內(nèi)容的全息3D投影方法的基礎(chǔ)上,擴(kuò)大了成像的體積,增加Leap Motion體感傳感器以實(shí)現(xiàn)交互功能,實(shí)現(xiàn)了可控制的3D全息影像展示。
本方法不僅可以用于簡(jiǎn)單的視頻播放以展示產(chǎn)品、展示3D物體,更可以通過手勢(shì)來控制物體的移動(dòng)及旋轉(zhuǎn)、控制虛擬人物的移動(dòng)以進(jìn)行游覽式觀賞,解決了傳統(tǒng)投影設(shè)備無交互效果、用戶體驗(yàn)差的問題。此外,還加入投影儀以擴(kuò)大成像體積,采用全息投影技術(shù),實(shí)現(xiàn)全息影像的生成,增加成像的靈活度,解決了顯示設(shè)備受限、生成圖像單一的問題。
本文提出的基于Leap Motion的交互全息投影方法由人機(jī)交互模塊和顯像模塊兩部分實(shí)現(xiàn),如圖1所示。
圖1 交互全息投影模塊結(jié)構(gòu)
人機(jī)交互模塊通過對(duì)人體手部動(dòng)作的識(shí)別,以獲取人體的控制信息,將人體控制信息傳輸?shù)教幚砥魃?,由處理器將收到的控制姿態(tài)信息進(jìn)行分析運(yùn)算,生成計(jì)算機(jī)指令對(duì)圖像進(jìn)行控制,最終在顯像系統(tǒng)中顯示并控制三維立體模型。
顯像模塊通過Unity3D及相關(guān)算法對(duì)所需顯示的模型進(jìn)行處理,利用金字塔結(jié)構(gòu)將光線反射,使顯像模塊生成三維立體的圖像,同時(shí),Unity3D與Leap Motion進(jìn)行通信,根據(jù)Leap Motion經(jīng)計(jì)算機(jī)處理過的指令對(duì)顯像模塊中的三維立體圖像進(jìn)行變換。
本方法所使用的終端設(shè)備為個(gè)人電腦。此電腦至少應(yīng)具備支持USB3.0協(xié)議的接口、HDMI接口,以用于完成基于Unity3D引擎的圖像處理以及接收用戶與設(shè)備互動(dòng)的信息。本方法所用的顯示模塊由顯示器以及亞克力材質(zhì)的金字塔組成。人機(jī)互動(dòng)設(shè)備采用的是體感傳感器Leap Motion。
在處理終端上,采用Unity3D引擎進(jìn)行處理。Unity3D是Unity Technologies公司開發(fā)的一款能輕松設(shè)計(jì)3D游戲、可視化模型、實(shí)時(shí)3D動(dòng)畫等內(nèi)容的游戲開發(fā)工具,其支持多個(gè)平臺(tái)與設(shè)備,是一個(gè)功能強(qiáng)大、整合全面的專業(yè)級(jí)游戲引擎。因而Unity3D也常常被作為交互圖形化開發(fā)的首選環(huán)境。
顯像模塊為一個(gè)全息投影設(shè)備。由該設(shè)備接收來自計(jì)算機(jī)的控制指令,生成全息影像,并根據(jù)指令控制影像變換。
本系統(tǒng)采用的全息投影技術(shù)是利用佩伯爾幻像原理,能夠把影像懸浮于空中的立體成像技術(shù),利用全息材料制成的反射面,將虛擬影像懸浮于空中,360°均能觀看[2]。
全息投影是一種無需頭戴設(shè)備的3D技術(shù)。觀眾可以看到的立體的虛擬場(chǎng)景是一種因光的折射、反射而形成的虛像。它能實(shí)時(shí)地將真實(shí)的三維圖像記錄和再現(xiàn)。本方法中利用全息投影技術(shù),生成立體影像并進(jìn)行交互。圖2為成像系統(tǒng)結(jié)構(gòu)圖。
圖2 成像模塊結(jié)構(gòu)圖
2.3.1多攝像頭設(shè)計(jì)
在Unity3D中需要多個(gè)面觀察引擎中的對(duì)象,所以需要多個(gè)攝像頭組件同時(shí)工作,在此方法中采用了一個(gè)由四個(gè)攝像頭組成的攝像頭組進(jìn)行多鏡頭的采集[3]。
在工具欄中選擇攝像頭組件,依次導(dǎo)入四個(gè)攝像頭至當(dāng)前的場(chǎng)景。改變四個(gè)攝像頭的位置參數(shù),使其分別在x軸正半軸、x軸負(fù)半軸、z軸正半軸、z軸負(fù)半軸上,且與原點(diǎn)(0,0,0)等距,目的是使四個(gè)畫面中的物體尺寸一致。改變旋轉(zhuǎn)角參數(shù),使其分別在正向朝向原點(diǎn),目的是使四個(gè)畫面中的物體朝向一致。某一攝像頭的組件參數(shù)如圖3所示。
圖3 某一攝像頭的組件參數(shù)圖
通過改變攝像頭的位置參數(shù)和旋轉(zhuǎn)角參數(shù),得到了以物體為中心的前后左右四個(gè)不同方向的畫面,如圖4所示。
圖4 四個(gè)攝像頭的位置及朝向圖
2.3.2圖像輸出組件
創(chuàng)建四個(gè)圖像組件,改變其位置參數(shù),使其相互緊貼組成一個(gè)2×2的大正方形陣列,并加上一個(gè)等腰直角三角形的透明遮罩層,使大正方形的邊線中點(diǎn)間組成一個(gè)小正方形,該小正方形即為圖像顯示的UI界面。
通過攝像機(jī)Target Texture目標(biāo)紋理技術(shù),將之前四個(gè)攝像機(jī)拍攝得到的圖像轉(zhuǎn)換成紋理貼圖,做成材質(zhì)依次應(yīng)用到四個(gè)圖像組件上。
根據(jù)由亞克力板構(gòu)成的金字塔尖端的朝向,需要調(diào)整各個(gè)圖像組件的旋轉(zhuǎn)角參數(shù),使從金字塔外的四個(gè)面看圖像都為正向,如圖5所示。
圖5 四個(gè)image組件位置及其旋轉(zhuǎn)圖
2.3.3將物體導(dǎo)入至場(chǎng)景
Unity3D支持FBX、STL等3D物品格式,可以方便地將物品的3D模型導(dǎo)入至場(chǎng)景中,并將物品移至坐標(biāo)原點(diǎn)處,目的是方便用戶觀察。
為了進(jìn)一步讓用戶更方便地全方位觀察物品,可以使物品自動(dòng)旋轉(zhuǎn),將物品的每個(gè)細(xì)節(jié)展示給用戶。具體實(shí)現(xiàn)方法是:添加C#腳本,在腳本中獲取當(dāng)前物體的旋轉(zhuǎn)角度,在相同的時(shí)間周期內(nèi)改變相同的旋轉(zhuǎn)角度,實(shí)現(xiàn)物體的自旋轉(zhuǎn)。
人機(jī)交互模塊由用于人體手勢(shì)識(shí)別的體感傳感器Leap Motion以及用于接收傳感器傳來的人體控制信息的處理器兩個(gè)部分組成。人體在設(shè)備前做出動(dòng)作,利用Leap Motion接收并識(shí)別人體控制信息,初步處理后交由處理器將控制信息轉(zhuǎn)化為計(jì)算機(jī)指令。
Leap Motion是基于計(jì)算機(jī)視覺技術(shù)的三維數(shù)據(jù)追蹤傳感器設(shè)備[4]。它主要由兩個(gè)高幀率攝像頭、LED燈、紅外濾光器以及一片USB3.0芯片組成,傳感器的上下左右的視野范圍大約為150°,其結(jié)構(gòu)如圖6所示。
圖6 Leap Motion結(jié)構(gòu)圖
Leap Motion的可工作范圍大約在設(shè)備前方的25~600 ms。Leap Motion采用兩個(gè)超廣角相機(jī)的快門傳感器,運(yùn)行速度高達(dá)120 fps,是一種更專業(yè)的手勢(shì)采集設(shè)備[5]。
Leap Motion系統(tǒng)采用的是右手笛卡爾坐標(biāo)系。以真實(shí)世界中的毫米為單位返回具體的手勢(shì)數(shù)據(jù)。原點(diǎn)位于Leap Motion控制器的中心。x軸和z軸在控制器的水平面上,x軸則與設(shè)備的長(zhǎng)邊平行,z軸與短邊平行,y軸是垂直的,朝上為軸的正方向。
Leap Motion的基本原理:使用紅外LED燈充當(dāng)主動(dòng)光源,兩個(gè)高清攝像頭從不同角度采集紅外圖像,模擬人體雙目立體視覺原理進(jìn)行手勢(shì)的判斷[6]。
Leap Motion與ZED、Kinect等其他深度傳感器的不同在于它的精度達(dá)0.01 mm,手部微小的運(yùn)動(dòng)也可以捕捉。
3.2.1LeapMotion的工作流程
如圖7所示,交互模塊首先使用紅外雙目攝像頭Leap Motion從兩個(gè)角度拍攝用戶手部圖像,雙目數(shù)據(jù)流達(dá)到120 fps,通過USB3.0高速傳輸?shù)诫娔X處理,通過Leap Motion的SDK處理傳回的雙目信息,計(jì)算出深度信息,對(duì)深度信息中的手進(jìn)行特征分析,最終獲取手勢(shì)數(shù)據(jù)發(fā)布給Leap Motion Service程序,在Unity3D下綁定腳本,通過判斷手指的情況以確定人體當(dāng)前手勢(shì),并執(zhí)行相應(yīng)的程序和動(dòng)作。
圖7 交互功能實(shí)現(xiàn)流程圖
3.2.2具體實(shí)現(xiàn)方法
(1)判斷手掌是否握拳
如圖8所示,輸入對(duì)應(yīng)的手(左手或右手,在Unity3D中為一對(duì)象),對(duì)每個(gè)手指判斷其方向向量與掌心的方向向量之差的距離,若小于閾值則表示手指彎曲,若大于閾值則表示手指伸直,由此遍歷每個(gè)手指。之后判斷彎曲的手指數(shù),若彎曲的手指數(shù)為5,則表示所有的手指彎曲,手掌握拳;若彎曲的手指數(shù)小于5,則表明手掌未握拳,最終返回判斷的結(jié)果。
(2)判斷雙手組合
運(yùn)用圖8中的方法對(duì)左右手進(jìn)行判斷,根據(jù)左手和右手握拳狀態(tài)的不同,控制Unity3D中的任務(wù)進(jìn)行相應(yīng)的動(dòng)作。若左手握拳,右手握拳,則停止運(yùn)動(dòng);若左手握拳,右手不握拳,則右轉(zhuǎn);若左手不握拳,右手握拳,則左轉(zhuǎn);若左手不握拳,右手不握拳,則控制前進(jìn),如圖9所示。
圖9 判斷不同的手勢(shì)組合做出相應(yīng)動(dòng)作
本實(shí)驗(yàn)以城市探索模式為例,進(jìn)行了現(xiàn)場(chǎng)體驗(yàn)測(cè)試。測(cè)試環(huán)境為Windows 10 64位+Unity3D 2017.3。測(cè)試者位于交互全息投影設(shè)備前方,做出不同姿勢(shì),以驗(yàn)證不同人體姿態(tài)識(shí)別分析的準(zhǔn)確性。當(dāng)測(cè)試者左右手做出不同的動(dòng)作時(shí),顯像模型做出相應(yīng)的反應(yīng),如表1所示,速度快而且識(shí)別率高,測(cè)試者能夠流暢地控制全息投影中的人物進(jìn)行城市探索。
表1 不同手勢(shì)系統(tǒng)做出的反應(yīng)
實(shí)驗(yàn)結(jié)果表明,利用Leap Motion能精確地識(shí)別人體動(dòng)作姿勢(shì)信息,通過相應(yīng)的算法及顯像設(shè)備,從而實(shí)現(xiàn)對(duì)全息3D影像中虛擬人物的狀態(tài)、移動(dòng)速度、移動(dòng)方向的控制,充分驗(yàn)證了基于Leap Motion的交互全息投影方法的可行性。
本文提出了一種基于Leap Motion與全息投影技術(shù)的交互全息投影方法。該方法通過采集人體姿態(tài)信息、人體控制信息,通過對(duì)采集到的信息進(jìn)行分析處理來控制全息影像的變換及場(chǎng)景移動(dòng)等,解決了傳統(tǒng)全息投影設(shè)備僅限于全息影像的展示、視頻的播放,無交互效果,用戶體驗(yàn)較差的缺陷,也彌補(bǔ)了其他能夠進(jìn)行交互的設(shè)備僅局限于平面成像、并無立體效果的不足。該方法使用戶可以以第一視角進(jìn)行三維立體影像的觀光體驗(yàn),增強(qiáng)用戶的代入感,提高用戶體驗(yàn),有良好的應(yīng)用前景。