閆興亞,馬 柯,崔曉云
(1.西安郵電大學(xué) 數(shù)字媒體藝術(shù)學(xué)院,陜西 西安 710121;2.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安 710121;3.陜西師范大學(xué) 教育學(xué)院,陜西 西安 710062)
三維跟蹤注冊(cè)技術(shù)是增強(qiáng)現(xiàn)實(shí)(augment reality,AR)[1,2]中的關(guān)鍵和難點(diǎn),它是對(duì)真實(shí)環(huán)境中的運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤,從而將虛擬物體實(shí)時(shí)疊加在目標(biāo)上[3]。目前,關(guān)于運(yùn)動(dòng)目標(biāo)跟蹤的解決方法主要是依據(jù)特征點(diǎn)的匹配和跟蹤[4],這種方法在遮擋、尺度變換等情況下,會(huì)使跟蹤不穩(wěn)定;比如ORB(oriented fast and rotated briEF)算法[5]運(yùn)行速度快,且能提取穩(wěn)定的特征點(diǎn),但不具有尺度不變性,存在大量的誤匹配。Maidi M等[6]針對(duì)增強(qiáng)現(xiàn)實(shí)技術(shù)中的遮擋問題,開發(fā)了一種用于對(duì)象識(shí)別和遮擋處理的多模態(tài)跟蹤框架,該框架主要由姿態(tài)估計(jì)和特征點(diǎn)跟蹤兩個(gè)模塊組成,分別用于目標(biāo)注冊(cè)和遮擋處理。
Camshift(continuously adaptive mean-shift)[7]是一種連續(xù)自適應(yīng)跟蹤算法,廣泛應(yīng)用于目標(biāo)跟蹤,但背景與運(yùn)動(dòng)目標(biāo)的顏色相似時(shí),會(huì)導(dǎo)致跟蹤失敗[8]。郭金朋等針對(duì)這種情況,結(jié)合SURF(speed up robust features)算法進(jìn)行特征匹配,使Camshift算法能夠在復(fù)雜背景下正常跟蹤[9]。
根據(jù)以上研究,本文為了提高增強(qiáng)現(xiàn)實(shí)系統(tǒng)在跟蹤注冊(cè)過程中的準(zhǔn)確率以及適應(yīng)目標(biāo)尺度變換,提出一種基于Camshift與ORB算法相結(jié)合的自適應(yīng)三維跟蹤注冊(cè)方法。該方法利用高斯分布的背景建模法檢測(cè)運(yùn)動(dòng)目標(biāo),提高Camshift算法跟蹤的準(zhǔn)確率[10];當(dāng)跟蹤目標(biāo)失效,即前后兩幀目標(biāo)區(qū)域顏色直方圖相差較大時(shí)[11],使用ORB算法對(duì)目標(biāo)區(qū)域進(jìn)行匹配,找到丟失的目標(biāo);在ORB算法中利用尺度空間理論建立圖像金字塔,使提取出的特征點(diǎn)具有尺度不變性。實(shí)驗(yàn)結(jié)果驗(yàn)證了本文方法具有良好的實(shí)時(shí)性和魯棒性。
Camshift算法是在Meanshift算法基礎(chǔ)上改進(jìn)的,其中,Meanshift算法[12]在跟蹤時(shí)主要是依據(jù)目標(biāo)顏色概率直方圖,進(jìn)行相似性度量計(jì)算以尋找最佳目標(biāo),從而達(dá)到實(shí)時(shí)跟蹤。Camshift算法與Meanshift算法相比[13],能夠自動(dòng)調(diào)節(jié)搜索窗口適應(yīng)目標(biāo)的大小,對(duì)視頻中尺寸變化的目標(biāo)進(jìn)行跟蹤,提高了算法的有效性。它是以視頻圖像中運(yùn)動(dòng)物體的顏色信息作為特征,對(duì)輸入圖像的每一幀做Meanshift運(yùn)算,并將上一幀的目標(biāo)中心和核函數(shù)帶寬作為下一幀Meanshift算法的中心和核函數(shù)帶寬的初始值,以此方式迭代計(jì)算,實(shí)現(xiàn)對(duì)目標(biāo)的跟蹤。
ORB算法主要是對(duì)圖像中的特征進(jìn)行檢測(cè)和提取,但檢測(cè)出的特征點(diǎn)不具備方向不變性,所以引入灰度質(zhì)心來計(jì)算特征點(diǎn)的主方向。實(shí)現(xiàn)的主要步驟是:①特征點(diǎn)檢測(cè):選擇一個(gè)像素點(diǎn)與周圍的點(diǎn)相比,不一致則為特征點(diǎn);②特征點(diǎn)描述:將特征點(diǎn)附近的圖片放大,對(duì)放大后的像素點(diǎn)對(duì)進(jìn)行灰度值比較,組成n位二進(jìn)制串,所得的二進(jìn)制串為特征點(diǎn)的描述子;③特征點(diǎn)匹配:提取目標(biāo)模型與候選模型的特征點(diǎn)和描述子,求出兩點(diǎn)之間的最短及次短漢明距離,再進(jìn)行異或運(yùn)算得到相似程度,當(dāng)相似度達(dá)到50%時(shí),即特征點(diǎn)匹配成功。
利用本文方法實(shí)現(xiàn)增強(qiáng)現(xiàn)實(shí)自適應(yīng)跟蹤注冊(cè)的過程如下:首先,將獲取的視頻流采用高斯分布建模的方法檢測(cè)出運(yùn)動(dòng)的目標(biāo)區(qū)域,作為Camshift算法的初始搜索窗進(jìn)行跟蹤;然后,利用ORB算法對(duì)目標(biāo)區(qū)域進(jìn)行特征提取、匹配和誤匹配點(diǎn)對(duì)剔除;最后,計(jì)算與模板的映射矩陣,完成對(duì)虛擬物體的注冊(cè)。
為提高跟蹤的準(zhǔn)確率,采用高斯分布對(duì)背景模型進(jìn)行更新。通過統(tǒng)計(jì)每個(gè)像素點(diǎn)的均值和方差,利用式(1)建立背景模型
(1)
式中:f(x,y)為該點(diǎn)的灰度值,p[f(x,y)]為該點(diǎn)計(jì)算出來的概率值,如果p[f(x,y)]的值大于閾值,則判定該點(diǎn)為背景點(diǎn),否則為前景點(diǎn)。μ和σ2分別為均值和方差,是背景模型的主要參數(shù),主要是利用式(2)和式(3)進(jìn)行更新
μt(x,y)=(1-m)μt-1(x,y)+mf(x,y,t)
(2)
(3)
依據(jù)上述建立的背景模型,利用式(4)與當(dāng)前幀的像素值進(jìn)行差分運(yùn)算,選擇合適的閾值,計(jì)算出運(yùn)動(dòng)目標(biāo)的二值掩模
(4)
式中:Et(x,y)是當(dāng)前幀圖像的像素值,F(xiàn)t(x,y)是當(dāng)前幀背景圖像的像素值;T為分割閾值,It(x,y)為二值圖像,如果值為1,表示前景點(diǎn),也是要跟蹤的運(yùn)動(dòng)目標(biāo)區(qū)域;值為0,則為分割出來的背景點(diǎn)。將目標(biāo)區(qū)域的特征參數(shù)提取,作為Camshift算法初始搜索窗口的位置。將當(dāng)前視頻幀的RGB顏色模型轉(zhuǎn)換成HSV顏色模型,建立顏色直方圖。依據(jù)目標(biāo)區(qū)域的中心、大小和運(yùn)動(dòng)方向,利用Camshift算法計(jì)算當(dāng)前幀中目標(biāo)的質(zhì)心位置、零階矩和一階矩,并以此計(jì)算出搜索窗的大小。
傳統(tǒng)的ORB算法采用FAST(features from accelerated segment test)角點(diǎn)檢測(cè)算法進(jìn)行特征點(diǎn)的提取,主要是通過比較采樣點(diǎn)與周圍像素點(diǎn)的強(qiáng)度,判斷該點(diǎn)是否為特征點(diǎn)。該算法運(yùn)行速度快,但不具有尺度不變性的信息,會(huì)導(dǎo)致圖像經(jīng)過縮放后無法匹配到相應(yīng)的特征點(diǎn)。因此,在特征點(diǎn)提取時(shí),首先利用尺度空間理論,建立圖像金字塔。將圖像的尺度定義為函數(shù)L(x,y,s),利用式(5)建立Gauss函數(shù),隨后采用式(6)與圖像進(jìn)行卷積運(yùn)算可得到
(5)
L(x,y,s)=G(x,y,σ)I(x,y)
(6)
式中:s為尺度因子。通過式(7)將相鄰兩個(gè)尺度圖像相減,得到穩(wěn)定的尺度空間
D(x,y,σ)=[G(x,y,kσ)-G(x,y,σ)]I(x,y)=L(x,y,ks)-L(x,y,s)
(7)
在不同尺度的高斯差分空間中,以一個(gè)像素點(diǎn)p為中心,半徑為3的圓上,得到16個(gè)像素點(diǎn),分別計(jì)算到中心點(diǎn)的像素差。如果像素差的絕對(duì)值有9個(gè)超過設(shè)定的閾值,則判斷點(diǎn)p為角點(diǎn)。對(duì)確定的角點(diǎn)利用非極大值抑制的方法,在以p點(diǎn)為中心的鄰域內(nèi)進(jìn)行最后的篩選,若p點(diǎn)的得分最高,則保留,否則舍棄。依次篩選所有空間的角點(diǎn),確定最終的特征點(diǎn)。
將提取的特征點(diǎn)利用rBRIEF算法進(jìn)行描述,該算法是一種二值特征描述子,將角點(diǎn)主方向信息融入其中,使特征描述子具有旋轉(zhuǎn)不變性。對(duì)得到的描述子利用暴力匹配的方式進(jìn)行粗匹配,依據(jù)漢明距離的大小進(jìn)行初步的篩選。最后針對(duì)誤匹配點(diǎn)對(duì),采用隨機(jī)采樣一致性算法[14](random sample consensus)進(jìn)行剔除。
通過上述方法對(duì)目標(biāo)進(jìn)行跟蹤和匹配后,計(jì)算和測(cè)量攝像機(jī)的內(nèi)外參數(shù)矩陣,得到三維注冊(cè)矩陣,與虛擬物體融合,完成增強(qiáng)現(xiàn)實(shí)的三維注冊(cè)。利用式(8)將投影點(diǎn)由世界坐標(biāo)系轉(zhuǎn)換為攝像機(jī)坐標(biāo)系
(8)
式中:該矩陣是4*4規(guī)格,需要在最后添加“1”補(bǔ)足位進(jìn)行矩陣運(yùn)算[15]。其中Ec為點(diǎn)c在世界坐標(biāo)系的位置,F(xiàn)c為轉(zhuǎn)換后在攝像機(jī)坐標(biāo)系的位置,Me為攝像機(jī)外部參數(shù)矩陣,采用式(9)計(jì)算
(9)
式中:R是旋轉(zhuǎn)分量,通過計(jì)算攝像機(jī)與世界坐標(biāo)的旋轉(zhuǎn)角度獲得[15];T為世界坐標(biāo)系轉(zhuǎn)換到攝像機(jī)坐標(biāo)系的位移分量,通過攝像機(jī)在世界坐標(biāo)系中的位移得到。
將點(diǎn)c在攝像機(jī)坐標(biāo)系的位置,利用式(10)進(jìn)行投影計(jì)算
hc(u,v)T=MiFc(Xc,Yc,Zc)T
(10)
式中:hc(u,v)T為點(diǎn)c在屏幕上的投影位置,也是三維注冊(cè)的結(jié)果,Mi為攝像機(jī)內(nèi)部參數(shù)矩陣,通過人工測(cè)量的方法得到。實(shí)現(xiàn)的過程如圖1所示。
圖1 增強(qiáng)現(xiàn)實(shí)的三維注冊(cè)流程
如圖2所示,本文方法實(shí)現(xiàn)的主要流程如下:
步驟1 初始化待跟蹤的目標(biāo)和位置,載入視頻并利用高斯分布建立初始的背景模型。
步驟2 對(duì)背景模型進(jìn)行更新,利用背景差分法,得到包含運(yùn)動(dòng)目標(biāo)的區(qū)域。
步驟3 將目標(biāo)區(qū)域作為搜索窗,并計(jì)算該搜索窗的顏色直方圖。
步驟4 采用Camshift算法對(duì)目標(biāo)區(qū)域進(jìn)行跟蹤。
步驟5 將目標(biāo)區(qū)域的跟蹤結(jié)果,利用ORB算法將搜索框的跟蹤目標(biāo)與當(dāng)前幀圖像進(jìn)行匹配,確定目標(biāo)區(qū)域。
步驟6 在特征點(diǎn)匹配之后,判斷跟蹤區(qū)域是否失效;如果失效,返回步驟4,將ORB算法匹配的目標(biāo)窗口,提供給Camshift算法對(duì)目標(biāo)區(qū)域重新進(jìn)行跟蹤;如果沒有失效,則計(jì)算出三維注冊(cè)矩陣,完成虛擬物體的三維注冊(cè)。
步驟7 虛擬物體注冊(cè)完成之后,判斷是否是最后一幀視頻,如果是,則方法結(jié)束,否則返回步驟2選取下一幀重新開始運(yùn)行。
圖2 方法流程
本文方法的實(shí)驗(yàn)硬件環(huán)境為Inter(R) Core(TM) i5-3230,2.6 GHz,12 G內(nèi)存;仿真環(huán)境為Windows10操作系統(tǒng),VS2013、Opencv 3.1.0和Opengl 3.1.2。
為了驗(yàn)證本文方法跟蹤目標(biāo)的有效性,分別利用Camshift算法、Meanshift算法、本文方法對(duì)相同的視頻序列進(jìn)行跟蹤。跟蹤視頻序列是一段汽車運(yùn)動(dòng),總幀數(shù)為252,具有背景復(fù)雜、尺度變化、遮擋等復(fù)雜環(huán)境因素。跟蹤結(jié)果如圖3所示。
圖3 Meanshift、Camshift、本文方法部分 視頻幀跟蹤結(jié)果對(duì)比
圖3所截取跟蹤結(jié)果分別為第29幀、第104幀、第166幀、第182幀、第222幀。從29幀和104幀可以看出,在目標(biāo)的尺度較小時(shí),Meanshift和Camshift算法的跟蹤窗口發(fā)散,不能正常跟蹤到目標(biāo);在第166幀具有遮擋的情況下,本文方法和Meanshift算法可以正常跟蹤;Camshift算法也可以跟蹤到目標(biāo),但跟蹤窗口很小,被方塊遮擋,導(dǎo)致顯示不清楚;在182和222幀時(shí),都可以正常跟蹤,但Camshift算法跟蹤窗口發(fā)散,將背景區(qū)域也包括進(jìn)來,Meanshift算法跟蹤窗口魯棒性較差,本文方法可以正常跟蹤。
針對(duì)特征匹配,本文選取6組特征匹配數(shù)據(jù),分別具有尺度變化、旋轉(zhuǎn)變化等特征。選擇SIFT(scale-invariant feature transform)、SURF、ORB與本文方法進(jìn)行比較,部分結(jié)果如圖4所示。
圖4 具有尺度變化的圖像匹配
圖4是一組具有尺度變化的數(shù)據(jù)集,線條表示兩幅不同尺度圖像的特征匹配點(diǎn)對(duì)。由圖可以看出,SIFT與SURF算法存在少量的誤匹配,ORB算法的誤匹配點(diǎn)對(duì)較多,本文方法匹配點(diǎn)對(duì)多且準(zhǔn)確率高。在匹配的運(yùn)行效率上,本文將每種算法的全部運(yùn)行時(shí)間進(jìn)行對(duì)比。實(shí)驗(yàn)結(jié)果表明(如圖5所示),ORB算法的運(yùn)行時(shí)間最短,本文方法次之,SIFT和SURF算法的運(yùn)行時(shí)間要遠(yuǎn)高于前面兩種算法。從匹配結(jié)果可以看出(如圖6所示),本文方法特征點(diǎn)匹配準(zhǔn)確率高于SIFT、SURF和傳統(tǒng)的ORB匹配算法。綜上,ORB算法的運(yùn)行效率較高,但匹配準(zhǔn)確率最低,本文方法的運(yùn)行效率低于ORB算法,但高于SIFT和SURF算法,匹配準(zhǔn)確率也高于其它算法。因此,本文方法在尺度、運(yùn)行效率及匹配準(zhǔn)確率上可以滿足增強(qiáng)現(xiàn)實(shí)三維注冊(cè)的要求。
圖5 算法匹配的運(yùn)行時(shí)間對(duì)比
圖6 算法的匹配準(zhǔn)確率對(duì)比
選擇SURF算法與本文方法進(jìn)行實(shí)時(shí)的三維跟蹤注冊(cè)測(cè)試。在實(shí)時(shí)跟蹤注冊(cè)時(shí),分別截取4張注冊(cè)結(jié)果。第一張和第二張是對(duì)象正面和旋轉(zhuǎn)注冊(cè)的結(jié)果,第三張是目標(biāo)對(duì)象發(fā)生視角變化的注冊(cè)結(jié)果,第四張目標(biāo)發(fā)生大面積遮擋的注冊(cè)結(jié)果。結(jié)果如圖7、圖8所示。
圖7 SURF算法三維注冊(cè)結(jié)果
圖8 本文方法三維注冊(cè)結(jié)果
對(duì)比結(jié)果可以看出,SURF與本文方法在目標(biāo)正面、旋轉(zhuǎn)、視角變化的情況下,都可以正常注冊(cè),但在目標(biāo)發(fā)生大面積遮擋時(shí),SURF算法不能正常注冊(cè);同時(shí),在運(yùn)行效率上,本文方法遠(yuǎn)高于SURF算法,沒有出現(xiàn)卡頓效果。實(shí)驗(yàn)結(jié)果表明,本文方法在目標(biāo)發(fā)生旋轉(zhuǎn)、視角和遮擋的情況下,能準(zhǔn)確跟蹤到目標(biāo)并進(jìn)行注冊(cè)。
本文提出了一種基于增強(qiáng)現(xiàn)實(shí)的自適應(yīng)跟蹤注冊(cè)方法,該方法通過高斯分布的背景建模法提高Camshift算法對(duì)目標(biāo)區(qū)域顏色的檢測(cè),保證目標(biāo)跟蹤的準(zhǔn)確性;利用尺度空間理論,使ORB算法在尺度發(fā)生變化的情況下,仍能準(zhǔn)確的進(jìn)行特征點(diǎn)的提取和匹配;通過攝像機(jī)的內(nèi)外參數(shù),計(jì)算三維注冊(cè)矩陣完成虛擬物體與目標(biāo)對(duì)象的注冊(cè)。實(shí)驗(yàn)結(jié)果表明,本文方法基本滿足增強(qiáng)現(xiàn)實(shí)系統(tǒng)對(duì)準(zhǔn)確性和穩(wěn)定性的要求。