秦雪洲,邢冠宇
(1.四川大學計算機學院,成都610065;2.四川大學視覺合成圖形圖像技術國防重點學科實驗室,成都610065)
增強現實(AR,Augmented Reality)[1-2]是一種融合各類傳感器并通過計算機視覺、圖形圖像等相關算法在現實場景中進行虛擬物體疊加呈現的技術。與虛擬現實不同,增強現實技術利用對相機的跟蹤和標定來計算虛擬物體在真實環境中的位置,并通過繪制和渲染,實現虛擬物體在真實世界中的疊加,增加虛擬物體在環境中的真實感,達到指定信息增強的目的。隨著近年來科技的發展,增強現實技術的強大日益凸顯,被廣泛應用于工業、軍事、搶險救災、醫療、教育、影視娛樂等多個領域。
基于計算機視覺的標定技術通過計算幀與幀之間的相關關系,可以迅速獲得相機的運動信息和場景的坐標信息,進而確定現實場景與虛擬物體坐標之間的對應關系。這種AR 實現方法僅需要攝像機作為視覺傳感器,無需物理傳感器,將拍攝到的圖像信息作為處理對象,就可在低配置機器上也能達到實時效果,對硬件要求較低。
本文針對無標記的場景,利用基于特征點的間接法來求解相機運動,獲取像機與現實場景的坐標關系,利用計算機視覺的對極幾何、三角化等相關方法,恢復出特征點的三維世界坐標,并對路標點使用基于RANSAC 的平面檢測算法來提取平面,并利用此平面確定虛擬物體坐標,最終實現虛擬物體與現實世界的準確疊加。
一個AR 系統,要求能夠實時、準確地計算出當前相機的位姿信息,能夠通過坐標軸變換等方法,確定虛擬物體在現實場景中的位置,進而實現虛實疊加。其中攝像機位姿的獲取方法稱為相機外參標定方法,也被稱為跟蹤注冊技術[3]。由于采用的相機數量、相機標定、外參計算、虛擬物體添加方法不同,使得特征選取、內外參數表示,原始輸入數據的處理和后端數據的優化方法也有所差異。從具體實現上來說,AR 應用的相機位姿計算方法可以分為3 類:基于硬件傳感器的標定方法、基于計算機視覺的標定方法,以及兩者綜合視覺與傳感器的標定方法。本文所寫方法的實現是基于計算機視覺的標定方法,會著重介紹基于計算機視覺的標定方法相關工作。
經研究,將目前基于計算機視覺的標定方法實現的AR 系統分為兩類:一種是通過特殊標記(Marker),如一個指定的圖片或二維碼來進行標定和確定虛擬物體坐標系,稱作人工標志法,另一種則不使用特殊標記,通過計算出在圖像幀中有代表性的特征,不同幀之間再進行特征的匹配,然后計算出位姿信息,最后完成坐標轉換和渲染,這種實現方法稱為基于自然特征的方法。
基于人工標志的方法一般將包含有特定Marker放置在真實場景中,通過對圖像中的標記物進行識別,匹配和運算獲得攝像機位姿,最后過坐標系的變換與渲染實現虛擬物體的添加。目前,基于Marker 的AR主流軟件包主要有ARToolKit[4]和ARTag[5],此類方法快速穩定,但是標志物必須完整出現在視頻幀中,影響視覺效果和活動距離,有很大的局限性。
基于自然特征的標定方法,通過提取圖像幀中的特征點,利用特征的匹配關系,計算出特征點在世界坐標系中的三維坐標以及攝像機的位姿(外參)。目前基于自然特征的標定方法在AR 研究中是熱門的研究方向。特別是近幾年,隨著計算機視覺與人工智能以及硬件設備的發展,SLAM(Simultaneous Localization And Mapping)技術[6]受到了人們的更加廣泛關注。SLAM 技術不僅快速求解位姿信息還能夠在對特征跟蹤的同時構建場景地圖,具有運算速度快、實時性強、精度較高、魯棒性強、不易丟失等優點,學術界已有非常多的開源SLAM 系統[7-8],并可以在其基礎上進行AR 應用的開發。與人工標志的方法相比,基于自然特征的標定方法不再需要人為地提供特殊Marker 作為參照物,只需計算出具有足夠數量和區分度的特征點,就可完成相關參數的計算,并利用坐標系變換得到虛擬物體在世界坐標系下的坐標。基于自然特征的方法比使用人工標志的方法擁有更廣泛的泛用性,更大的移動空間和更強的實用性。但這種方法也存在缺點,當場景中缺少紋理特征會使特征數目稀少,又或是運動跨度太大會使得相機跟蹤丟失,這些問題都會對系統的精度和穩定性造成較大影響,甚至方法失效。
系統輸入為單目RBG 相機所采集到的圖像序列,流程可分為以下四步,如圖1:
(1)對輸入的圖像幀提取特征,并在局部地圖中進行匹配;
(2)計算出相機位姿,并計算特征點的三維坐標;
(3)在已經計算出的三維點集中檢測出一個真實世界的平面;
(4)計算出虛擬物體到真實世界的轉換關系,將虛擬物體渲染至平面上。

