国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ARCore的移動增強(qiáng)現(xiàn)實(shí)應(yīng)用系統(tǒng)設(shè)計

2022-08-02 01:44:34宋燕燕
關(guān)鍵詞:網(wǎng)格化光線平面

宋燕燕

(南京傳媒學(xué)院,江蘇 南京 211172)

0 引 言

增強(qiáng)現(xiàn)實(shí)(augmented reality,AR)是一種結(jié)合虛擬化技術(shù)觀察世界的方式,它利用計算機(jī)技術(shù) 將虛擬的物體實(shí)時地疊加到一個真實(shí)畫面或空間,形成具有實(shí)時交互的三維圖像畫面,給用戶帶來更真實(shí)的體驗(yàn)與感受[1]。在發(fā)展信息時代教育的過程中,現(xiàn)代教育技術(shù)以其先進(jìn)的觀念、手段和方法發(fā)揮著重要的作用。從木制黑板到電動黑板、投影儀、平板電腦、網(wǎng)課教學(xué)等,教育水平和技術(shù)在不斷改善和進(jìn)步。增強(qiáng)現(xiàn)實(shí)這項(xiàng)新興技術(shù)與教育相結(jié)合,可以更加促進(jìn)教育水平的提升,在教育的進(jìn)程上實(shí)現(xiàn)一個飛躍。

谷歌ARCore的工作原理是集成了安卓設(shè)備的加速傳感器、陀螺儀、上下文識別信息等功能[2]。首先ARCore從相機(jī)環(huán)境中甄別出一些可見的特征,并通過手勢追蹤、傳感器傳來的坐標(biāo)位移等,實(shí)現(xiàn)現(xiàn)實(shí)世界與虛擬事物的一個映射功能。AR系統(tǒng)具有三個突出的特點(diǎn):(1)真實(shí)世界和虛擬世界的信息集成;(2)具有實(shí)時交互性;(3)在三維空間中添加和定位虛擬物體。ARCore可以在移動設(shè)備移動時追蹤它們的位置,并且會逐漸利用自己的方式對現(xiàn)實(shí)世界進(jìn)行理解[3-4]。

1 關(guān)鍵技術(shù)

將AR技術(shù)應(yīng)用于移動終端,意味著系統(tǒng)能夠提供以下主要功能模塊:視頻獲取設(shè)備、實(shí)現(xiàn)高精度定位功能的跟蹤裝置、計算機(jī)視覺運(yùn)算功能、3D渲染功能、人機(jī)交互功能[5]。需要綜合考慮如何實(shí)現(xiàn)快速高效的跟蹤定位算法、大場景范圍下的多目標(biāo)標(biāo)識、移動設(shè)備與用戶可見的自然交互等多方面的技術(shù)問題。

1.1 運(yùn)動跟蹤

Klein等在Davison研究的基礎(chǔ)上提出并行的跟蹤定位與地圖創(chuàng)建算法[7],并應(yīng)用于增強(qiáng)現(xiàn)實(shí)系統(tǒng)中。將SLAM系統(tǒng)分為跟蹤和制圖兩個流程,跟蹤定位的目的是在地圖中估計攝像機(jī)的位置,地圖創(chuàng)建的目的是利用跟蹤獲得的攝像機(jī)位置將圖像上的特征點(diǎn)三角化得到空間坐標(biāo),對地圖進(jìn)行優(yōu)化,最終得到空間點(diǎn)的最優(yōu)估計。其地圖創(chuàng)建的流程如圖1所示。

圖1 地圖創(chuàng)建流程

目前使用的大部分視覺SLAM系統(tǒng)都是基于Klein提出的并行的跟蹤定位與地圖創(chuàng)建算法框架改進(jìn)而來。Mur-Artal等[8]于2015年提出ORB -SLAM,是現(xiàn)代SLAM系統(tǒng)中做的非常完善的系統(tǒng)之一。跟蹤線程負(fù)責(zé)對每幅圖像提取ORB特征點(diǎn),并與最近的關(guān)鍵幀進(jìn)行比較,計算特征點(diǎn)的位置并估計相機(jī)位姿。

目前通過光學(xué)攝像機(jī)可實(shí)現(xiàn)平面矩形圖案、二維編碼、自然圖像以及立體物體的實(shí)時識別追蹤?;诠鈱W(xué)或深度攝像機(jī)的圖像實(shí)時識別追蹤會確保增強(qiáng)現(xiàn)實(shí)應(yīng)用的穩(wěn)定性,因此它對識別追蹤的速度、準(zhǔn)確性、環(huán)境光的適應(yīng)能力,對識別多標(biāo)識同時追蹤的容錯能力有極高的要求。

