秦雪洲,邢冠宇
(1.四川大學(xué)計算機(jī)學(xué)院,成都610065;2.四川大學(xué)視覺合成圖形圖像技術(shù)國防重點學(xué)科實驗室,成都610065)
增強現(xiàn)實(AR,Augmented Reality)[1-2]是一種融合各類傳感器并通過計算機(jī)視覺、圖形圖像等相關(guān)算法在現(xiàn)實場景中進(jìn)行虛擬物體疊加呈現(xiàn)的技術(shù)。與虛擬現(xiàn)實不同,增強現(xiàn)實技術(shù)利用對相機(jī)的跟蹤和標(biāo)定來計算虛擬物體在真實環(huán)境中的位置,并通過繪制和渲染,實現(xiàn)虛擬物體在真實世界中的疊加,增加虛擬物體在環(huán)境中的真實感,達(dá)到指定信息增強的目的。隨著近年來科技的發(fā)展,增強現(xiàn)實技術(shù)的強大日益凸顯,被廣泛應(yīng)用于工業(yè)、軍事、搶險救災(zāi)、醫(yī)療、教育、影視娛樂等多個領(lǐng)域。
基于計算機(jī)視覺的標(biāo)定技術(shù)通過計算幀與幀之間的相關(guān)關(guān)系,可以迅速獲得相機(jī)的運動信息和場景的坐標(biāo)信息,進(jìn)而確定現(xiàn)實場景與虛擬物體坐標(biāo)之間的對應(yīng)關(guān)系。這種AR 實現(xiàn)方法僅需要攝像機(jī)作為視覺傳感器,無需物理傳感器,將拍攝到的圖像信息作為處理對象,就可在低配置機(jī)器上也能達(dá)到實時效果,對硬件要求較低。
本文針對無標(biāo)記的場景,利用基于特征點的間接法來求解相機(jī)運動,獲取像機(jī)與現(xiàn)實場景的坐標(biāo)關(guān)系,利用計算機(jī)視覺的對極幾何、三角化等相關(guān)方法,恢復(fù)出特征點的三維世界坐標(biāo),并對路標(biāo)點使用基于RANSAC 的平面檢測算法來提取平面,并利用此平面確定虛擬物體坐標(biāo),最終實現(xiàn)虛擬物體與現(xiàn)實世界的準(zhǔn)確疊加。
一個AR 系統(tǒng),要求能夠?qū)崟r、準(zhǔn)確地計算出當(dāng)前相機(jī)的位姿信息,能夠通過坐標(biāo)軸變換等方法,確定虛擬物體在現(xiàn)實場景中的位置,進(jìn)而實現(xiàn)虛實疊加。其中攝像機(jī)位姿的獲取方法稱為相機(jī)外參標(biāo)定方法,也被稱為跟蹤注冊技術(shù)[3]。由于采用的相機(jī)數(shù)量、相機(jī)標(biāo)定、外參計算、虛擬物體添加方法不同,使得特征選取、內(nèi)外參數(shù)表示,原始輸入數(shù)據(jù)的處理和后端數(shù)據(jù)的優(yōu)化方法也有所差異。從具體實現(xiàn)上來說,AR 應(yīng)用的相機(jī)位姿計算方法可以分為3 類:基于硬件傳感器的標(biāo)定方法、基于計算機(jī)視覺的標(biāo)定方法,以及兩者綜合視覺與傳感器的標(biāo)定方法。本文所寫方法的實現(xiàn)是基于計算機(jī)視覺的標(biāo)定方法,會著重介紹基于計算機(jī)視覺的標(biāo)定方法相關(guān)工作。
經(jīng)研究,將目前基于計算機(jī)視覺的標(biāo)定方法實現(xiàn)的AR 系統(tǒng)分為兩類:一種是通過特殊標(biāo)記(Marker),如一個指定的圖片或二維碼來進(jìn)行標(biāo)定和確定虛擬物體坐標(biāo)系,稱作人工標(biāo)志法,另一種則不使用特殊標(biāo)記,通過計算出在圖像幀中有代表性的特征,不同幀之間再進(jìn)行特征的匹配,然后計算出位姿信息,最后完成坐標(biāo)轉(zhuǎn)換和渲染,這種實現(xiàn)方法稱為基于自然特征的方法。
基于人工標(biāo)志的方法一般將包含有特定Marker放置在真實場景中,通過對圖像中的標(biāo)記物進(jìn)行識別,匹配和運算獲得攝像機(jī)位姿,最后過坐標(biāo)系的變換與渲染實現(xiàn)虛擬物體的添加。目前,基于Marker 的AR主流軟件包主要有ARToolKit[4]和ARTag[5],此類方法快速穩(wěn)定,但是標(biāo)志物必須完整出現(xiàn)在視頻幀中,影響視覺效果和活動距離,有很大的局限性。
基于自然特征的標(biāo)定方法,通過提取圖像幀中的特征點,利用特征的匹配關(guān)系,計算出特征點在世界坐標(biāo)系中的三維坐標(biāo)以及攝像機(jī)的位姿(外參)。目前基于自然特征的標(biāo)定方法在AR 研究中是熱門的研究方向。特別是近幾年,隨著計算機(jī)視覺與人工智能以及硬件設(shè)備的發(fā)展,SLAM(Simultaneous Localization And Mapping)技術(shù)[6]受到了人們的更加廣泛關(guān)注。SLAM 技術(shù)不僅快速求解位姿信息還能夠在對特征跟蹤的同時構(gòu)建場景地圖,具有運算速度快、實時性強、精度較高、魯棒性強、不易丟失等優(yōu)點,學(xué)術(shù)界已有非常多的開源SLAM 系統(tǒng)[7-8],并可以在其基礎(chǔ)上進(jìn)行AR 應(yīng)用的開發(fā)。與人工標(biāo)志的方法相比,基于自然特征的標(biāo)定方法不再需要人為地提供特殊Marker 作為參照物,只需計算出具有足夠數(shù)量和區(qū)分度的特征點,就可完成相關(guān)參數(shù)的計算,并利用坐標(biāo)系變換得到虛擬物體在世界坐標(biāo)系下的坐標(biāo)?;谧匀惶卣鞯姆椒ū仁褂萌斯?biāo)志的方法擁有更廣泛的泛用性,更大的移動空間和更強的實用性。但這種方法也存在缺點,當(dāng)場景中缺少紋理特征會使特征數(shù)目稀少,又或是運動跨度太大會使得相機(jī)跟蹤丟失,這些問題都會對系統(tǒng)的精度和穩(wěn)定性造成較大影響,甚至方法失效。
系統(tǒng)輸入為單目RBG 相機(jī)所采集到的圖像序列,流程可分為以下四步,如圖1:
(1)對輸入的圖像幀提取特征,并在局部地圖中進(jìn)行匹配;
(2)計算出相機(jī)位姿,并計算特征點的三維坐標(biāo);
(3)在已經(jīng)計算出的三維點集中檢測出一個真實世界的平面;
(4)計算出虛擬物體到真實世界的轉(zhuǎn)換關(guān)系,將虛擬物體渲染至平面上。
圖1 系統(tǒng)流程圖
為了準(zhǔn)確并快速估計相機(jī)運動,要選取合適的圖像特征提取方法,本文系統(tǒng)使用ORB 特征進(jìn)行特征的提取和匹配。ORB 特征由兩部分組成:關(guān)鍵點和描述子。其中關(guān)鍵點是基于FAST[9]角點特征改良的,描述子選用是BRIEF(Binary Robust Independent Elementary Feature)[10]。提取ORB 特征的步驟分為如下兩步:1.FAST 角點提取;2.計算BRIEF 描述子。
FAST 是一種角點檢測方法,只比較像素大小,便能夠迅速檢測出潛在的角點,并通過預(yù)測操作可以快速排除不是角點的像素,并使用極大值抑制,避免檢測出的角點過于集中。但是由于FAST 特征點不具有方向信息,并且存在尺度問題,針對這兩個弱點ORB 增加了尺度和旋轉(zhuǎn)的描述。尺度的不變性通過圖像金字塔實現(xiàn),而旋轉(zhuǎn)的描述由灰度質(zhì)心法實現(xiàn)[11]?;叶荣|(zhì)心法的實質(zhì)是將局部圖像塊灰度值作為權(quán)重的中心,計算步驟分為三步:
(1)定義一小塊圖像B 的矩,
mpq=I(x,y) p,q={0,1}
ORB 通過以上處理,使得FAST 角點獲得尺度和方向描述,大大提升了其健壯性。
BRIEF 是一種二進(jìn)制描述子,是256 維由0、1 兩個數(shù)字組成的向量,這里0、1 表示關(guān)鍵點附近兩個像素p 和q 的大小關(guān)系。BRIEF 在計算過程中選則了隨機(jī)選點比較,計算速度非???,并且存儲方便非常適合實時圖像匹配。
特征匹配,其實是解決了AR 系統(tǒng)中不同幀之間數(shù)據(jù)關(guān)聯(lián)問題,通過準(zhǔn)確匹配幀與幀或幀與地圖之間的描述子,進(jìn)而完成后續(xù)的相機(jī)運動估計和優(yōu)化操作。對于二進(jìn)制描述子,選則使用漢明距離(Hamming distance)作為匹配的度量,其大小為256 維向量中元素不相同的個數(shù),距離越大表示差異越大。其實驗效果如圖2 所示。
完成初始后,兩幀中的前一幀所在的相機(jī)坐標(biāo)系即為世界坐標(biāo)系。完成世界坐標(biāo)系的建立后,便是使用三角測量方法求解特征點的深度信息,如圖3 所示。三角測量是通過觀察同一個點在不同相機(jī)觀察坐標(biāo)下的夾角,來估計該點到相機(jī)的距離,該方法在計算機(jī)視覺領(lǐng)域有著廣泛的應(yīng)用。
圖2 ORB匹配結(jié)果
(1)初始化
系統(tǒng)使用的相機(jī)模型為針孔相機(jī)模型。K 表示相機(jī)的內(nèi)部參數(shù),αf、βf、cx、cy分別表示焦距和相機(jī)主點坐標(biāo),α 和β 表示縮放倍數(shù);R 表示旋轉(zhuǎn)矩陣,t 表示平移向量;T 是由R、t 組成4*4 的變換矩陣。于是3D場景中某個點Pw映射到通過針孔攝影機(jī)映射到圖像平面上像素點(u,v,1)的過程可以用下列方程表示:
在單目視覺中,不能直接得到特征點的深度信息,必須要經(jīng)過初始化操作,在初始化的時候需要從圖像序列中選取至少兩幀,利用兩幀圖像之間的視差和特征點之間匹配,完成對地圖的初始化。其具體過程是:
①根據(jù)配對點像素的位置關(guān)系,求解出基礎(chǔ)矩陣F(Fundamental Matrix);
②通過F,轉(zhuǎn)化為本質(zhì)矩陣E(Essential Matrix),對(E)F 進(jìn)行SVD 分解,然后從4 個解中篩選出特征點在兩個相機(jī)坐標(biāo)系中都擁有正深度的那個解作為最終解。
圖3 三角測量
假設(shè)x1,x2為兩個特征點p1,p2的歸一化坐標(biāo),則兩個特征點之間滿足相機(jī)剛體變換,如下式:
s1x1=s2Rx2+t (2)
公式(3)可知,是一個關(guān)于深度s2的一個方程,使用最小二乘的解法求得s2,有了s2,s1也可以順利求出。
(2)后繼追蹤求解相機(jī)位姿
在初始化成功之后,如果繼續(xù)使用對極幾何來求解相機(jī)位姿雖然能夠求解出答案,但是無法完成尺度的統(tǒng)一,所以必須要放棄2d-2d 匹配計算位姿的方式。在后續(xù)的圖像幀輸入后,通過兩種方法來完成后續(xù)幀的位姿估計,一種方法是在正常跟蹤中假設(shè)相機(jī)在這個運動間隔內(nèi)進(jìn)行勻速運動,也就是重復(fù)進(jìn)行上一幀的運動方式,將上一幀的位姿作為當(dāng)前幀位姿的初值,然后對重投影誤差進(jìn)行BA(光束平差法)優(yōu)化,得到新的運動估計。另一方法是通過3d-2d 匹配方法來進(jìn)行位姿估計(如solvePnP),稱為PNP 問題[12],其原理是空間中的三維點和平面上的二維點進(jìn)行匹配計算,不再計算本征矩陣E,從而繞過了尺度統(tǒng)一的計算,使后序幀延用初始化時兩幀的尺度。系統(tǒng)選用EPNP[13]方法,首先在世界坐標(biāo)系下選取4 個虛擬的控制點,并將將圖像上對應(yīng)的4 個特征點轉(zhuǎn)化到相機(jī)坐標(biāo)系下,然后根據(jù)這兩組點的對應(yīng)關(guān)系,即可恢復(fù)出旋轉(zhuǎn)矩陣和平移向量。
(3)重投影誤差優(yōu)化
在得到一幀的初始位姿之后,還需要進(jìn)行對相機(jī)位姿和地圖點進(jìn)行非線性優(yōu)化。選擇使用重投影誤差為誤差模型,構(gòu)造最小二乘問題。在世界坐標(biāo)系中,一個三維點Pi( xw,yw,zw,1)T的投影為pi( ui,vi,1)T,其初值的相機(jī)位姿分別表示為R 和t,他們組成的變換矩陣的李代數(shù)[14]表示為ξ,exp( ξ^)表示李代數(shù)的指數(shù)映射,si表示該點的深度信息,所以像素點和三維坐標(biāo)的關(guān)系如下式:
由公式(4)可以獲得一個三維地圖點和其對應(yīng)的像素點的重投影誤差,將所有點的誤差求和,構(gòu)造最小二乘問題,使用LM(Levenberg-Marquardt)法求解,使誤差最小化,得到最優(yōu)的相機(jī)位姿ξ*,其誤差方程如下式:
在正確估計相機(jī)位姿之后,還需要檢測當(dāng)前場景是否存在一個平面,此平面作為虛擬物體最終參照物,來放置虛擬物體,平面檢測的步驟如下:
(1)對當(dāng)前幀能夠觀測到的三維點集進(jìn)行基于RANSAC 的平面檢測方法,隨機(jī)選取3 個地圖點,擬合出由這3 個三維點得到的平面表達(dá)式;
(2)然后計算所有可觀測的三維點集到這個平面的距離,對這個距離進(jìn)行從小到大排序,選取thre=dist[0.2*N]作為比較的閾值,N 為點數(shù)總個數(shù),thre 越小表示越有可能存在一個平面;
(3)重復(fù)(1)、(2)步驟,在迭代的過程中保留最小的th re,直到第一輪迭代結(jié)束,獲得一個最優(yōu)的初值平面和內(nèi)點集;
(4)對內(nèi)點集再次進(jìn)行RANSAC 平面檢測,得到最終平面;
(5)計算世界坐標(biāo)系到平面坐標(biāo)系的轉(zhuǎn)化。
平面檢測結(jié)果,如圖4 所示。場景a 為有積水部分遮擋的停車場場景,場景b 為無積水但缺少明顯特征的車道路面,場景c 為TUM 公開數(shù)據(jù)集的室內(nèi)場景。經(jīng)實驗證明,檢測方法有效且可以適應(yīng)絕大部分場景。
圖4 不同場景下的平面檢測效果
在平面檢測完成后,利用已經(jīng)求到的世界坐標(biāo)系到平面的變換矩陣,完成模型的坐標(biāo)變換,使用OpenGL 庫進(jìn)行三維模型的渲染,完成三維空間的虛擬物疊加,結(jié)果如圖5。通過實驗,渲染方法有效且可以完成和平面的對準(zhǔn),并且能夠在現(xiàn)實場景保持穩(wěn)定獲得真實自然的AR 效果。
實驗環(huán)境為Intel Core i5-6500 CPU,在Ubuntu 16.04 操作系統(tǒng)的虛擬機(jī)下運行,8G 內(nèi)存,軟件環(huán)境為使用了OpenCV 3.4.3 ,Eigen3,Pangolin,OpenGL,g2o等開源庫。本實驗主要是針對無人工標(biāo)記的場景,利用ORB 特征來估計相機(jī)運動,然后實現(xiàn)渲染和AR效果。
圖5 為本文的實驗效果,分別針對大分辨率存在積水遮擋的長視頻場景a,大分辨率低紋理的短視頻b,以及低分辨率的室內(nèi)公開數(shù)據(jù)集c 進(jìn)行實驗,實驗將渲染生成的三維模型疊加到真實場景之中,虛擬物體能夠保持穩(wěn)定,并隨著相機(jī)運動而保持同步,當(dāng)虛擬物體在視頻中表現(xiàn)得越穩(wěn)定,則說明相機(jī)運動估計得越正確,AR 成像效果越真實。
表1 為不同場景的實驗數(shù)據(jù),由實驗可知大分辨率圖像處理處理過程中沒有產(chǎn)生丟幀,并且低分辨圖像處理能夠達(dá)到30fps 的要求。
表1 不同場景實驗結(jié)果
圖5 不同場景下的AR效果
本文提出的AR 系統(tǒng),使用ORB 特征描述特征點,運用對極幾何相關(guān)算法完成初始化,并使用多種方式完成相機(jī)運動估計,對于無標(biāo)記,僅使用自然特征,無物理傳感器輔助的場景,能夠進(jìn)行良好的穩(wěn)定的相機(jī)運動估計和AR 渲染。但是,該系統(tǒng)仍舊有不足,例如對缺少紋理的場景可能導(dǎo)致初始化失敗。
未來工作中,計劃在系統(tǒng)中加入直線特征的模塊,以適應(yīng)在點特征稀疏的場景之中也能夠完成相機(jī)運動的估計,并且增加對紅外圖像等特殊用例的處理,用以增強整個系統(tǒng)的適用性。