圖1 系統流程圖
為了準確并快速估計相機運動,要選取合適的圖像特征提取方法,本文系統使用ORB 特征進行特征的提取和匹配。ORB 特征由兩部分組成:關鍵點和描述子。其中關鍵點是基于FAST[9]角點特征改良的,描述子選用是BRIEF(Binary Robust Independent Elementary Feature)[10]。提取ORB 特征的步驟分為如下兩步:1.FAST 角點提取;2.計算BRIEF 描述子。
FAST 是一種角點檢測方法,只比較像素大小,便能夠迅速檢測出潛在的角點,并通過預測操作可以快速排除不是角點的像素,并使用極大值抑制,避免檢測出的角點過于集中。但是由于FAST 特征點不具有方向信息,并且存在尺度問題,針對這兩個弱點ORB 增加了尺度和旋轉的描述。尺度的不變性通過圖像金字塔實現,而旋轉的描述由灰度質心法實現[11]。灰度質心法的實質是將局部圖像塊灰度值作為權重的中心,計算步驟分為三步:
(1)定義一小塊圖像B 的矩,
mpq=I(x,y) p,q={0,1}
ORB 通過以上處理,使得FAST 角點獲得尺度和方向描述,大大提升了其健壯性。
BRIEF 是一種二進制描述子,是256 維由0、1 兩個數字組成的向量,這里0、1 表示關鍵點附近兩個像素p 和q 的大小關系。BRIEF 在計算過程中選則了隨機選點比較,計算速度非常快,并且存儲方便非常適合實時圖像匹配。
特征匹配,其實是解決了AR 系統中不同幀之間數據關聯問題,通過準確匹配幀與幀或幀與地圖之間的描述子,進而完成后續的相機運動估計和優化操作。對于二進制描述子,選則使用漢明距離(Hamming distance)作為匹配的度量,其大小為256 維向量中元素不相同的個數,距離越大表示差異越大。其實驗效果如圖2 所示。
完成初始后,兩幀中的前一幀所在的相機坐標系即為世界坐標系。完成世界坐標系的建立后,便是使用三角測量方法求解特征點的深度信息,如圖3 所示。三角測量是通過觀察同一個點在不同相機觀察坐標下的夾角,來估計該點到相機的距離,該方法在計算機視覺領域有著廣泛的應用。

圖2 ORB匹配結果
(1)初始化
系統使用的相機模型為針孔相機模型。K 表示相機的內部參數,αf、βf、cx、cy分別表示焦距和相機主點坐標,α 和β 表示縮放倍數;R 表示旋轉矩陣,t 表示平移向量;T 是由R、t 組成4*4 的變換矩陣。于是3D場景中某個點Pw映射到通過針孔攝影機映射到圖像平面上像素點(u,v,1)的過程可以用下列方程表示:

在單目視覺中,不能直接得到特征點的深度信息,必須要經過初始化操作,在初始化的時候需要從圖像序列中選取至少兩幀,利用兩幀圖像之間的視差和特征點之間匹配,完成對地圖的初始化。其具體過程是:
①根據配對點像素的位置關系,求解出基礎矩陣F(Fundamental Matrix);
②通過F,轉化為本質矩陣E(Essential Matrix),對(E)F 進行SVD 分解,然后從4 個解中篩選出特征點在兩個相機坐標系中都擁有正深度的那個解作為最終解。

圖3 三角測量
假設x1,x2為兩個特征點p1,p2的歸一化坐標,則兩個特征點之間滿足相機剛體變換,如下式:
s1x1=s2Rx2+t (2)

