羅林++李俊琴
摘要:目前,增強現(xiàn)實技術得到了越來越廣泛的應用。增強現(xiàn)實系統(tǒng)的視覺跟蹤注冊有基于人工標記和基于自然特征標記注冊兩種方式,本文探討了基于自然特點標記的增強現(xiàn)實系統(tǒng)的實現(xiàn)方法。利用OpenCV的ORB特征檢測得到視頻圖像幀的特征點,然后將這些特征點與參考圖像的ORB特征點進行漢明距離匹配,并通過RANSAC算法將錯誤的匹配點剔除,從何得到正確的匹配圖像,然后根據(jù)匹配的點計算世界坐標系到圖像坐標系的變換矩陣,最后通過OpenGL將與特征對象對應的虛擬物渲染到屏幕上。
關鍵詞:增強現(xiàn)實;自然特征;ORB;OpenCV;OpenGL
中圖分類號:TP18 文獻標識碼:A 文章編號:1009-3044(2015)29-0165-02
Realization of Augmented Reality System Based on Natural Features
LUO Lin, LI Jun-qin
(Guangzhou University Huaruan Software College, Guangzhou 510990, China)
Abstract: At present, the technology of augmented reality is more and more widely used. The visual tracking registration of augmented reality system is based on manual marking and registration of natural features, This paper discusses the implementation of augmented reality system based on natural features . The features of the video frame are detected and computed by OpenCV librarys ORB feature detection algorithm , then match the ORB features with the reference images ORB features by hamming distance, and use the RANSAC algorithm to get the correct matches, then calculate the matrix transformation from world coordinate system to image coordinate system ,then render the reference image corresponding to virtual object by OpenGL.
Key words:augmented reality;natural features;ORB;OpenCV;OpenGL
1 概述
“增強現(xiàn)實技術是將真實場景同虛擬物體加以融合的一種手段,增強現(xiàn)實系統(tǒng)的特點是虛實空間的一致性結合以及實時交互,具體包括3D物體的注冊技術、 顯示技術、跟蹤和定位技術等”[1]。
由于增強現(xiàn)實技術能在真實場景中融合虛擬物體,所以增強現(xiàn)實技術在交互學習、互動娛樂、交互廣告等領域有廣闊的應用前景。在交互學習場景中,兒童電子出版物的應用比較廣泛。其一般方法是在紙質出版物中印刷簡單的標記或者特定的圖像,該標記或圖像代表了可以融合在在真實場景中的虛擬物體。兒童通過手機或者帶有攝像頭對準該標記或圖像,增強現(xiàn)實應用程序則在手機屏幕或者計算機顯示器上顯示融合了虛擬物體或者影視片段的真實場景,這些場景可以隨著用戶的操作,可以進一步該表虛擬物體呈現(xiàn)的外觀或者相應的影視片段,能極大提高兒童學習的興趣。
在增強現(xiàn)實應用中的“視覺跟蹤注冊技術主要分為基于人工標記和基于自然特征標記的注冊”[2]。人工標記檢測的計算復雜度低、算法成熟,但是也有會遮蓋真實場景、受遮擋影響較大的問題,而基于自然特征的注冊方法則避免了上述問題,得到了越來越廣泛的應用。
本文將討論一種在IOS平臺上基于自然特征進行增強現(xiàn)實應用開發(fā)的方法。
2 關鍵技術
增強現(xiàn)實應用是基于計算機視覺的。許多增強現(xiàn)實應用都需要首先從抓取的視頻幀圖像中用計算機視覺的處理方法提取特征或者圖像分析、比較。OpenCV是一個開源的計算機視覺開發(fā)庫,它集合了常用圖像處理、分析、比較算法,在增強現(xiàn)實等計算機視覺研究領域得到了廣泛的應用,本文討論的增強現(xiàn)實系統(tǒng)在圖像特征匹配、攝像機標定及姿態(tài)計算等方面將使用OpenCV庫函數(shù)。
基于自然特征注冊的增強現(xiàn)實應需要要解決的另一個問題是自然特征的匹配。在實際應用中可以利用SIFT、SURF、ORB等算法抽取圖像的特征點。其中SIFT、SURF算法準確度較高,但執(zhí)行效率較低,不適合應用在實時運行的環(huán)境中。而“在計算速度方面,ORB是SIFT的100倍左右,是SURF的10倍左右,可以滿足實時的特征匹配”[3]。
增強現(xiàn)實應用還需要將攝像頭抓取的視頻幀和虛擬物體融合顯示在顯示設備上。通常情況下,虛擬物是3D模型,為此,在顯示時需要用到3D圖形開發(fā)庫OpenGL。OpenGL是一套跨平臺的高性能圖形開發(fā)庫,可以在多種平臺上開發(fā)2D、3D圖形應用。本文討論的增強現(xiàn)實系統(tǒng)在視頻幀顯示、融合顯示3D模型等方面將使用OpenGL圖形開發(fā)庫。
3 實現(xiàn)
本文討論的增強現(xiàn)實應用的流程如圖1所示:
圖1 實現(xiàn)流程
如圖1,本增強現(xiàn)實系統(tǒng)分為兩步。
第一步是離線部分,可以在計算機或者在手機上實現(xiàn)。這一步需要標定攝像頭和計算參考圖像的ORB特征。
在增強現(xiàn)實的應用中,是通過攝像頭獲得真實世界的影像,然后計算特定圖像在攝像頭投影平面的變換矩陣,才可以將3D虛擬物體融合在真實場景中。根據(jù)文獻[4],在小孔攝像機模型中,世界坐標系中的點映射到圖像平面坐標系的公式是:Pp = M1.M2.Pw,其中Pp是圖像平面坐標系中的點坐標,Pw是世界坐標系中的點坐標,M1是攝像頭的內參矩陣,是固定不變的,M2是攝像頭的外參矩陣,會隨著攝像頭的姿態(tài)變化而變化。因此,在這一步里,將根據(jù)文獻[4],利用OpenCV庫的函數(shù)calibrateCamera先計算出攝像頭的內參矩陣M1,外參矩陣在第二步里再計算。
離線部分還需要計算參考圖像的ORB特征,其方法是創(chuàng)建OpenCV庫中的Orb特征檢測對象,然后遍歷作為模板的參考圖像序列,使用orb對象的detectAndCompute方法得到每一張參考對象的ORB特征點序列及對應的特征點描述系列,并將這兩個序列記錄在文件或者數(shù)據(jù)庫中。
第二步是運行在iPhone手機上的實時部分,其步驟是:
1)利用IOS平臺的AVFoundation庫中的AVCaptureSession對象抓取攝像頭中的視頻幀,將其數(shù)據(jù)通過OpenGL庫函數(shù)glTexImage2D,將獲取的視頻幀數(shù)據(jù)綁定到OpenGL的一個紋理對象t上,然后將視頻幀數(shù)據(jù)轉換成OpenCV中的Mat對象vm,便于下一步處理;
2)如同離線部分,利用OpenCV庫的ORB特征提取方法獲得vm的特征點序列k1及對應的特征點描述序列d1;
3)遍歷參考圖像,利用OpenCV庫函數(shù)中的cv::BFMatcher對象的match方法按照漢明距離計算參考圖像的特征點描述系列d0與vm的特征點描述序列d1的所有匹配點序列mb,將mb中所有配對點按照漢明距離的升序排序,取前100個點作為最好的配對點,此時的mb序列中存在著若干錯誤的匹配對,可以用OpenCV的findHomography方法,并將其method參數(shù)設置為CV_FM_RANSAC,以利用RANSAC算法來剔除錯誤的匹配,如圖2所示,其中圖2(a)是剔除前的匹配,圖2(b)是剔除后的匹配。記錄剔除錯誤配對后的配對點的數(shù)目。在遍歷完所有參考圖像后,具有最大配對點數(shù)的參考圖像即為當前視頻幀中包含的圖像,由此可以確定需要融合顯示的虛擬3D模型;
4)計算變換矩陣。從第一步的描述可知,Pp = M1.M2.Pw,M1在第一步中通過攝像頭標定已經(jīng)求得,現(xiàn)在需要求外參矩陣M2。M2可以利用OpenCV的方法solvePnP計算求得,該方法可以從一組3D-2D點的映射計算3D姿態(tài)。本文討論的應用實際上是把3D鐘的一個矩形圖片投影到了圖像平面,因此,只需要得到該矩形投影到圖像平面的4個角點,即可以得到solvePnP方法需要的一組2D點。在第3步通過findHomography函數(shù)除了剔除了錯誤的配對點,還得到了vm中的匹配對象與參考圖像的單應矩陣homography,因此,只要用OpenCV的函數(shù)perspectiveTransform將參考圖像的4個角點的坐標經(jīng)過homography變換,即得到4個solvePnP方法需要的2D坐標點。
5)渲染3D模型。用OpenGL函數(shù)庫進行3D渲染,先渲染第i)步得到的背景紋理t,然后利用第一步求得的M1計算Projection矩陣,然后根據(jù)第四步計算出來的M2設置ModelView矩陣,最后渲染3D模型,如圖3所示。
4 結語
本文討論了一種基于自然特征匹配的增強現(xiàn)實應用的實現(xiàn)方法。在本文給出的方法里利用OpenCV視覺開發(fā)庫對參考圖像及視頻幀圖像提取ORB特征進行配對并載入合適的虛擬物模型,然后利用OpenCV計算攝像頭的內外參矩陣,并根據(jù)計算出來的內外參矩陣設置OpenGL的Projection矩陣及ModelView矩陣變換,最終在顯示設備上渲染出虛擬模型。由于手機的運行速度及手持時的抖動導致最終運行效果時出現(xiàn)卡頓、虛擬模型抖動的現(xiàn)象,這些問題的解決是后續(xù)研究中的主要方向。
參考文獻:
[1] 全紅艷,王長波,林俊雋.基于視覺的增強現(xiàn)實技術研究綜述[J].機器人,2008,30(4):379-384.
[2] 劉嘉敏,孫洪興,陳爍,常燕,辛義忠.增強現(xiàn)實中基于自然特征的實時跟蹤方法[J].計算機工程與設計,2014,35(10):3551-3553.
[3] 任結,周余,于耀,都思丹,王自強.基于 ORB 自然特征的 AR 實時系統(tǒng)實現(xiàn)[J].計算機應用研究,2012,29(9):3594-3596.
[4] 李躍,汪亞明,黃文清,等.基于OpenCV的攝像機標定方法研究[J].浙江理工大學學報,2010,27(3):417-420.