張笑宇,湯 汶,2,萬韜阮,3,朱耀麟,4,武 桐
(1.西安工程大學 電子信息學院,陜西 西安 710048;2.伯恩茅斯大學 科學與工程技術學院,英國 伯恩茅斯 BH12 5BB;3.布拉德福德大學 工程與信息學院,英國 布拉德福德 BD7 1DP;4.西北工業大學 電子信息學院,陜西 西安 710072)
混合現實技術是當下的熱門技術,具有虛實結合[1]、實時交互[2]和三維注冊[3]3個特點,它可以增強用戶體驗的真實感,在不同領域得到了廣泛應用[4-5]。目前三維注冊分為2種,一種是基于標志物的注冊,一種是基于無標志物的注冊[6]。基于標志物的注冊易受外界環境干擾,當標志物被部分遮擋時,識別的效果較差。如何更好地識別標志物,對混合現實系統的效率和精度有重要影響[7]。混合現實技術識別標志物,需要用攝像頭采集視頻幀圖像與標志物圖像進行特征點匹配,當正確匹配的特征點數目到達一定閾值時,可判定視頻幀圖像中包含標志物,從而把虛擬信息疊加到視頻中的標志物上,所以標志物識別的核心就是特征點提取與匹配[8-9]。
針對特征點提取與匹配的問題,Lowe于2004年提出尺度不變特征變換(scale-invariant feature transform,SIFT)算法[10],該算法具有優良的尺度不變和旋轉不變性,而且可以適應光照的變化,但算法計算量過大,提取的特征點包含的信息過多,單獨使用該算法效率不高;SURF算法[11]是Bay在2008年提出的,在SIFT的基礎上使用Hessian矩陣和Haar小波結合的辦法大大提高了運算的速度,但提取的特征點不夠穩定;2011年Lee等提出ORB算法,該算法具有旋轉不變性和很快的運行速度,但不具備尺度不變性[12];Yu等提出了使用ORB和FREAK結合的方式實現混合現實,提高了配準的實時性,但匹配的準確率不高[13];閆興亞等使用ORB采集特征點并進行匹配,使用光流法對目標進行跟蹤,從而實現增強現實,但計算復雜,注冊耗時較長,效率低[14];禹鑫燚等使用四叉樹改進ORB算法,雖然對ORB算法提取的特征點集中的問題有所解決,但是降低了匹配的準確度[15];李卓等使用ORB和LATCH結合來進行特征點的檢測與描述,但是LATCH描述子需要進行太過復雜的計算[16];張陽等提出運用均勻采樣算法改進ORB算法,但是沿用了ORB的特征檢測算法,對匹配成功率的提升不大[17];柴江龍等使用梯度方向來改進ORB的特征提取,但只提取少量的特征點,不能運用到混合現實當中[18]。
以上方法存在著注冊時間長,無法滿足混合現實的實時性或者提取特征點少,匹配準確度低的問題。針對以上問題,通過構造尺度空間,并結合SURF算法對ORB算法進行改進。
混合現實技術對識別有實時性的要求,ORB算法雖然有很快的運算速度,但得到的特征點分布過于密集,對特征點的匹配產生干擾,影響了混合現實的識別效果。要提高混合現實系統中標志物的識別效率,就要改進ORB算法的空間結構和特征點的提取方式。先對標志物圖像和視頻幀圖像進行尺度空間的構造,得到特征點的尺度和位置信息。再結合SURF算法高魯棒性和旋轉不變性的優點,為每一個特征點分配主方向,接著構造ORB描述子,然后使用漢明距離進行特征點的初匹配,接下來使用隨機抽樣一致(random sample consensus,RANSAC)[19]算法去除初匹配過程中產生的誤匹配點,增加匹配的效率。改進后的混合現實系統標志物識別流程如圖1所示。

圖 1 標志物識別流程
標志物識別的本質是圖像的匹配,標志物圖像中能提取出的特征點越多、分布越均勻,該標志物就越容易被識別。針對ORB算法提取的特征點分布密集以及不具有尺度不變性的問題,通過對其空間結構以及特征點的方法進行改進,使改進后的算法能更有效地應用在混合現實系統中的標志物識別。
ORB算法首先使用oFAST特征檢測算子檢測特征點,接著使用rBRIEF[20]特征描述子和旋轉矩陣計算可得相應的二進制描述符,最后使用漢明距離設置閾值,篩選符合條件的特征點對。
oFAST算法是由FAST算法改進得到的。FAST算法通過把圖像中的某個像素點當作圓心,以3為半徑的圓上共有16個像素點(P1,P2,…,P16),檢測這些像素點的灰度值并和圓心點的灰度值相比較,從而判斷圓心點是否為角點,如圖2所示。