公式(3)可知,是一個關于深度s2的一個方程,使用最小二乘的解法求得s2,有了s2,s1也可以順利求出。
(2)后繼追蹤求解相機位姿
在初始化成功之后,如果繼續使用對極幾何來求解相機位姿雖然能夠求解出答案,但是無法完成尺度的統一,所以必須要放棄2d-2d 匹配計算位姿的方式。在后續的圖像幀輸入后,通過兩種方法來完成后續幀的位姿估計,一種方法是在正常跟蹤中假設相機在這個運動間隔內進行勻速運動,也就是重復進行上一幀的運動方式,將上一幀的位姿作為當前幀位姿的初值,然后對重投影誤差進行BA(光束平差法)優化,得到新的運動估計。另一方法是通過3d-2d 匹配方法來進行位姿估計(如solvePnP),稱為PNP 問題[12],其原理是空間中的三維點和平面上的二維點進行匹配計算,不再計算本征矩陣E,從而繞過了尺度統一的計算,使后序幀延用初始化時兩幀的尺度。系統選用EPNP[13]方法,首先在世界坐標系下選取4 個虛擬的控制點,并將將圖像上對應的4 個特征點轉化到相機坐標系下,然后根據這兩組點的對應關系,即可恢復出旋轉矩陣和平移向量。
(3)重投影誤差優化
在得到一幀的初始位姿之后,還需要進行對相機位姿和地圖點進行非線性優化。選擇使用重投影誤差為誤差模型,構造最小二乘問題。在世界坐標系中,一個三維點Pi( xw,yw,zw,1)T的投影為pi( ui,vi,1)T,其初值的相機位姿分別表示為R 和t,他們組成的變換矩陣的李代數[14]表示為ξ,exp( ξ^)表示李代數的指數映射,si表示該點的深度信息,所以像素點和三維坐標的關系如下式:

由公式(4)可以獲得一個三維地圖點和其對應的像素點的重投影誤差,將所有點的誤差求和,構造最小二乘問題,使用LM(Levenberg-Marquardt)法求解,使誤差最小化,得到最優的相機位姿ξ*,其誤差方程如下式:

在正確估計相機位姿之后,還需要檢測當前場景是否存在一個平面,此平面作為虛擬物體最終參照物,來放置虛擬物體,平面檢測的步驟如下:
(1)對當前幀能夠觀測到的三維點集進行基于RANSAC 的平面檢測方法,隨機選取3 個地圖點,擬合出由這3 個三維點得到的平面表達式;
(2)然后計算所有可觀測的三維點集到這個平面的距離,對這個距離進行從小到大排序,選取thre=dist[0.2*N]作為比較的閾值,N 為點數總個數,thre 越小表示越有可能存在一個平面;
(3)重復(1)、(2)步驟,在迭代的過程中保留最小的th re,直到第一輪迭代結束,獲得一個最優的初值平面和內點集;
(4)對內點集再次進行RANSAC 平面檢測,得到最終平面;
(5)計算世界坐標系到平面坐標系的轉化。
平面檢測結果,如圖4 所示。場景a 為有積水部分遮擋的停車場場景,場景b 為無積水但缺少明顯特征的車道路面,場景c 為TUM 公開數據集的室內場景。經實驗證明,檢測方法有效且可以適應絕大部分場景。

圖4 不同場景下的平面檢測效果
在平面檢測完成后,利用已經求到的世界坐標系到平面的變換矩陣,完成模型的坐標變換,使用OpenGL 庫進行三維模型的渲染,完成三維空間的虛擬物疊加,結果如圖5。通過實驗,渲染方法有效且可以完成和平面的對準,并且能夠在現實場景保持穩定獲得真實自然的AR 效果。
實驗環境為Intel Core i5-6500 CPU,在Ubuntu 16.04 操作系統的虛擬機下運行,8G 內存,軟件環境為使用了OpenCV 3.4.3 ,Eigen3,Pangolin,OpenGL,g2o等開源庫。本實驗主要是針對無人工標記的場景,利用ORB 特征來估計相機運動,然后實現渲染和AR效果。
圖5 為本文的實驗效果,分別針對大分辨率存在積水遮擋的長視頻場景a,大分辨率低紋理的短視頻b,以及低分辨率的室內公開數據集c 進行實驗,實驗將渲染生成的三維模型疊加到真實場景之中,虛擬物體能夠保持穩定,并隨著相機運動而保持同步,當虛擬物體在視頻中表現得越穩定,則說明相機運動估計得越正確,AR 成像效果越真實。
表1 為不同場景的實驗數據,由實驗可知大分辨率圖像處理處理過程中沒有產生丟幀,并且低分辨圖像處理能夠達到30fps 的要求。

表1 不同場景實驗結果

圖5 不同場景下的AR效果
本文提出的AR 系統,使用ORB 特征描述特征點,運用對極幾何相關算法完成初始化,并使用多種方式完成相機運動估計,對于無標記,僅使用自然特征,無物理傳感器輔助的場景,能夠進行良好的穩定的相機運動估計和AR 渲染。但是,該系統仍舊有不足,例如對缺少紋理的場景可能導致初始化失敗。
未來工作中,計劃在系統中加入直線特征的模塊,以適應在點特征稀疏的場景之中也能夠完成相機運動的估計,并且增加對紅外圖像等特殊用例的處理,用以增強整個系統的適用性。