本發(fā)明屬于增強(qiáng)現(xiàn)實領(lǐng)域,具體涉及一種基于增強(qiáng)現(xiàn)實的虛擬現(xiàn)實實現(xiàn)方法。
背景技術(shù):
虛擬現(xiàn)實(virtualreality,以下簡稱vr)技術(shù)是一種可以創(chuàng)建和體驗虛擬世界的計算機(jī)仿真系統(tǒng),它利用計算機(jī)生成一種模擬環(huán)境,是一種多源信息融合的、交互式的三維動態(tài)視景和實體行為的系統(tǒng)仿真,使用戶沉浸到該環(huán)境中。
增強(qiáng)現(xiàn)實技術(shù)(augmentedreality,簡稱ar),是一種實時地計算攝影機(jī)影像的位置及角度并加上相應(yīng)圖像、視頻、3d模型的技術(shù),這種技術(shù)的目標(biāo)是在屏幕上把虛擬世界套在現(xiàn)實世界并進(jìn)行互動。這種技術(shù)1990年提出。隨著隨身電子產(chǎn)品cpu運(yùn)算能力的提升,預(yù)期增強(qiáng)現(xiàn)實的用途將會越來越廣。
進(jìn)入21世紀(jì)以來,虛擬現(xiàn)實技術(shù)已經(jīng)有了較快的發(fā)展,在軍事訓(xùn)練、醫(yī)療教育等領(lǐng)域逐漸獲得應(yīng)用。2014年以來,隨著新一代的技術(shù)的到來,虛擬現(xiàn)實設(shè)備成本大幅度下降,重量、體積也大大降低。學(xué)術(shù)界和工業(yè)界都逐漸意識到,虛擬現(xiàn)實技術(shù)將對未來的發(fā)展產(chǎn)生重大的影響。在工業(yè)界,虛擬現(xiàn)實技術(shù)有望全面取代基于顯示屏的電影和游戲產(chǎn)業(yè)。在學(xué)術(shù)界,虛擬現(xiàn)實技術(shù)作為未來重要的顯示終端,將大大影響計算機(jī)圖形學(xué)技術(shù)的發(fā)展。
在虛擬現(xiàn)實技術(shù)的基礎(chǔ)上,將虛擬事件與現(xiàn)實世界無縫拼接,同時呈現(xiàn)在人類面前的技術(shù)稱為增強(qiáng)現(xiàn)實技術(shù)。許多國際大公司都發(fā)現(xiàn)了其不可估量的市場潛力和價值,并投下重金打造自己的產(chǎn)品。例如,谷歌的googleglass、微軟的hololens等等。種種事件都表明增強(qiáng)現(xiàn)實技術(shù)充滿了巨大的機(jī)遇。
目前增強(qiáng)現(xiàn)實技術(shù)中存在的三個主要難點:一是將現(xiàn)實場景與虛擬物體進(jìn)行融合顯示,需要新型的顯示技術(shù);二是由于要與現(xiàn)實場景融合,需要準(zhǔn)確地對場景建立三維模型,以便在此基礎(chǔ)上準(zhǔn)確地顯示虛擬物體,相對于彩色雙目攝像頭系統(tǒng),本計算機(jī)視覺系統(tǒng)采用彩色與深度傳感器融合的方式,能夠更加準(zhǔn)確的得到場景的三維模型信息以及各個像素對應(yīng)的顏色信息,在進(jìn)行三維場景測量時大大節(jié)約了計算代價以及增加了準(zhǔn)確性,這需要強(qiáng)大的計算機(jī)視覺測量硬件能力的基礎(chǔ)以及準(zhǔn)確、快速的算法計算出需要呈現(xiàn)的圖像;三是為了使增強(qiáng)現(xiàn)實技術(shù)走入人們的日常生活,需要進(jìn)一步開發(fā)基于手勢,動作,語音的自由交互技術(shù)。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是針對現(xiàn)有技術(shù)的不足,結(jié)合了智能手機(jī)、虛擬現(xiàn)實頭盔、深度攝像頭以及彩色攝像頭。提供一種基于增強(qiáng)現(xiàn)實的虛擬現(xiàn)實實現(xiàn)方法。
首先通過深度攝像頭和彩色攝像頭采集rgb-d(即彩色圖像rgb與深度圖像depth信息融合后的四通道圖像的簡稱),在生成rgb-d圖像的過程中,需要執(zhí)行三個必要的操作:1.采集深度圖像、彩色圖像。2.標(biāo)定深度攝像頭、彩色攝像頭的攝像頭內(nèi)參、外參。3.對深度圖像、彩色圖像進(jìn)行對齊,得到rgb-d圖像數(shù)據(jù),在此數(shù)據(jù)的基礎(chǔ)上,本發(fā)明通過機(jī)器學(xué)習(xí),識別出現(xiàn)實場景中的目標(biāo)物體,便于獲取物體的信息。并通過邊緣檢測和對角線判定等一系列方法識別場景中的平面結(jié)構(gòu),使系統(tǒng)可以基于平面結(jié)構(gòu)在場景中生成目標(biāo)物體的虛擬三維模型。接著,本發(fā)明將獲取了虛擬信息的圖像結(jié)合rgb-d數(shù)據(jù),在智能手機(jī)上生成雙目視圖。之后,本發(fā)明通過虛擬現(xiàn)實頭盔,就可以看到現(xiàn)實場景和虛擬物體。
具體按照以下步驟實施:
步驟一、相機(jī)標(biāo)定配準(zhǔn)。
首先對輸入的場景的rgb與depth圖像序列進(jìn)行預(yù)處理,以實現(xiàn)用棋盤格標(biāo)定法對相機(jī)進(jìn)行標(biāo)定。轉(zhuǎn)化矩陣如下:
其中s代表深度相機(jī)的縮放因子,u、v是彩色相機(jī)像平面的橫坐標(biāo)和縱坐標(biāo),a是彩色相機(jī)的內(nèi)參矩陣,r1r2r3代表旋轉(zhuǎn)向量,t是位移向量,x、y是現(xiàn)實三維空間中橫坐標(biāo)和縱坐標(biāo)。
深度相機(jī)和彩色相機(jī)的標(biāo)定,使得兩個相機(jī)獲得的像素之間產(chǎn)生對應(yīng)關(guān)系,相機(jī)標(biāo)定之后無需對接下來獲取到的每一幀圖片進(jìn)行配準(zhǔn)處理,只要直接將相機(jī)獲取的rgb與depth圖像序列輸入相機(jī)標(biāo)定過程中得到的配準(zhǔn)模型便可獲取rgb-d圖像序列。
步驟二、相機(jī)定位。
2-1.利用orb特征提取算法對rgb-d圖像序列兩幀間圖片的特征點進(jìn)行提取,并對得到的特征點進(jìn)行特定描述,從而得到兩幀間圖片的特征點相似程度。
2-2.根據(jù)所描述的兩幀之間特征點相似程度,實現(xiàn)相鄰兩幀圖片的關(guān)鍵點匹配,再對匹配后的特征點進(jìn)行檢測,如果為誤匹配,則刪除不匹配的關(guān)鍵點,重新對相鄰兩幀圖片的關(guān)鍵點進(jìn)行匹配;如果匹配正確,則建立優(yōu)化模型計算出相鄰兩幀圖片間相機(jī)的空間位置變化,即相機(jī)的旋轉(zhuǎn)矩陣ei與平移向量gi。優(yōu)化模型如下:
其中,pi和qi分別是相鄰兩幀圖像的特征點,都包含rgb-d信息,都是以三維矩陣形式進(jìn)行存儲,具體的大小視匹配所得的特征點對的數(shù)量而定;n為rgb-d四通道圖像序列的總幀數(shù)。ei是大小為3×3的旋轉(zhuǎn)矩陣,gi是大小為3×1的平移向量。
所述的特定描述和相鄰兩幀圖片的關(guān)鍵點匹配參考o(jì)rb特征提取算法:rubleee,rabaudv,konoligek,etal.orb:anefficientalternativetosiftorsurf[c]//ieeeinternationalconferenceoncomputervision,iccv2011,barcelona,spain,november.dblp,2011:2564-2571.
步驟三、場景布局識別。
首先通過邊緣檢測和對角線判定等一系列方法對場景的rgb-d四通道圖像序列進(jìn)行處理,識別出場景中的地板、桌子、墻壁等平面結(jié)構(gòu)并得到其在三維空間中的位置信息,對平面結(jié)構(gòu)特征點的跟蹤實現(xiàn)對平面結(jié)構(gòu)在視頻中的跟蹤。為后期在場景中重建出虛擬物體奠定基礎(chǔ)。并獲取通過機(jī)器學(xué)習(xí)的方法識別出的場景中的物體信息,便于用戶對未知物體信息的檢索。
步驟四、雙目視圖生成階段。
當(dāng)已知實際環(huán)境的三維模型之后,能夠?qū)⑾袼赝队暗?d空間(即實際環(huán)境三維模型的狀態(tài)空間);估計人眼相機(jī)參數(shù),將3d空間(即實際環(huán)境三維模型的狀態(tài)空間)進(jìn)行投影變換轉(zhuǎn)換成雙目視圖。
步驟五、虛擬現(xiàn)實實現(xiàn)階段。
該步驟結(jié)合其他步驟輸出的結(jié)果實現(xiàn)虛擬三維模型呈現(xiàn)于現(xiàn)實場景中的效果。首先,通過步驟四,將相機(jī)采集到的rgb-d場景圖像轉(zhuǎn)換為雙目視圖,并將該雙目視圖呈現(xiàn)于手機(jī)屏幕上,然后將手機(jī)置于虛擬現(xiàn)實頭盔中,達(dá)到直接佩戴虛擬現(xiàn)實頭盔即可觀看到現(xiàn)實場景的效果。隨后,通過步驟三識別出場景中的地板、桌子、墻壁等平面結(jié)構(gòu)并得到其所在三維空間中的位置信息,然后根據(jù)該位置信息將目標(biāo)虛擬三維模型構(gòu)建于該平面上;隨著相機(jī)的移動,通過步驟二實時得到相機(jī)的旋轉(zhuǎn)矩陣和平移向量,并將其作用于虛擬三維模型上,使之與所附著的平面結(jié)構(gòu)呈現(xiàn)相對靜止的狀態(tài),進(jìn)而達(dá)到虛擬物體自然放置于平面上的效果。當(dāng)此平面結(jié)構(gòu)脫離視線時,虛擬三維模型也將在視野里消失。當(dāng)再次識別到平面結(jié)構(gòu)時,將會再次生成虛擬三維模型。
本發(fā)明方法具有的優(yōu)點及有益結(jié)果為:
1、本發(fā)明的應(yīng)用范圍極廣:在教育領(lǐng)域,本發(fā)明可應(yīng)用于講師上課,為學(xué)生展示模型,幫助講師講解,方便學(xué)生理解;在醫(yī)療領(lǐng)域,本發(fā)明可以為手術(shù)臺周圍旁觀的實習(xí)醫(yī)生提供幫助。在娛樂的角度上,本發(fā)明可以在此基礎(chǔ)開發(fā)逼真的游戲。這項技術(shù)能彌補(bǔ)許多行業(yè)的缺點,應(yīng)用廣泛。在國外,實習(xí)醫(yī)生通過佩戴3d眼鏡來觀摩手術(shù),以此達(dá)到身處其境的效果;在影視領(lǐng)域,采用虛擬現(xiàn)實和增強(qiáng)現(xiàn)實技術(shù)的游戲、電影也越來越多,這為人們提供了一種全新的娛樂方式,增添了許多樂趣;在軍事領(lǐng)域,本發(fā)明可以給軍事訓(xùn)練帶來更逼真的效果,甚至在實戰(zhàn)中,可以模擬出敵方場景,用以戰(zhàn)略部署;在建筑行業(yè),本發(fā)明可以向客戶展示實體效果,無需到實地參觀便會有身臨其境的感覺;在其他領(lǐng)域,本發(fā)明也可以向用戶做遠(yuǎn)程真實展示,給人類帶來極大的便利??梢姡景l(fā)明具有寬廣的應(yīng)用范圍;
2、本發(fā)明可以解決模型問題
在如今的教育中,許多模型因無法展示或者無法分解展示,使得老師對其難以講解,也使學(xué)生難以理解。這對教育產(chǎn)生了極大的不便。而本發(fā)明的系統(tǒng)則可以通過增強(qiáng)現(xiàn)得方式展示模型,同時通過虛擬現(xiàn)實的方式使得用戶能夠“真實”地看到模型。
3、本發(fā)明可以推進(jìn)醫(yī)療水平提高,
本發(fā)明可以幫助實習(xí)醫(yī)生更方便、更清楚地觀摩醫(yī)生做手術(shù),讓實習(xí)醫(yī)生能夠盡快上崗。同時,該設(shè)備還可以在術(shù)后讓醫(yī)生再次逼真地看到實驗場景,對手術(shù)操作進(jìn)行討論,從而提高醫(yī)生的能力。
4、本發(fā)明可以增進(jìn)人與人之間的交流
語音通話、視頻聊天的出現(xiàn)讓人們之間的溝通更加方便,縮短了人與人之間的距離。但是,這兩樣技術(shù)都難免讓人感覺對方不在自己身邊。而通過本發(fā)明的設(shè)備,可以讓對方的身影實時地出現(xiàn)在自己面前。通過這種方式,可以促進(jìn)親友間的交流,讓聊天更加溫馨,滿足對遠(yuǎn)方親友的思念之情。
5、本發(fā)明可以提供新的紀(jì)念方式
大多數(shù)人通過拍攝照片或者視頻來紀(jì)念某個瞬間或者事情,而現(xiàn)在本發(fā)明可以出去新的方式來回顧往事。本發(fā)明可以事先拍攝好含有rgb-d信息的視頻,然后通過該設(shè)備播放此段視頻。這樣子就能將視頻內(nèi)容逼真地投射到自己眼前,仿佛正在自己面前發(fā)生一樣。
6、本發(fā)明可以軍事上增加新的訓(xùn)練項目
培養(yǎng)一名優(yōu)秀的士兵需要非常昂貴的成本。為了解決士兵一上戰(zhàn)場就不知所措的情況,軍隊往往會進(jìn)行多次的實戰(zhàn)演習(xí)或者模擬戰(zhàn)場。有時候會對資源造成浪費,對環(huán)境造成破壞,而且容易發(fā)生傷亡。但是通過本發(fā)明的設(shè)備,本發(fā)明可以適當(dāng)模擬戰(zhàn)爭情景,例如有飛機(jī)從空中飛過,有導(dǎo)彈即將墜落,有敵軍正在進(jìn)攻等等,這樣就可以訓(xùn)練士兵的反應(yīng)能力、膽量,同時大大地節(jié)約了成本。
附圖說明
圖1是本發(fā)明的系統(tǒng)算法總體流程圖;
圖2是本發(fā)明的相機(jī)定位階段流程圖;
圖3是本發(fā)明的場景平面識別階段流程圖;
圖4是本發(fā)明的雙目視圖生成階段流程圖。
具體實施方式
下面結(jié)合具體實施方式對本發(fā)明進(jìn)行詳細(xì)的說明。
本發(fā)明提出的基于增強(qiáng)現(xiàn)實的虛擬現(xiàn)實實現(xiàn)方法,按照以下步驟實施。其中圖1為整體流程圖。
步驟一、相機(jī)標(biāo)定配準(zhǔn)。
將深度相機(jī)structuresensor與智能手機(jī)連接并將其固定于ipad之上,使其與智能手機(jī)自帶彩色攝像頭的相對位置保持不變,首先用棋盤格標(biāo)定法獲取相機(jī)的內(nèi)外參數(shù)對相機(jī)進(jìn)行校正,并對兩種不同傳感器獲取到的rgb與depth圖像進(jìn)行預(yù)處理,通過一定的算法獲取圖片中物體的特征點,并通過如下方法對每一幀獲取到的兩種圖片進(jìn)行配準(zhǔn):
數(shù)學(xué)模型:
通過之前的內(nèi)參標(biāo)定工作,得到了深度相機(jī)和彩色相機(jī)的內(nèi)參矩陣,彩色相機(jī)和深度相機(jī)的外參也可以通過世界坐標(biāo)系(棋盤格)計算得出。
內(nèi)參矩陣:
外參矩陣:
世界坐標(biāo)系與相機(jī)坐標(biāo)系的變換(齊次形式):
相機(jī)坐標(biāo)系與像素坐標(biāo)系的變換(深度相機(jī)齊次形式):
rgb-d對齊的目的是將深度圖像中描述同一物體的像素放到彩色圖像中的對應(yīng)位置上。
通過以上幾個式子,我們可以通過深度圖像直接還原出世界坐標(biāo)系下的三維點云。再通過投影變換將三維點云投影到彩色相機(jī)的像素坐標(biāo)系內(nèi),就可以得到深度圖像中某個像素與彩色圖像中某個像素的對應(yīng)關(guān)系。
1-1:對深度圖中的一個像素點d(ud,vd)計算深度相機(jī)坐標(biāo)系下的坐標(biāo)。
其中:
1-2:還原該像素點d(ud,vd)的三維坐標(biāo)(世界坐標(biāo)系)。
1-3:通過該深度圖像所對應(yīng)的世界坐標(biāo)系中的點坐標(biāo),計算彩色相機(jī)坐標(biāo)系下的坐標(biāo)。
1-4:將世界坐標(biāo)系下的點坐標(biāo)變換到彩色相機(jī)坐標(biāo)系下的點坐標(biāo)。
1-5:將彩色相機(jī)坐標(biāo)系下的點投影變換到彩色圖像的像素坐標(biāo)系下。
1-6:將深度像素的值放到對應(yīng)像素位置,完成對齊。
d‘(urgb,vrgb)=d(ud,vd)
對第二到第四步進(jìn)行簡化計算。
由于已知了深度相機(jī)和彩色相機(jī)的外參矩陣w1、w2,
w2to1=w1-w2
以此方法可以減少計算量,即不需要計算世界坐標(biāo)系中的坐標(biāo)。
待深度圖片和彩色圖片配準(zhǔn)之后,將深度圖片和彩色圖片合成為一幅四通道圖像序列,此時得到的是帶深度信息的彩色圖像即前文提到的rgb-d圖像序列。
步驟二、相機(jī)定位,參看圖2。
2-1.利用orb特征提取算法對rgb-d圖像序列兩幀間圖片的特征點進(jìn)行提取,并對得到的特征點進(jìn)行特定描述,從而得到兩幀間圖片的特征點相似程度。
2-2.根據(jù)所描述的兩幀之間特征點相似程度,實現(xiàn)相鄰兩幀圖片的關(guān)鍵點匹配,再對匹配后的特征點進(jìn)行檢測,如果為誤匹配,則刪除不匹配的關(guān)鍵點,重新對相鄰兩幀圖片的關(guān)鍵點進(jìn)行匹配;如果匹配正確,則建立優(yōu)化模型計算出相鄰兩幀圖片間相機(jī)的空間位置變化,即相機(jī)的旋轉(zhuǎn)矩陣ei與平移向量gi。優(yōu)化模型如下:
其中,pi和qi分別是相鄰兩幀圖像的特征點,都包含rgb-d信息,都是以三維矩陣形式進(jìn)行存儲,具體的大小視匹配所得的特征點對的數(shù)量而定;n為rgb-d四通道圖像序列的總幀數(shù)。ei是大小為3×3的旋轉(zhuǎn)矩陣,gi是大小為3×1的平移向量。
所述的特定描述和相鄰兩幀圖片的關(guān)鍵點匹配參考o(jì)rb特征提取算法:rubleee,rabaudv,konoligek,etal.orb:anefficientalternativetosiftorsurf[c]//ieeeinternationalconferenceoncomputervision,iccv2011,barcelona,spain,november.dblp,2011:2564-2571.
由于本發(fā)明是針對實時虛擬現(xiàn)實實現(xiàn)技術(shù),而場景會隨使用者的空間位置變換而產(chǎn)生變換,本發(fā)明必須捕捉到相機(jī)的實時位置變化,即實現(xiàn)相機(jī)的實時定位,從而基于步驟三中識別到的場景平面根據(jù)場景變化在現(xiàn)實場景中建立出模型庫中的物體模型,此時的模型庫可以是官方給出,也可以是用戶根據(jù)實際需求建立。實現(xiàn)本發(fā)明想要的虛擬現(xiàn)實。
步驟三、場景布局識別。
要想在真實場景中生成虛擬物體,還需要對真實場景中各部分的結(jié)構(gòu)進(jìn)行了解,例如本發(fā)明需要在場景中的墻壁上生成一幅畫,那么首先需要明白哪個部分屬于平面,哪些地方是面與面之間的交叉線,這就需要本發(fā)明完成場景平面識別階段。
如圖3,將步驟1中得到的rgbd圖像序列輸入到場景平面識別模塊中,具體在場景平面識別模塊中的操作如下:
首先,通過邊緣檢測和對角線判定等一系列方法對場景的rgb-d四通道圖像序列進(jìn)行處理,具體的:狀態(tài)1是為了檢測場景中的直線,這一狀態(tài)用的是邊緣檢測方法,需要循環(huán)執(zhí)行,直到識別并且判定出直線,狀態(tài)2是確定平面,通過對角線判定框定直線,接著判斷獲取到的平面的深度信息是否符合三維平面函數(shù),如果符合,那么就認(rèn)為識別出的是正確的平面,從而輸出平面的邊緣坐標(biāo),便于在片面上生成虛擬場景。
其次,通過邊緣檢測和對角線判定等一系列方法對場景中的地板、桌子、墻壁等平面結(jié)構(gòu)進(jìn)行識別,并通過特征點跟蹤實現(xiàn)平面結(jié)構(gòu)在視頻中的跟蹤。從而在場景中的平面之上建立即放置模型庫中的物體模型。
步驟四、雙目視圖生成。
由于本發(fā)明是通過雙眼觀察物體,所以必須將圖片轉(zhuǎn)化為雙目視圖,使兩眼看到的圖片互不干擾,通過雙目視差產(chǎn)生3d效果,從而模擬真實場景的效果。用相機(jī)模型模擬人眼,估計人眼相機(jī)參數(shù),將圖像轉(zhuǎn)換成雙目視圖。
4-1.如圖4所示,將步驟一中得到的rgb-d四通道圖像序列轉(zhuǎn)化成點云位置(x,y,z,r,g,b),分別與左眼投影矩陣和右眼投影矩陣相乘:
mlproj、mrproj分別表示左眼投影矩陣和右眼投影矩陣。
fnear、ffar、t、b分別表示視域四棱錐的前剪裁面、后剪裁面、頂部、底端的值,l、r代表視域四棱柱前剪裁面的左、右邊的值,其下標(biāo)l、r則分別代表左眼和右眼。因為左右眼觀測的視域四棱錐的t、b相同,所以可以共用一個值,而l、r不同,所以得用ll、lr、rl、rr分別表示。
4-2.分別得到左眼視圖和右眼視圖中頂點的坐標(biāo)位置,并將其分別映射到屏幕左右半平面上即可得到雙目視圖序列。
步驟五、虛擬現(xiàn)實實現(xiàn)階段。
本發(fā)明的最后一個階段,此階段是對前四個步驟輸出結(jié)果的合成,其中步驟二、三、四在步驟一完成的基礎(chǔ)之上同時進(jìn)行,當(dāng)之前的步驟都完成之后步驟五才可進(jìn)行。
將雙目視圖圖像序列呈現(xiàn)于手機(jī)屏幕,手機(jī)外接虛擬現(xiàn)實頭盔,方便用戶佩戴并根據(jù)自身的實際情況對焦距以及瞳距進(jìn)行調(diào)整,此時用戶從可以觀察到實際場景中的三維模型,由于步驟三中實現(xiàn)了場景中平面結(jié)構(gòu)的識別跟蹤以及物體識別,用戶可以通過增強(qiáng)現(xiàn)實技術(shù)在圖像序列中的場景結(jié)構(gòu)上生成想要呈現(xiàn)的虛擬三維模型。比如說用戶想要了解某件物體置于實際場景中的效果,只需根據(jù)需求將此物體的虛擬模型投放到實際空間中即可得到一個直觀的觀測信息。并且能夠基于機(jī)器學(xué)習(xí)的結(jié)果實時獲取到場景中用戶未知或需要了解的物體信息,便于對整個系統(tǒng)的功能做進(jìn)一步擴(kuò)展。根據(jù)步驟二即相機(jī)定位階段得到的相機(jī)實時位置變化信息,使得呈現(xiàn)在用戶眼前的場景可以根據(jù)實際情況做出實時調(diào)整,防止物體的虛擬模型出現(xiàn)失真以及位置不穩(wěn)定的情況。從而實現(xiàn)基于增強(qiáng)現(xiàn)實的虛擬現(xiàn)實實現(xiàn)方法。