提高基于圖像識別追蹤增強(qiáng)現(xiàn)實(shí)應(yīng)用性能的方法有[9-10]:利用圖像分割與光流法相結(jié)合,高效與準(zhǔn)確的運(yùn)動捕捉,快速運(yùn)動模糊圖像中識別標(biāo)識;通過平面自然圖像特征點(diǎn)的離線與在線,進(jìn)行實(shí)時訓(xùn)練來提高自然圖像識別的速度與適應(yīng)性;使用位移與旋轉(zhuǎn)運(yùn)動平滑過濾器,來減少圖像識別誤差帶來的抖動影響;通過實(shí)時檢測現(xiàn)實(shí)環(huán)境亮度并對圖像亮度閾值進(jìn)行調(diào)整來實(shí)現(xiàn)在不同光線條件下的自適應(yīng)能力等。

1.2 環(huán)境理解

當(dāng)移動AR技術(shù)被用在大范圍環(huán)境或者需要對場景中的物體進(jìn)行信息增強(qiáng)時,系統(tǒng)只需識別當(dāng)前場景中的目標(biāo),并將相應(yīng)的虛擬信息疊加顯示在圖像中。

1.2.1 環(huán)境理解的關(guān)鍵點(diǎn)

(1)幀(Frame)。

即相機(jī)獲取的一幀圖像。在ARCore中,幀包含更豐富的內(nèi)容,提供了某一個時刻AR的狀態(tài)[11]。這些狀態(tài)包括:當(dāng)前幀的環(huán)境光線,在繪制內(nèi)容的時候根據(jù)光線控制物體的顏色;當(dāng)前幀中檢測到的特征點(diǎn)云和它的位置用來繪制點(diǎn)云;當(dāng)前幀中包含的錨點(diǎn)和二維平面集合用于繪制內(nèi)容和平面;設(shè)備當(dāng)前的位置、幀獲取的時間點(diǎn)、AR跟蹤狀態(tài)等[12-13]。

(2)特征點(diǎn)云(PointCloud)。

系統(tǒng)在檢測平面的時候,顯示的白色小點(diǎn)就是特征點(diǎn)云。特征點(diǎn)云包含了被觀察到的三維點(diǎn)和中心值的集合以及被ARCore檢測到的時間。

(3)二維平面(Plane)。

ARCore中所有的內(nèi)容,都要依靠平面類進(jìn)行渲染。系統(tǒng)中的虛擬物體只有在檢測到網(wǎng)格的地方才能放置。

ARCore中平面可分為水平朝上、朝下和非水平平面類型。其描述了對一個真實(shí)世界二維平面的認(rèn)知、平面的中心點(diǎn)、x和z軸方向長度以及組成平面多邊形的頂點(diǎn)。ARCore檢測到的平面分為三種狀態(tài):正在跟蹤、可恢復(fù)跟蹤和永不恢復(fù)跟蹤。如果是沒有正在跟蹤的平面,包含的平面信息可能不準(zhǔn)確。如果發(fā)生兩個或者多個平面被自動合并成一個父平面,可以通過子平面找到它的父平面。

(4)平面交集(PlaneHitResult)。

點(diǎn)擊平面的時候,從設(shè)備點(diǎn)擊開始手機(jī)朝向方向發(fā)出一條射線,看下和被檢測平面是否有交集。HitResult就是射線和真實(shí)世界幾何體的交集。如果是平面交集就是PlaneHitResult,如果是點(diǎn)云就是PoinCludHitResult。PlaneHitResult中可以判斷交集點(diǎn)是否在被檢測的集合范圍內(nèi),是否在平面的正面。

(5)錨點(diǎn)(Anchor)。

每個物體的位置就是Anchor。Anchor位置會隨著手機(jī)或者攝像頭的位置變化而變化,這樣才能保持“位置不變”。Anchor描述了在現(xiàn)實(shí)世界中的固定位置和方向。

這個位置的數(shù)值描述將會隨著ARCore對空間理解的改進(jìn)而更新,使其保持在物理空間的固定位置。使用getPose( )獲取當(dāng)前數(shù)值位置,這個位置每次被調(diào)用的時候都可能會改變,但不會自發(fā)地改變。

(6)空間位置(Pose)。

Pose表示從一個坐標(biāo)系,到另一個坐標(biāo)系的精確的轉(zhuǎn)換。在所有的ARCore APIs中,Pose總是描述從物體的局部坐標(biāo)系到世界坐標(biāo)系的變換,來自ARCore API的Pose被認(rèn)為等同于OpenGL模型矩陣。

