曹鵬霞 李文新 馬偉蘋
(中國空間技術(shù)研究院蘭州空間技術(shù)物理研究所 甘肅 蘭州 730000)
增強現(xiàn)實[1](Augmented Reality, AR)是一種將計算機生成的3D模型、文本、圖像、視頻等虛擬的信息實時疊加到真實場景中并融合顯示的技術(shù),它在醫(yī)療衛(wèi)生、軍事領(lǐng)域、工業(yè)維修、娛樂游戲等領(lǐng)域具有廣泛的應(yīng)用。對增強現(xiàn)實系統(tǒng)進行研究需要涉及多項關(guān)鍵技術(shù),如顯示技術(shù)、跟蹤注冊技術(shù)、場景融合和相機標定(Calibration)技術(shù)等。如何能夠快速、精確地計算出攝像機相對于真實場景的位姿信息,并以位姿信息為基礎(chǔ)將虛擬信息與真實場景精準對齊的技術(shù),即跟蹤注冊技術(shù)。跟蹤注冊技術(shù)是開發(fā)增強現(xiàn)實系統(tǒng)的核心和難點,已經(jīng)成為增強現(xiàn)實走向更廣泛應(yīng)用亟需解決的一個關(guān)鍵問題[2]。目前,基于增強現(xiàn)實的跟蹤注冊問題主要分為基于特殊標識的跟蹤注冊方法和無標識點的跟蹤注冊方法兩大類?;谔厥鈽俗R的跟蹤注冊方法最具代表性的是ARToolKit[3]和ARTag[4]。這類方法具有計算量小、執(zhí)行速度快、不需要復雜的硬件設(shè)備等優(yōu)勢。但是基于特殊標識的跟蹤注冊方法需要在真實場景中預(yù)先放置人工標識物,通過提取標識物的特征獲得跟蹤注冊所需要的位姿信息從而實現(xiàn)跟蹤注冊。然而在真實場景中預(yù)先放置特殊的人工標識物,使用特殊標識物進行跟蹤注冊的方法無法解決環(huán)境光照變化和標志物被遮擋的問題,具有魯棒性差的缺點。同時,特殊標識物在真實場景中也帶來了視覺污染問題。在這種情況下,必須使用基于無標識的跟蹤注冊方法來解決增強現(xiàn)實中虛實場景的配準問題[5]。因此,基于無標識的跟蹤注冊方法是目前發(fā)展的方向。
無標識跟蹤注冊主要是根據(jù)已知場景參考模板與當前幀的自然特征對攝像機的姿勢進行估計。主要有基于模板特征跟蹤和基于模板圖像匹配兩種方法。基于模板特征跟蹤的跟蹤注冊方法中Tomasi[6]等提出的KLT(Kanade-Lucas-Tomasi)跟蹤算法因其具有實時性優(yōu)點而應(yīng)用廣泛。文獻[7-8]成功地將KLT跟蹤算法應(yīng)用于無標識增強現(xiàn)的實跟蹤注冊過程。但是,KLT跟蹤算法具有受光照條件影響較大的缺點,并且當目標變換較快或出現(xiàn)較大遮擋時,存在跟蹤失敗的問題,這使得其應(yīng)用場景受限?;谀0鍒D像匹配的跟蹤注冊方法主要解決寬基線匹配的問題[9]。傳統(tǒng)的寬基線匹配算法中,局部特征描述子(Scale-invariant feature transform,SIFT)因具有很強的穩(wěn)健性而廣泛應(yīng)用于模式識別和圖像匹配等領(lǐng)域[10]。2004年,文獻[11]第一次將SIFT算子應(yīng)用于AR系統(tǒng)的跟蹤注冊。但是傳統(tǒng)的寬基線匹配算法都具有計算復雜的特點,很難滿足增強現(xiàn)實系統(tǒng)在實時性方面的要求。針對此問題,Lepetit[12]等將寬基線圖像匹配視為分類問題,構(gòu)造了一種基于樸素貝葉斯的隨機蕨(Random ferns)分類器,將運算量較大的部分放到分類器的訓練過程離線完成,進而提高算法的實時性。
將基于隨機蕨分類器的寬基線匹配應(yīng)用于AR跟蹤注冊雖然能夠解決條件差、目標被部分遮擋時跟蹤注冊失敗的問題,同時與傳統(tǒng)自然特征匹配算法相比提高了算法的實時性。但是單純的原始隨機蕨算法仍然不能滿足AR系統(tǒng)實時性的要求。因此,本文提出了一種改進隨機蕨的無標識增強現(xiàn)實跟蹤注冊算法。使用具有快速特點的FAST角點進行特征檢測來進一步提高算法的實時性。針對FAST 角點特征檢測不具備尺度不變性和仿射不變性的問題,對隨機蕨叢的仿射過程進行改進,確保算法的魯棒性。
隨機蕨算法最早是由Lepetit等[13]提出的,是隨機森林算法的一種簡化形式,且具有比隨機森林算法更好的性能。它將隨機森林的層次結(jié)構(gòu)特征通過將每層結(jié)點選取相同的決策而改為非層次結(jié)構(gòu)特征,從而將樹結(jié)構(gòu)轉(zhuǎn)化為結(jié)構(gòu)相對單一的蕨結(jié)構(gòu),如圖1所示。
圖1 隨機蕨結(jié)構(gòu)
基于樸素貝葉斯的隨機蕨分類器的基本思想與基于隨機森林的特征匹配類似[14],把模板圖像描述為H個特征點,建立特征點數(shù)據(jù)集K={k1,k2,…,kH},把特征點ki,i=1,2,…,H及以其為中心的圖像塊p(ki)可能出現(xiàn)的形式作為一類ci,i=1,2,…,H。在線檢測匹配階段,針對輸入圖像檢測到的特征點kinput及以其對應(yīng)的圖像塊p(kinput),求其最大可能歸屬于H個特征點中的一個類ci。
設(shè)fj,j=1,2,…,N是輸入圖像特征點圖像塊p(kinput)的二元特征集,圖像塊p(kinput)的大小為L×L(一般取L=32),fj的值取決于圖像塊p(kinput)在分類器訓練階段隨機生成的兩個像素點位置dj1和dj2的灰度值Id j1和Id j2的大小[15],即:
(1)
將輸入特征點圖像塊p(kinput)所屬的類別定義為:
(2)
式中:C表示類別,由貝葉斯公式可得:
(3)
假設(shè)先驗概率P(C)為均勻分布,式(3)分母部分與類別無關(guān),因而式(2)可以轉(zhuǎn)化為:
(4)
由fj之間的獨立性可得:
(5)
為了降低式(5)的存儲量并保證fj之間的相關(guān)性,隨機蕨采用半樸素貝葉斯分類器[16]。將特征fj分為M組,即M個“蕨”,每組特征個數(shù)為S=N/M,即S個節(jié)點。在半樸素貝葉斯分類器條件下,我們認為不同蕨之間是相互獨立的,同一蕨內(nèi)節(jié)點之間具有相關(guān)性,因此式(5)可以簡化為:
(6)
式中:Fm=[fσ(m,1),fσ(m,2),…,fσ(m,S)],m=1,2,…,M,表示第m個蕨;fσ(m,j)表示范圍為1,2,…,N的隨機數(shù)。由此可知p(kinput)的所屬類別為:
(7)
1.2.1基于FAST角點的特征檢測
特征檢測是隨機蕨分類器離線訓練過程和在線檢測匹配程的重要的第一步。為了給后續(xù)的分類過程以及虛擬渲染過程提供更多的時間,本方案采用比原算法Lepetit關(guān)鍵點的檢測方法更加快速的FAST角點檢測的方法來完成模板以及當前幀的特征點檢測。
2006年,Rosten 和Drummond[17]提出了FAST角點特征檢測算子。FAST 角點特征檢測最大的優(yōu)點是快速、具有杰出的實時性。它與Lepetit關(guān)鍵點、SIFT、MSER、SURF特征檢測方法的檢測速度對比如表1所示。
表1 不同特征檢測算子檢測速度對比
檢測中,PC機為Pentium(R)Dual-coreT4400@2.20 GHz,ROM 2 GB的普通PC,特征檢測所用視頻時長10 s,分辨率為320×240,幀率25 幀/秒,平均每幀特征點數(shù)為150 點左右。
FAST角點特征檢測具有角點檢測算子的共性,即具有旋轉(zhuǎn)不變性和對光照不敏感的特點。然而SURF、SIFT等特征檢測算法因加入了多尺度的高斯卷積核而具有尺度不變性,這一點卻恰恰是具有最快檢測速度的FAST 角點特征檢測算法所欠缺的。針對這一問題,本文算法將FAST角點檢測算法代替Lepetit關(guān)鍵點的檢測方法應(yīng)用于隨機蕨的特征檢測,并對隨機蕨離線訓練階段的仿射過程進行改進來解決FAST角點特征不具備尺度不變性與仿射不變性的問題。
1.2.2仿射過程的改進
仿射過程的作用主要是提取穩(wěn)定點和生成訓練片元,是隨機蕨離線訓練階段的關(guān)鍵步驟。針對FAST 角點特征檢測不具備尺度不變性和仿射不變性的問題,對隨機蕨的仿射過程進行改進。由于攝像機模型在不同內(nèi)外部參數(shù)條件下的三維場景與對應(yīng)的二維成像視圖間的透視映射關(guān)系,本方案將具有4自由度無平移向量的仿射變化來近似代替視圖間的透視映射。用對模板圖像做無平移仿射變化所得的仿射圖像來選取穩(wěn)定點集和生成訓練片元可以在保證精確的對應(yīng)關(guān)系的同時模擬目標在不同視角下的成像效果[18]。因此,本方案通過對離線訓練過程中的仿射過程進行改進來解決特征點不具備尺度不變性和仿射不變性的問題。將模板圖像作為正視圖,經(jīng)仿射變換得到仿射視圖,仿射視圖模擬不同視角變換的當前幀視圖。假設(shè)模板圖像中的點x與當前幀圖像中的點x′互為同名點,它們之間的關(guān)系可以用仿射變換近似表示為:
(8)
忽略平移向量后同名點之間的關(guān)系可以表示為:
(9)
非奇異仿射矩陣的線性矩陣A通過奇異值分解為:
A=UDVT=(UVT)(VDVT)=R(θ)R(φ)DR(-φ)
(10)
(11)
(12)
(13)
因此,上述過程可以看作是將模板圖像中的x經(jīng)旋轉(zhuǎn)變換R(-φ)、沿x和y方向不等距縮放D、回轉(zhuǎn)變化R(φ)以及旋轉(zhuǎn)變換R(θ)后得到x′。仿射變換矩陣A包含θ、φ、λ1和λ2四個參數(shù)。θ為旋轉(zhuǎn)因子,φ為形變因子,λ1和λ2分別為x和y方向上的尺度因子。
本文提出的基于改進隨機蕨的無標識增強現(xiàn)實跟蹤注冊算法主要包括離線訓練階段、在線檢測匹配階段以及三維注冊階段,算法流程圖如圖2所示。離線訓練階段首先是提取目標圖像一定數(shù)目的FAST特征點,提取穩(wěn)定特征點和生成訓練樣本;然后將訓練樣本投入到一定規(guī)模的隨機蕨中訓練得到隨機蕨分類器。在線檢測匹配過程首先是提取一定數(shù)目的FAST特征點,將特征點對應(yīng)的片元投入隨機蕨分類器進行粗匹配,使用RANSAC剔除誤匹配后進行三維位姿估計。三維注冊階段是根據(jù)每幀位姿估計結(jié)果使用OpenGL進行虛擬渲染。
圖2 基于改進隨機蕨的增強現(xiàn)實跟蹤注冊算法流程圖
然后在模板圖像穩(wěn)定特征點集基礎(chǔ)上生成訓練片元。對模板圖像I0按照A(φ,θ,λ1,λ2)進行仿射變換并按上述步驟得到穩(wěn)定特征點集,之后以每個穩(wěn)定特征點投影到仿射視圖中對應(yīng)點為中心,截取像素片元作為訓練片元得到訓練集Btrain。具體參數(shù)設(shè)置為仿射參數(shù)設(shè)置為φ,θ∈[0,2π],λ1,λ2∈[0.6,1.5]。對每個類為ci,i=1,2,…,H將旋轉(zhuǎn)因子從1°~360°按步長為一度循環(huán)并隨機選取仿射參數(shù)進行30次仿射變換,即每類得到10 800個訓練片元。
由以上兩步,可以得到穩(wěn)定特征點即初始類ci和訓練集Btrain,之后便可進行離線訓練。隨機生成M×S的隨機蕨叢,即包含M棵蕨,每棵蕨含有S個節(jié)點。每個節(jié)點隨機生成一個判斷函數(shù),判斷函數(shù)對每個訓練片元在L×L(取L=32)范圍內(nèi)選取一對像素位置dj1和dj2。對每個初始類ci根據(jù)隨機蕨M×S對隨機像素位置dj1和dj2的灰度值由式(1)計算類ci的M個隨機蕨中S個二元特征fi的值,并根據(jù)fi的值計算出式(7)中的每個隨機蕨Fm和類ci的條件概率P(Fm|C=ci)。
通過隨機蕨叢分類器對當前幀和模板圖像進行粗匹配之后,采用隨機抽樣一致性(RANSAC)算法來剔除誤匹配。通常情況下,隨機蕨蕨數(shù)規(guī)模越大,匹配的正確率就越高,但是耗時也越長。圖3、圖4為經(jīng)粗匹配和RANSAC算法剔除誤匹配后,匹配點數(shù)隨隨機蕨數(shù)目的變化趨勢以及每個FAST特征點平均匹配時間隨隨機蕨數(shù)目的變化趨勢,取隨機蕨棵樹M=30。
圖3 匹配點數(shù)隨隨機蕨數(shù)目遞增的變化趨勢
圖4 單點匹配時間隨隨機蕨數(shù)目遞增的變化趨勢
通過前面兩節(jié)可知,通過隨機蕨叢分類器可以檢測出當前幀中的目標,從而得到當前幀檢測出來的目標與模板的對應(yīng)關(guān)系為:
(X1,2,…,N,t)=Hn(X1,2,…,N,t0)
式中:Hn為當前幀目標點集與模板點集之間的對應(yīng)關(guān)系,即單應(yīng)性矩陣。攝像機透射投影模型與根據(jù)模板使用隨機蕨算法檢測到的目標的投影關(guān)系如圖5所示。使用將場景的坐標系定義在檢測到的目標上的方法來簡化透射投影方程,即檢測目標平面為Z平面[19]。
圖5 檢測目標投影和攝像機運動關(guān)系
圖中(xp,yp)為當前幀目標上的任意點的坐標,(x0,y0)為對應(yīng)目標模板投影到攝像機平面上的坐標,(xn,yn)為其投影到攝像機平面上的坐標。因此有以下關(guān)系:
(14)
(15)
(16)
視覺透射投影方程為[20]:
(17)
式中:λ是縮放因子,K是攝像機內(nèi)參,[R|T]是攝像機外參,R=[r1r2r3]是旋轉(zhuǎn)矩陣。因為場景坐標定義在檢測到的目標上,[R|T]就是我們需要求解的跟蹤注冊的三維位姿。因為檢測目標平面為Z平面,所有zp=0。將式(14)-式(16)代入式(17)得:
(18)
本文算法實驗是在VS 2012和OpenCV 2.4.9環(huán)境下實現(xiàn)的,PC機為Pentium(R) Dual-coreT4400@2.20 GHz,ROM 2 GB的普通PC,采用普通攝像頭Logitech C525獲取圖像。模板圖像分辨率為600×480。
實驗使用基于樸素貝葉斯分類的隨機蕨叢算法對模板進行寬基線匹配檢測。圖6為檢測結(jié)果,可以看出,模板在不同角度、不同光照環(huán)境下都能被準確地檢測出來。當目標模板被部分遮擋時,仍然能夠準確地檢測出目標。
(a) 旋轉(zhuǎn)尺度變化 (b) 光照條件變化 (c) 目標部分被遮擋圖6 基于隨機蕨寬基線匹配檢測效果
使用原始隨機蕨叢算法得到目標后,對其進行三維位姿估計,使用OpenGL繪圖便可以實現(xiàn)三維跟蹤注冊。雖然該方法能夠解決環(huán)境光照條件變化以及目標被部分遮擋情況下跟蹤注冊失敗的問題,并且與傳統(tǒng)匹配算法相比能夠把耗時較多的部分轉(zhuǎn)為離線訓練階段,但對其運算時間進行測試,如表2所示,使用原始隨機蕨叢算法仍不能滿足增強現(xiàn)實系統(tǒng)實時性的要求。本文通過使用具有快速特點的FAST角點進行特征點檢測來進一步提高算法的實時性,同時針對FAST特征的缺點對仿射過程進行改進從而保證改進算法在不同條件下的檢測效果。
表2 不同方法的增強現(xiàn)實平均跟蹤注冊單幀耗時
圖7是利用本文算法針對不同條件下的目標進行虛實配置的實驗效果。將本文提出的改進隨機蕨算法應(yīng)用于無標識增強現(xiàn)實跟蹤注冊,可以解決在光照條件變化、目標被部分遮擋情況下的跟蹤注冊失敗的問題,基本能夠滿足AR系統(tǒng)實時性的要求。
(a) 目標模板 (b) 旋轉(zhuǎn)尺度變化
(c) 光照條件變化 (d) 目標部分被遮擋圖7 基于改進隨機蕨的無標識增強現(xiàn)實跟蹤注冊效果
本文提出了一種基于改進隨機蕨的無標識增強現(xiàn)實跟蹤注冊算法。通過使用隨機蕨算法解決在光照條件變化、目標被部分遮擋情況下的跟蹤注冊失敗的問題,并通過使用FAST角點進行特征點提取來提高檢測速度。針對FAST角點特征存在不具備仿射不變性和尺度不變性的問題,對隨機蕨算法的仿射過程進行改進保證目標檢測的精度。相對于傳統(tǒng)的匹配算法和原始隨機蕨算法,本文方法在保證目標檢測精度的同時,單幀耗時約為33 ms,基本上能夠滿足增強現(xiàn)實系統(tǒng)實時性的要求。