圖 2 FAST角點檢測原理
假設圓心點為P,其灰度值為IP,閾值為T,圓上的16個像素點中有N個連續的點大于(IP+T)或小于(IP-T),那么判斷這個點是角點,一般取N為9或12。但每次計算所有點耗時過多,可以先計算P點4個方向P1、P5、P9、P13上像素值與點P的差值,若有3個大于所設定的閾值,再繼續檢測其他的像素點,否則過濾掉點P。
但是FAST算法所提取的特征點沒有方向性,ORB通過灰度質心法給FAST特征點一個方向,使用矩方法在以特征點為中心,r為半徑的圖像領域范圍中計算灰度質心,特征點到質心的向量方向就是該點的特征方向。矩的定義為

(1)
式中:mpq為(p+q)階矩;I(x,y)為圖像灰度;x、y為特征鄰域中的像素點。中心矩C的質心計算過程為

(2)
特征點方向可由向量的角度得到,計算過程為

(3)
這種特征點檢測的方法有很快的運算速度,可以滿足混合現實的實時性要求。但是這種方法有一個弊端,得到的特征點分布太密集,對后面的特征點描述起到了很大的干擾作用,影響了特征點的匹配結果。
針對ORB算法得到的特征點分布太密集的問題,通過構建尺度空間以及轉換檢測算子的方法來解決。由k個octave層(記作ca),k個intra-octave層(記作da)構成空間結構,取k=6,a=0,1,2,…,k-1。c0層為輸入的原始圖像,c1層由c0層2倍下采樣構成,c2層由c1層2倍下采樣構成,以此類推。原始圖像進行1.5倍下采樣得到d0層,后面和構建ca的方法一樣。可以由s表示ca、da和原始圖像的關系,即
s(ca)=2a,s(da)=1.5×2a
(4)
由于k=6,則有12張圖像。先使用FAST角點檢測的辦法檢測尺度空間中的每一層,選出候選角點。使用非極大值抑制的方法對候選角點進行處理,選取候選角點所在位置空間中的8個鄰域點,以及上下2層尺度空間中每層9個鄰域點,共計26個鄰域點。如果候選角點的FAST得分值比所有鄰域點的得分值都大,則保留該候選角點。此時得到了候選角點粗略的位置和尺度,但還不夠精確。特征點定位過程如圖3所示。

圖 3 特征點定位
選取候選角點和其上下層對應的位置,在x、y方向上對其FAST得分值進行二維二次函數插值,由此可以得到真正的得分極值點和準確的坐標位置,把該位置選作特征點的位置。然后再對尺度方向一維插值,得出極值點所對應的尺度,也就是特征點的尺度。此方法能夠準確的得到特征點的尺度信息和位置信息,減少了計算的復雜度,提高了系統的運行效率。
以上方法可以得到尺度和位置信息,但不包含方向信息。由于SURF的運行速度較快,對圖像的旋轉和縮放都有著不變性,且OpenCV對其特征點提取方法進行了封裝,使用起來方便快捷。所以調用SURF算法中給特征點添加主方向的步驟,使本文算法具備旋轉不變性。接下來要進行特征點匹配,傳統的ORB算法使用漢明距離進行特征點匹配,因為生成的特征點描述子是二進制碼串的形式,但這種方法會存在很多誤匹配的點對,所以采用RANSAC的方法剔除誤匹配的點對。
本文的測試平臺為Windows10+OpenCV3.4.3,電腦處理器為Intel(R)Core(TM)i5-8300,CPU內存為8 GB,在Python3.5的環境進行編程實驗,圖像的像素為880×640。圖4(a)、(b)、(c)、(d)展示了4組實驗結果,圖4(a)用的是圖像處理常用數據庫中的圖片,圖4(b)用的是自己制作的圓形鯉魚圖案標志物,圖4(c)、(d)使用的是自己制作的石燈圖案標志物。每組實驗有3張效果圖,從左到右分別為SURF算法、ORB算法以及改進后的算法特征匹配圖,每個算法都是將標志物圖像和視頻幀圖像中的特征點進行提取并匹配,將2張圖像上經過計算得到的相同特征點用線段連接起來。

(a) 狒狒圖案標志物
對比圖4的實驗結果,由圖4(a)和圖4(b)可知,無論是圖像處理常用數據庫中的圖片,還是自己制作的標志物圖片,都可以成功地提取特征點并匹配。由圖4(b)和圖4(c)可知,改進后的算法在各種圖案的標志物上都可以準確的匹配特征點,從而達到識別要求。由圖4(c)和圖4(d)可知,在標志物后面的背景不同的情況下,改進后的算法依然有很好的效果。由實驗結果可以看出,改進后算法匹配的準確率比原始算法高,減少了誤匹配對的數量,而且匹配的特征點集中在標志物上,能夠更好地識別視頻中出現的標志物,從而提高混合現實的識別效率。
除了圖4,另外在圖像處理標準測試集里選用50幅圖片,標志物分別在純白背景,光線昏暗的背景,物品雜亂的背景以及尺度變化的情況下進行實驗,將測試結果取平均值。通過編寫程序為初匹配得到的特征點對和篩選后保留的特征點對添加計數器,為整個匹配過程添加計時器。特征點匹配精度計算過程如下:

(5)
式中:ρ為特征點的匹配精度;n1為篩選后保留的特征點對數;n2為初匹配得到的特征點對的數量。
對SURF、ORB、文獻[17]和本文算法進行測試,記錄各算法的特征點匹配精度和運行時間,測試結果見表1。

表 1 不同算法的特征點匹配精度和運行時間
由于實際場景里包含的因素往往比較復雜,經常會有很多標志物以外的東西出現在采集到的圖像中,這對匹配的精度有很大的影響。由表1可知,SURF算法的匹配精度為41.2%,ORB算法的匹配精度為51.7%,本文算法匹配精度為80.0%,相對于SURF算法提升了38.8%,相對于ORB算法提升了28.3%。對比文獻[17]中沿用傳統ORB特征檢測的方法,本文的算法構建了新的尺度空間,且使用了SURF算法提取特征點,大大提高了特征檢測的效率,且運行時間相差不多。由圖4的匹配結果可知,改進后的算法具備了尺度不變性和旋轉不變性,初匹配得到的特征點更加精細,有效地提取圖像的突出細節。雖然本文匹配的精度高,卻增加了很多計算量,運行時間略高于傳統的ORB算法,但比SURF算法要快,足以滿足混合現實的實時性需求。
除此之外,改進后的算法成功剔除了大量的誤匹配對,使匹配的效率得到了提高,大大增強了混合現實系統的穩定性,見圖5(a)~(d)。當采集的畫面出現鯉魚圖案標志物時,即使標志物的位置角度發生改變,但顯示的虛擬模型始終固定在標志物的正上方位置。
混合現實技術基于標志物的注冊,需要不斷提取采集到的每一幀視頻圖像的特征點,用視頻幀圖像的特征點和標志物圖像的特征點進行匹配,當正確匹配的點對數目達到一定閾值,判定標志物出現在攝像機畫面中。當標志物被部分遮擋時,標志物上被擋住的特征點將不能被識別,很可能導致正確匹配的點對數目達不到閾值,無法成功的識別標志物。而基于標志物的注冊在實際應用中不可避免地會遇到標志物被部分遮擋的情形,只有增加系統的魯棒性,才能達到虛實融合的要求。減少遮擋對識別過程造成的影響,也就是減少標志物上被遮擋的特征點數量。傳統的ORB算法采用角點檢測的方法,提取的特征點分布太過密集,當特征點集中的區域被遮擋時,標志物無法被成功識別。改進后的算法提取的特征點分布均勻,遮擋標志物的任意一小塊區域,都能夠提取足夠數目的特征點以達到識別需求。如圖5(e)~(f):

(a) 正面 (b) 遮擋50%
圖5的實驗提取了圖4中2個標志物,一個有著曲線多、難以提取角點的鯉魚圖案,另一個具有圖像復雜度高的狒狒圖案。由圖4的匹配結果可知,在不同場景下匹配點對大多集中在標志物上,且均勻分布,所以在標志物被部分遮擋的情況下,系統仍然可以提取足夠多的特征點對來完成識別。由圖5(a)~(d)可以看出,雖然標志物所在的場景改變了,場景中包含的物體也改變了,但是使用本文的方法在標志物被部分遮擋、一定程度上視角變換的情況下依然能夠穩定、實時地對標志物進行跟蹤注冊。由圖5(a)、(b)、(e)、(f)可以看出,本文算法能較好解決混合現實系統中標志物被部分遮擋時,難以成功識別的問題,即使標志物被遮擋住50%的區域,也可以成功被識別。由此可見,本文的方法能一定程度解決混合現實技術在識別標志物時易發生抖動的問題,同時減少了部分遮擋對標志物識別過程產生的干擾,較好地提高了標志物的識別效率,系統的魯棒性更強。
從特征點提取和匹配的角度入手,把改進的ORB算法運用到混合現實技術中,一定程度上解決了混合現實系統中三維注冊算法精確度和魯棒性低的問題。實驗結果表明,本文的方法運用在混合現實基于標志物的注冊中,可以使標志物在不同視角下和被部分遮擋的情況下被成功識別,有良好的魯棒性和識別效率,優化了混合現實技術虛實融合的效果。但是當標志物距離攝像機過遠時,視頻圖像中能提取到的標志物特征點有限,對識別效果產生了很大的影響,因此如何提取更精細的特征點,仍然是接下來要研究的方向。