1.2.2 網(wǎng)格化與環(huán)境

網(wǎng)格化與環(huán)境是能夠識別對象的特征或是理解用戶環(huán)境的基礎(chǔ),利用這些特征來幫助識別平面。ARCore可通過網(wǎng)格化技術(shù)來自動識別表面,在其跟蹤表面的過程中,需要多次執(zhí)行網(wǎng)格化。

網(wǎng)格是一個顯示多邊形和構(gòu)成該多邊形的頂點(diǎn)有序集合的嵌入圖形[14]。頂點(diǎn)的順序是沿逆時針方向連接,這些點(diǎn)的連接順序會導(dǎo)致表面朝向的網(wǎng)格亮暗不同。渲染一個場景時只會看到朝向相機(jī)的表面,而遠(yuǎn)離相機(jī)的表面就會被去除或剔除,連接這些點(diǎn)的順序稱為纏繞。

網(wǎng)格化是指獲取特征點(diǎn)集合并從中構(gòu)建網(wǎng)格的過程,然后生成的網(wǎng)格通常設(shè)置陰影并渲染到場景中,由ARCore生成并放置表面或平面的網(wǎng)格。網(wǎng)格化算法過程如圖2所示。

圖2 網(wǎng)格化算法過程

1.3 光線估計

光線估計是一種復(fù)制現(xiàn)實(shí)世界中的光線條件并將其應(yīng)用到三維虛擬對象上的技術(shù)[15-16]。ARCore利用圖像分析技術(shù)從攝像機(jī)采集的圖像中讀取光線強(qiáng)度,并將其轉(zhuǎn)換成全局光強(qiáng)度或顏色值,以及著色器上設(shè)置的光線的值。程序處理包括漫游方式、交互功能等。以往的瞬時移動可能會讓體驗(yàn)者在頻繁切換的場景中迷失方向,因此需要改善移動方式。交互功能一般情況下采用觸碰的方式。而晝夜切換是在程序中預(yù)設(shè)晝夜變換系統(tǒng),通過光照來感知。

2 ARCore原理

利用移動設(shè)備攝像機(jī)來實(shí)現(xiàn)設(shè)備的移動跟蹤,包括陀螺儀、電子羅盤、加速度計、相機(jī)視覺信息、SLAM算法等[17],采用PL-VIO[18]等算法利用點(diǎn)和線特征的緊密耦合的單目視覺慣性里程計系統(tǒng),利用視覺慣性測距環(huán)境理解來識別水平和垂直平面,通過光線估計估算光源的角度和強(qiáng)度。

2.1 架構(gòu)原理

ARCore在運(yùn)行時兩路通道會同時打開,運(yùn)用SLAM算法來支持分析原因。在SLAM算法中,視野越大效果越好,用于SLAM運(yùn)算的通道是用其中一路來進(jìn)行渲染。

Session類是SDK對外接口的核心,用來封裝相機(jī)預(yù)覽到的現(xiàn)實(shí)世界和手機(jī)慣性傳感器信息。通過Session的核心算法,來獲取特征點(diǎn)、平面、光照估計等。

Ancho類描述了建模的物體在現(xiàn)實(shí)世界中的固定位置和方向。這個位置的數(shù)字描述信息會改變,它會隨著自身對空間更新的理解而不斷地改進(jìn)。

Pose類表示從一個坐標(biāo)空間到另一個坐標(biāo)空間位置不變的轉(zhuǎn)換。

LightEstimate類保存真實(shí)場景中光照的估計信息。

Trackable接口類使ARCore與錨點(diǎn)綁定在一起并且可以進(jìn)行跟蹤。

Camera類用于捕獲圖像的攝像頭信息。Camera是一個長期存活的對象,每次調(diào)用Session.update() 都會更新Camera的屬性。

2.2 ARCore核心方法

ARCore核心方法如下:

(1)public Session(Context context):通過Session獲取幀和平面。

(2)public void resume:打開相機(jī)和慣性傳感器設(shè)備獲取信息和執(zhí)行核心算法。

(3)public Frame update:從Session中得到幀,包含特征點(diǎn)、姿態(tài)、光照、圖像等信息。

(4)public void setCameraTextureName(int textId):獲取現(xiàn)實(shí)世界的紋理ID。

(5)public Collection getAllAnchors:獲取所有錨點(diǎn)。

(6)getAllTrackables(Class trackable):獲取所有繼承的平面和點(diǎn)。

