蘇澤蔭,林志賢,郭太良
(福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350108)
摘要:針對(duì)移動(dòng)設(shè)備弱處理能力和低內(nèi)存等局限性,導(dǎo)致增強(qiáng)現(xiàn)實(shí)技術(shù)不能在移動(dòng)設(shè)備上普及,提出一種新的增強(qiáng)現(xiàn)實(shí)技術(shù)方案。采用SURF算法提取視頻幀圖像的特征點(diǎn),接著使用FREAK算法進(jìn)行特征點(diǎn)描述;在漢明距離強(qiáng)制匹配之后,采用改進(jìn)的RANSAC算法剔除了誤匹配點(diǎn),然后通過(guò)計(jì)算比較匹配特征點(diǎn)占樣本圖像特征點(diǎn)的比重,判斷是否成功匹配目標(biāo)物體;最后渲染對(duì)應(yīng)的三維模型完成增強(qiáng)現(xiàn)實(shí)三維注冊(cè)。通過(guò)在Android移動(dòng)設(shè)備上的驗(yàn)證,結(jié)果表明該技術(shù)方案滿足移動(dòng)設(shè)備對(duì)實(shí)時(shí)性、準(zhǔn)確性和魯棒性的要求,為移動(dòng)增強(qiáng)現(xiàn)實(shí)的推廣奠定了良好的基礎(chǔ)。
關(guān)鍵詞:增強(qiáng)現(xiàn)實(shí);SURF;FREAK;漢明距離;RANSAC;三維注冊(cè)
中圖分類號(hào):TP391.4文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.09.004
引用格式:蘇澤蔭,林志賢,郭太良.基于Android移動(dòng)設(shè)備的增強(qiáng)現(xiàn)實(shí)技術(shù)研究[J].微型機(jī)與應(yīng)用,2017,36(9):11-14.
0引言
*基金項(xiàng)目: 國(guó)家重點(diǎn)研發(fā)計(jì)劃課題(2016YFB0401503);廣東省科技重大專項(xiàng)(2016B090906001);福建省科技重大專項(xiàng)(2014HZ00031);福建省資助省屬高校專項(xiàng)課題(JK2014002)
隨著智能移動(dòng)終端的不斷普及,以及硬件配置的不斷提升,增強(qiáng)現(xiàn)實(shí)技術(shù)[12]在移動(dòng)設(shè)備的研究與開(kāi)發(fā)已成為當(dāng)今的熱點(diǎn)。增強(qiáng)現(xiàn)實(shí)技術(shù)在移動(dòng)手持設(shè)備上的應(yīng)用又稱為移動(dòng)增強(qiáng)現(xiàn)實(shí)(Mobile Augmented Reality,MAR)[3-4]。但由于增強(qiáng)現(xiàn)實(shí)中的關(guān)鍵技術(shù)——三維注冊(cè)[57],需要大量的運(yùn)算和內(nèi)存,因此本文根據(jù)移動(dòng)設(shè)備的實(shí)際情況,對(duì)三維注冊(cè)算法進(jìn)行改進(jìn),研究設(shè)計(jì)出一個(gè)通用可移植的增強(qiáng)現(xiàn)實(shí)系統(tǒng)方案并實(shí)際測(cè)試驗(yàn)證。
在實(shí)際使用智能移動(dòng)設(shè)備進(jìn)行增強(qiáng)現(xiàn)實(shí)的三維注冊(cè)時(shí),由于待識(shí)別的物體存在尺度和旋轉(zhuǎn)變換,以及周?chē)h(huán)境如光照等干擾,這就要求三維注冊(cè)算法要具有良好的魯棒性,而實(shí)時(shí)性和準(zhǔn)確性大大影響了用戶體驗(yàn),因此,在移動(dòng)設(shè)備上開(kāi)發(fā)三維注冊(cè)算法需要滿足實(shí)時(shí)性、準(zhǔn)確性和魯棒性要求。
1系統(tǒng)整體框架設(shè)計(jì)
Android移動(dòng)設(shè)備調(diào)用系統(tǒng)內(nèi)置的Camera API 接口,調(diào)用 Android 移動(dòng)設(shè)備的攝像頭,對(duì)攝像頭所拍攝場(chǎng)景的圖像進(jìn)行采集和存儲(chǔ),再對(duì)圖像進(jìn)行圖像預(yù)處理;然后采用SURF[8]算法進(jìn)行特征點(diǎn)檢測(cè),并用FREAK[9]算法進(jìn)行特征描述,然后采用漢明距離與目標(biāo)樣本庫(kù)進(jìn)行初步匹配,最后采用改進(jìn)的RANSAC進(jìn)行匹配優(yōu)化。根據(jù)匹配率確定視頻圖像幀中是否有目標(biāo)物體[10],如果有則采用OpenGL ES對(duì)攝像頭視野進(jìn)行虛擬三維場(chǎng)景的渲染和疊加,完成三維注冊(cè)。圖1是系統(tǒng)方案設(shè)計(jì)框圖。
2三維注冊(cè)算法方案設(shè)計(jì)
三維注冊(cè)是實(shí)現(xiàn)移動(dòng)增強(qiáng)現(xiàn)實(shí)的關(guān)鍵技術(shù),它通過(guò)在攝像頭視野中對(duì)目標(biāo)圖片進(jìn)行分析匹配,根據(jù)投影幾何的相關(guān)知識(shí),準(zhǔn)確計(jì)算出攝像頭在真實(shí)世界的姿態(tài)信息,從而實(shí)現(xiàn)三維虛擬模型的準(zhǔn)確添加。傳統(tǒng)的三維注冊(cè)技術(shù)是基于人工標(biāo)志的,容易受光照變化、遮擋情況的影響,而且制作麻煩,應(yīng)用場(chǎng)景有限,不適合推廣使用,因此本文采用基于自然特征的三維注冊(cè)技術(shù)。
SURB是常見(jiàn)的用于自然特征三維注冊(cè)技術(shù)的算法,由于其采用盒式濾波器與原圖像卷積的計(jì)算方式,只需要幾次加減法運(yùn)算,而且運(yùn)算量與盒子濾波器大小無(wú)關(guān),所以能夠快速地構(gòu)造出SURF的尺度金字塔,與SIFT算法[11]相比,速度有了較大提升,同時(shí)也具有尺度不變的特性,對(duì)光照變化、仿射、透視變化也具有較強(qiáng)的魯棒性。但SURF算法特征描述向量是高維向量,而且采用最近鄰搜索算法窮盡搜索,計(jì)算量較大,導(dǎo)致SURF 算法在構(gòu)建局部特征描述符與特征匹配階段耗時(shí)過(guò)長(zhǎng),難以滿足移動(dòng)設(shè)備對(duì)實(shí)時(shí)性的要求。因此本文采用二進(jìn)制描述符算法FREAK作為描述符算法來(lái)改進(jìn)SURF的不足。該方法模仿視網(wǎng)膜結(jié)構(gòu)的采樣模板對(duì)特征點(diǎn)進(jìn)行描述符構(gòu)造,對(duì)旋轉(zhuǎn)、噪聲、尺度都具有很好的性能。這類算法采用不同的采樣模式生成二進(jìn)制描述符,降低了描述符的維度,依靠計(jì)算特征描述符的漢明距離進(jìn)行匹配,使運(yùn)算速度和內(nèi)存占用方面都得到了很好的改善。
結(jié)合上述分析和文獻(xiàn)[12]對(duì)各個(gè)特征點(diǎn)提取與匹配的算法進(jìn)行實(shí)際測(cè)試,本文采用算法如下:采用SURF算法進(jìn)行特征提取,然后用FREAK算法進(jìn)行特征描述,在漢明距離的基礎(chǔ)上結(jié)合改進(jìn)的RANSAC算法對(duì)初步篩選的點(diǎn)去偽,獲得較為精準(zhǔn)的匹配點(diǎn)對(duì),再通過(guò)判斷匹配特征點(diǎn)占樣本圖像特征點(diǎn)的比重,確定是否成功匹配目標(biāo)物體,保證了識(shí)別的準(zhǔn)確性,然后渲染對(duì)應(yīng)的虛擬三維模型,完成三維注冊(cè)。
2.1SURF特征點(diǎn)檢測(cè)
SURF算法的特征點(diǎn)檢測(cè)是基于尺度空間理論的。為了在尺度空間中檢測(cè)極值點(diǎn),SURF算法建立具有多尺度空間的圖像金字塔;利用尺度逐漸遞增的盒式濾波器與原圖像卷積創(chuàng)建圖像金字塔生成多尺度空間。首先,使用積分圖像加速圖像卷積來(lái)提高計(jì)算速度;再通過(guò)計(jì)算圖像中的每一個(gè)像素點(diǎn)的Hessian矩陣行列式得到特征點(diǎn)的值。在實(shí)際計(jì)算中,采用盒式濾波器來(lái)近似高斯濾波的方法,可極大地提高計(jì)算速度。為使特征點(diǎn)具有尺度不變性, 首先去掉行列式值低的像素, 然后進(jìn)行尺度空間和鄰域空間的非極大值抑制, 最后所得的極值點(diǎn)即為特征點(diǎn)。
2.2FREAK特征描述
FREAK是受人類視網(wǎng)膜啟發(fā)的一種能唯一識(shí)別關(guān)鍵點(diǎn)的穩(wěn)健描述子,在計(jì)算過(guò)程中耗費(fèi)更少的計(jì)算時(shí)間和存儲(chǔ)空間。FREAK采用圓形的視網(wǎng)膜采樣網(wǎng)格,這樣能夠在保證人眼信息識(shí)別量的基礎(chǔ)上,減少信息的運(yùn)算量。不同于BRISK和ORB對(duì)所有點(diǎn)只用相同的核,F(xiàn)REAK對(duì)每個(gè)點(diǎn)使用的核是不同的,高斯核的半徑與σ值成比例。FREAK按照ORB的方法,通過(guò)最大化對(duì)間方差來(lái)識(shí)別采樣點(diǎn)對(duì),然后取不相關(guān)的點(diǎn)對(duì),以便為每個(gè)關(guān)鍵點(diǎn)提供最大值信息。為了找出采樣點(diǎn)對(duì),以產(chǎn)生位向量,F(xiàn)REAK采用類似ORB的方法,但并不是匹配每一點(diǎn)對(duì),而是學(xué)習(xí)哪些點(diǎn)對(duì)能得到最好的結(jié)果。算法如下:
?。?)用接近50 000個(gè)提取出的關(guān)鍵點(diǎn)構(gòu)造矩陣D,每一行對(duì)應(yīng)一個(gè)關(guān)鍵點(diǎn),每個(gè)關(guān)鍵點(diǎn)以一種從視網(wǎng)膜采樣模式獲取的所有可能的點(diǎn)對(duì)構(gòu)成巨大的描述符表示。使用了43個(gè)感受野,產(chǎn)生大約1 000個(gè)點(diǎn)對(duì)。
?。?)計(jì)算每一列的均值。均值為0.5時(shí)產(chǎn)生最大的方差。
?。?)按照方差降序?qū)α信判颉?/p>
(4)選出最佳列并迭代地加上剩余列,以使它們與選中列之間為弱相關(guān)[13]。
在這種方法中,選擇在靠外區(qū)域中比較采樣點(diǎn)的對(duì),最后選擇在模式內(nèi)部區(qū)域比較點(diǎn)的對(duì)。這與視網(wǎng)膜首先試圖定位目標(biāo),然后再通過(guò)精確匹配密集分布在目標(biāo)周?chē)狞c(diǎn)來(lái)辨識(shí)的原理相似。
FREAK模仿視網(wǎng)膜的跳視搜索功能,搜索描述子的前16個(gè)代表粗略信息的字節(jié),如果距離小于閾值,將繼續(xù)搜索之后的字節(jié),獲取更精細(xì)的結(jié)果。因此,執(zhí)行一種級(jí)聯(lián)的比較,會(huì)進(jìn)一步加快比較的步驟,因?yàn)樵谇?6 B比較中超過(guò)90%采樣點(diǎn)被舍棄掉了。
為了估計(jì)特征點(diǎn)的主方向,F(xiàn)REAK的方向分配方法與BRISK 相似,通過(guò)選擇感受野對(duì)來(lái)總結(jié)估計(jì)局部梯度值,且主要選擇相對(duì)于中心對(duì)稱的感受野對(duì)。將此處的梯度值作為特征點(diǎn)的主方向。
2.3特征點(diǎn)匹配
利用漢明距離將檢測(cè)到的特征點(diǎn)與基準(zhǔn)圖像進(jìn)行特征點(diǎn)匹配,完成匹配過(guò)程。在匹配過(guò)程中,不可避免地存在誤匹配點(diǎn),因此需要對(duì)已匹配的特征點(diǎn)采用改進(jìn)的RANSAC一致性檢驗(yàn)算法進(jìn)行篩選,剔除誤匹配點(diǎn)。傳統(tǒng)的RANSAC算法由于迭代次數(shù)多,運(yùn)算量非常大,不能滿足實(shí)時(shí)性要求。因此,本文采用RANSAC改進(jìn)算法:利用結(jié)構(gòu)相似的尺寸相似和位序相似兩種約束來(lái)剔除大量誤匹配點(diǎn),得到新的匹配點(diǎn)集,作為RANSAC算法的輸入,求出變換矩陣。改進(jìn)的RANSAC算法不僅提高了匹配速度,而且還提高了匹配精度[14]。
2.4識(shí)別目標(biāo)的確定
當(dāng)視頻幀圖像進(jìn)行描述符匹配后,計(jì)算并判斷匹配點(diǎn)數(shù)目占樣本圖像匹配點(diǎn)數(shù)的比重是否大于事先設(shè)定的閾值,以此來(lái)確定是否成功匹配到目標(biāo)物體。
2.5虛擬三維物體的渲染
根據(jù)識(shí)別匹配結(jié)果加載對(duì)應(yīng)的三維物體數(shù)據(jù), 完成攝像頭位姿的估算并利用 OpenGL ES 圖形庫(kù)在場(chǎng)景相應(yīng)位置生成其相對(duì)應(yīng)的三維虛擬物體, 將虛擬三維物體疊加到攝像頭視野中。
3Android平臺(tái)增強(qiáng)現(xiàn)實(shí)技術(shù)的實(shí)現(xiàn)
由于Android應(yīng)用主要是用Java語(yǔ)言開(kāi)發(fā),執(zhí)行效率比較低,因此,本文算法的實(shí)現(xiàn)采用OpenCV圖像處理庫(kù)加上Android NDK開(kāi)發(fā)工具,進(jìn)行算法的C、C++語(yǔ)言開(kāi)發(fā),大大提高了運(yùn)行效率。
Android移動(dòng)設(shè)備調(diào)用攝像頭獲取視頻幀圖像,并進(jìn)行圖像預(yù)處理,然后進(jìn)行識(shí)別和匹配,如果有目標(biāo)物體,則采用OpenGL ES進(jìn)行三維模型渲染。
整個(gè)Android應(yīng)用是在Eclipse開(kāi)發(fā)工具上進(jìn)行模塊整合和界面的開(kāi)發(fā)。最后生成APK文件安裝在手機(jī)上即可實(shí)現(xiàn)增強(qiáng)現(xiàn)實(shí)功能的開(kāi)發(fā)。
4增強(qiáng)現(xiàn)實(shí)技術(shù)方案驗(yàn)證
為了驗(yàn)證本文所述算法實(shí)際運(yùn)行的效果,專門(mén)開(kāi)發(fā)了在Andriod手機(jī)運(yùn)行的應(yīng)用程序。將算法移植到Andriod手機(jī)上運(yùn)行。用于測(cè)試的手機(jī)是華為榮耀8,搭載的Android系統(tǒng)的API版本為6.0.0,開(kāi)發(fā)工具采用Eclipse,采用NDK工具版本為r10e,OpenCV函數(shù)庫(kù)版本為3.1.0。
4.1實(shí)時(shí)性驗(yàn)證
為了有更好的用戶體驗(yàn),移動(dòng)設(shè)備的實(shí)時(shí)性除了滿足耗時(shí)操作不能超過(guò)5 s的基本要求外,還應(yīng)盡量縮短用戶等待時(shí)間,一般1 s以內(nèi)能獲得比較好的用戶體驗(yàn)。本文在驗(yàn)證實(shí)時(shí)性時(shí),首先對(duì)同一個(gè)物體,將幾種常見(jiàn)的算法在Android手機(jī)上的運(yùn)行效果進(jìn)行對(duì)比,運(yùn)行結(jié)果如圖2中的(a)~(e)所示,對(duì)應(yīng)時(shí)間如表1所示。結(jié)果證明本文算法完成匹配時(shí)間為100 ms,耗時(shí)最短,滿足移動(dòng)設(shè)備對(duì)實(shí)時(shí)性的要求。
4.2魯棒性驗(yàn)證
為了驗(yàn)證本文算法的穩(wěn)定性及魯棒性,將算法在 Android 手機(jī)上實(shí)現(xiàn),在不同視角、不同旋轉(zhuǎn)角度、不同尺度、部分遮擋的情況下進(jìn)行測(cè)試,結(jié)果如圖3所示。測(cè)試結(jié)果證明:本文算法在各種情況下均可以正確識(shí)別物體并渲染3D模型。
4.3準(zhǔn)確性驗(yàn)證
為了驗(yàn)證本文算法的準(zhǔn)確性,將算法在Android手機(jī)上實(shí)現(xiàn),用不同的物體進(jìn)行測(cè)試,結(jié)果如圖4所示。結(jié)果證明只有在正確的物體出現(xiàn)在攝像頭視野中才會(huì)渲染3D模型。為了進(jìn)一步驗(yàn)證準(zhǔn)確性,在開(kāi)發(fā)Android應(yīng)用程序時(shí),添加本地?cái)?shù)據(jù)庫(kù),增加樣本數(shù)量,對(duì)20種不同的書(shū)籍、圖片進(jìn)行識(shí)別,結(jié)果證明,本文算法基本上都能夠識(shí)別出來(lái),準(zhǔn)確率達(dá)95%,滿足移動(dòng)設(shè)備的準(zhǔn)確性要求。
5結(jié)論
本文針對(duì)Android移動(dòng)設(shè)備的局限性,提出一種新的三維注冊(cè)算法:使用SURF檢測(cè)具有尺度不變性的特征點(diǎn),然后使用FREAK特征點(diǎn)描述子得到二進(jìn)制描述子;在漢明距離的基礎(chǔ)上結(jié)合改進(jìn)的RANSAC算法剔除了誤匹配點(diǎn),再通過(guò)判斷匹配特征點(diǎn)占樣本圖像的比重來(lái)確定是否成功匹配目標(biāo)物體,進(jìn)一步保證了識(shí)別的準(zhǔn)確性。通過(guò)在Android移動(dòng)設(shè)備的驗(yàn)證結(jié)果表明,此算法方案設(shè)計(jì)滿足移動(dòng)設(shè)備的實(shí)時(shí)性、準(zhǔn)確性和魯棒性要求。因此,本文提出的三維注冊(cè)算法方案有很強(qiáng)的實(shí)用性,為移動(dòng)增強(qiáng)現(xiàn)實(shí)的實(shí)現(xiàn)奠定了良好的基礎(chǔ)。本文算法的不足之處在于:所用的目標(biāo)識(shí)別方法僅限于樣本庫(kù)比較少的情況,之后還應(yīng)加上服務(wù)器端[15],在服務(wù)器端可以建立龐大的樣本庫(kù),將大大增加可識(shí)別的物體數(shù)量。
參考文獻(xiàn)
?。?] 王涌天, 陳靖, 程德文. 增強(qiáng)現(xiàn)實(shí)技術(shù)導(dǎo)論[M]. 北京:科學(xué)出版社,2015.
[2] 基珀, 蘭博拉. 增強(qiáng)現(xiàn)實(shí)技術(shù)導(dǎo)論[M]. 北京: 國(guó)防工業(yè)出版社, 2014.
?。?] GRAVDAL E.Augmented reality and object tracking for mobile devices[D]. Norway:Norwegian University,2012.
?。?] AVILA L, BAILEY M.Augment your reality[J].Computer Graphics and Applications, IEEE,2016,36(1):6-7.
?。?] 郭樹(shù)濤. 一種新的增強(qiáng)現(xiàn)實(shí)三維注冊(cè)算法[J]. 信息通信, 2014 ,27(1): 4244.
?。?] 施琦,王涌天,陳靖.一種基于視覺(jué)的增強(qiáng)現(xiàn)實(shí)三維注冊(cè)算法[J].中國(guó)圖象圖形學(xué)報(bào),2002, 7(7): 56-60.
?。?] AZUMA R T. A survey of augmented reality[J]. Teleoperators and Virtual Environments, 1997,6(4):355-385.
?。?] BAY H, TUYTELAARS T, GOOL L V. SURF: speeded up robust features[J]. Computer Vision and Image Understanding, 2006, 110(3):346-359.
?。?] 謝紅,王石川,解武.基于改進(jìn)的FREAK算法的圖像特征點(diǎn)匹配[J]. 應(yīng)用科技, 2016,43(4):17.
?。?0] 惠記莊, 羅麗, 楊永奎,等. 基于SURFBRISK的目標(biāo)識(shí)別匹配與定位方法研究[J]. 長(zhǎng)安大學(xué)學(xué)報(bào):自然科學(xué)版, 2016, 36(3):93101.
[11] 楊天天,魯云萍,張為華,等.一種基于GPGPU的SIFT加速算法[J].電子技術(shù)應(yīng)用,2015,41(1):149-152 .
?。?2] BEKELE D, TEUTSCH M, SCHUCHERT T. Evaluation of binary keypoint descriptors[C]. IEEE International Conference on Image Processing. IEEE,2013:36523656.
[13] 李晶皎,趙 越,王愛(ài)俠,等. 基于改進(jìn)FREAK的增強(qiáng)現(xiàn)實(shí)實(shí)時(shí)注冊(cè)算法[J].小型微型計(jì)算機(jī)系統(tǒng),2016, 37(1):173-177.
[14] 許可可, 朱文球, 郭富祿. 基于結(jié)構(gòu)相似的RANSAC改進(jìn)算法[J]. 計(jì)算機(jī)工程與應(yīng)用, 2016, 52(12).168-171.
?。?5] 王飛,許魁,徐友云,等.大數(shù)據(jù)無(wú)線通信面臨的幾點(diǎn)挑戰(zhàn)與對(duì)策[J].電子技術(shù)應(yīng)用,2015,41(3):12-16.