(7)public Anchor createAnchor(Pose var1):根據(jù)空間位置創(chuàng)建錨點(diǎn)。

(8)public List getSupported -CameraConfigs:獲取相機(jī)所有的支持項(xiàng)。

(9)frame.getLightEstimate(). getColor -Correction (colorCorrectionRgba,0):獲取光線。

(10)PointCloud pointCloud=frame.Acquire -PointCloud:獲取點(diǎn)云。

(11)backgroundRenderer.draw(frame):根據(jù)模型矩陣、光照估計、投影矩陣?yán)L制虛擬物體。

ARCore的核心算法使虛擬環(huán)境在現(xiàn)實(shí)中更加真實(shí)。

3 系統(tǒng)設(shè)計

采用ARCore進(jìn)行核心方法設(shè)計,實(shí)現(xiàn)移動平臺上的場景可視化與互動教學(xué)。系統(tǒng)設(shè)計方案如圖3所示。

圖3 系統(tǒng)設(shè)計方案

利用ARCore構(gòu)建Android Unity和Wech平臺下的增強(qiáng)現(xiàn)實(shí),基于Firebase的跟蹤服務(wù)能夠跟蹤用戶的運(yùn)動,實(shí)現(xiàn)在多個應(yīng)用程序跟蹤用戶,或同時跟蹤多個用戶,編寫服務(wù)器程序、建立數(shù)據(jù)庫、制定一種架構(gòu)模式。在移動增強(qiáng)現(xiàn)實(shí)應(yīng)用系統(tǒng)建模的制作過程中,前期要收集整理項(xiàng)目資料以及需要項(xiàng)目的架構(gòu)圖,并且對真實(shí)環(huán)境進(jìn)行數(shù)據(jù)采集。

3.1 ARCore的可視化運(yùn)動跟蹤

ARCore通過實(shí)時跟蹤用戶來具體使用跟蹤服務(wù),并在AR應(yīng)用程序中建立可視化跟蹤數(shù)據(jù)。設(shè)置一個重復(fù)計時器,使之每秒調(diào)用一個匿名函數(shù)。這樣是為了跟蹤每秒的運(yùn)動,也可以像在多人游戲中那樣跟蹤每一幀運(yùn)動。最后在設(shè)備的瀏覽器中運(yùn)行,可以讓設(shè)備四處移動。切換到數(shù)據(jù)庫終端,可觀察到數(shù)據(jù)流進(jìn)入數(shù)據(jù)庫。任意擴(kuò)展數(shù)據(jù)點(diǎn),并查看捕獲的數(shù)據(jù)值,就可以看到采集的數(shù)據(jù)了。把這些數(shù)據(jù)在二維或三維中進(jìn)行可視化,利用發(fā)送到數(shù)據(jù)庫的相同數(shù)據(jù)來繪制用戶經(jīng)過的三維路徑。核心代碼如圖4所示。

圖4 可視化核心代碼

調(diào)用THREE.LineBasicMaterial創(chuàng)建一條基準(zhǔn)線material,并賦予十六進(jìn)制的顏色值。接下來,根據(jù)當(dāng)前的pos和lastPos變量以及material創(chuàng)建 geometry,即line。利用每個位置上x、y和z的值構(gòu)建Vector3對象來實(shí)現(xiàn)。最后,利用scene add(line)函數(shù)在場景中添加line。當(dāng)利用設(shè)備四處運(yùn)動時就會有一條可視化運(yùn)動軌跡的藍(lán)色的線。ARCore中的運(yùn)動跟蹤是通過識別和跟蹤用戶周圍的可識別特征來完成的,然后利用這些點(diǎn)以及設(shè)備的朝向和加速度傳感器保持跟蹤更新。如果沒有這些信息,就無法實(shí)現(xiàn)準(zhǔn)確跟蹤。

3.2 環(huán)境理解與交互

ARCore可以提供在用戶周圍識別到的特征點(diǎn)和平面,并且根據(jù)這些識別點(diǎn)或平面,生成虛擬對象。由于ARCore可以跟蹤這些點(diǎn)和平面,因此在用戶移動對象時,附著在平面上的虛擬對象應(yīng)保持固定不變。

通過USB或遠(yuǎn)程將設(shè)備與開發(fā)機(jī)器相連,在設(shè)備上構(gòu)建和運(yùn)行應(yīng)用系統(tǒng)。繪制點(diǎn)云數(shù)據(jù)需要花費(fèi)一段時間,并且隨著點(diǎn)的個數(shù)的增加,在一個方向保持設(shè)備的時間就越長。這些點(diǎn)表示用于跟蹤和解釋環(huán)境的可識別特征點(diǎn)。放置對象用光線投射技術(shù),光線投射技術(shù)可在兩個維度上獲取觸摸點(diǎn),并向場景投射光線,然后該射線測試場景中產(chǎn)生碰撞的其他對象。

3.3 光線方向估計

ARCore根據(jù)來自設(shè)備的當(dāng)前圖像,通過圖像分析算法確定光線強(qiáng)度,并作為全局光線用于三維對象。通過Shader.SetGlobalFloat(“_ GlobalLight -Estimation”, 1.0f)語句,將著色器變量設(shè)為1,也就是將光線強(qiáng)度設(shè)為1.0。調(diào)用Frame.LightEstimate. PixelIntensity,從相機(jī)讀取圖像確定當(dāng)前像素強(qiáng)度,并歸一化處理。最終通過線性模型進(jìn)行光線估計。光線方向的估計也是利用Frame.LightEstimate. PixelIntensity讀取相機(jī)方向的光強(qiáng)度,檢查該值是否小于之前的所有值,如果小于,則在相機(jī)的相反方向上旋轉(zhuǎn)光線。

在互動教學(xué)中,可以將攝像頭對準(zhǔn)任何平面,生成網(wǎng)格化平面的效果如圖5所示,利用數(shù)據(jù)顯示運(yùn)動軌跡,點(diǎn)擊平面后疊加虛擬場景,通過觸摸移動事件和表面跟蹤,在場景放置物體(如椅子)并進(jìn)行位置調(diào)節(jié)等完成室內(nèi)空間的布局,如圖6所示。

圖5 生成網(wǎng)格化平面

圖6 虛擬場景互動效果

4 結(jié)束語

現(xiàn)在人工智能和增強(qiáng)現(xiàn)實(shí)技術(shù)在社會中的地位穩(wěn)步上升,這些領(lǐng)域的核心關(guān)鍵技術(shù)在逐步實(shí)現(xiàn)突破。SLAM跟蹤定位給增強(qiáng)現(xiàn)實(shí)在構(gòu)建完整地圖提供了良好的開端,采用ARCore進(jìn)行架構(gòu)和核心方法設(shè)計,通過運(yùn)動追蹤和定位,環(huán)境理解及光線估計計算出虛擬世界與現(xiàn)實(shí)世界坐標(biāo)系的對應(yīng)關(guān)系,進(jìn)行移動增強(qiáng)現(xiàn)實(shí)應(yīng)用系統(tǒng)設(shè)計,實(shí)現(xiàn)交互體驗(yàn)。在這些應(yīng)用系統(tǒng)設(shè)計中,不希望跟蹤定位等占用所有計算資源,所以對小型化和輕量化提出了強(qiáng)烈的需求。另一方面,利用高性能計算設(shè)備實(shí)現(xiàn)精密的三維重建和場景理解成為必然。未來將和深度學(xué)習(xí)技術(shù)結(jié)合,為構(gòu)建準(zhǔn)確的語義地圖打下基礎(chǔ),將神經(jīng)網(wǎng)絡(luò)方法引入到物體識別和分割,甚至位姿估計和檢測中,使增強(qiáng)現(xiàn)實(shí)系統(tǒng)能夠在各種干擾的條件下穩(wěn)定運(yùn)行。

猜你喜歡
網(wǎng)格化光線平面
春日暖陽
以黨建網(wǎng)格化探索“戶長制”治理新路子
奮斗(2021年9期)2021-10-25 05:53:02
“你看不見我”
中外文摘(2019年8期)2019-04-30 06:47:36
城市大氣污染防治網(wǎng)格化管理信息系統(tǒng)設(shè)計
化解難題,力促環(huán)境監(jiān)管網(wǎng)格化見實(shí)效
參考答案
網(wǎng)格化城市管理信息系統(tǒng)VPN方案選擇與實(shí)現(xiàn)
關(guān)于有限域上的平面映射
淘氣的光線
流動的光線
天峨县| 南汇区| 类乌齐县| 江门市| 澄迈县| 诏安县| 绥棱县| 洛扎县| 河南省| 遵化市| 沈丘县| 宁明县| 习水县| 吉隆县| 福泉市| 绥德县| 搜索| 虹口区| 农安县| 博兴县| 平度市| 葫芦岛市| 新绛县| 台南县| 岫岩| 灵武市| 衡阳县| 萝北县| 武宁县| 井研县| 五常市| 甘谷县| 金山区| 塔城市| 调兵山市| 古丈县| 澎湖县| 黎城县| 兴城市| 清水河县| 鹤岗市|