文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)10-0116-03
增強(qiáng)現(xiàn)實(shí)AR(Augmented Reality)是將計(jì)算機(jī)產(chǎn)生的虛擬物體或信息與真實(shí)環(huán)境進(jìn)行融合,,借以增強(qiáng)或擴(kuò)充現(xiàn)實(shí)景象的技術(shù)[1],。增強(qiáng)現(xiàn)實(shí)是虛擬現(xiàn)實(shí)技術(shù)VR(Virtual Reality) 發(fā)展的一個(gè)重要分支,也是近年來(lái)的一個(gè)研究熱點(diǎn)[2-4]。隨著科學(xué)技術(shù)的發(fā)展,增強(qiáng)現(xiàn)實(shí)技術(shù)不斷完善的同時(shí),增強(qiáng)現(xiàn)實(shí)設(shè)備的價(jià)格也在不斷下降, 推動(dòng)了增強(qiáng)現(xiàn)實(shí)技術(shù)在醫(yī)療,、制造,、維修、機(jī)器人動(dòng)作路徑規(guī)劃,、娛樂(lè),、軍事、旅游等領(lǐng)域的發(fā)展和應(yīng)用,。特別是近年來(lái)平板電腦,、智能手機(jī)的迅速發(fā)展,將AR系統(tǒng)與便攜式計(jì)算機(jī)相結(jié)合,使用戶可以在戶外真實(shí)環(huán)境中隨意走動(dòng),轉(zhuǎn)換視點(diǎn),大大增加了AR的應(yīng)用范圍。
隨著經(jīng)濟(jì)的不斷發(fā)展,,出國(guó)旅游成為人們?cè)鲩L(zhǎng)自身見(jiàn)識(shí),、了解世界的重要方法。但由于各國(guó)使用語(yǔ)言和文字的不同,,使游客面對(duì)旅游地很多日常的信息都無(wú)法了解,,為了解決這個(gè)問(wèn)題,本文提出一種利用增強(qiáng)現(xiàn)實(shí)技術(shù)實(shí)現(xiàn)圖文解說(shuō)功能的方法,針對(duì)旅客經(jīng)??匆?jiàn)的路牌,、名畫(huà)、餐牌,、標(biāo)志等現(xiàn)實(shí)事物以游客熟悉的文字進(jìn)行解說(shuō),,可以真正地讓游客體會(huì)到賓至如歸的感覺(jué)。
1 SURF與ARToolkit
1.1 OpenCV中SURF算法的相關(guān)函數(shù)
OpenCV[5](Open Source Computer Vision Library)是一種用于數(shù)字圖像處理和計(jì)算機(jī)視覺(jué)的函數(shù)庫(kù),由Intel微處理器研究實(shí)驗(yàn)室(Intel Microprocessor Research Lab)的視覺(jué)交互組(The Visual Inter activity Group)開(kāi)發(fā),。OpenCV由一系列C函數(shù)和少量C++類(lèi)構(gòu)成,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法,。SURF(Speeded Up Robust Features)算法是SIFT(Scale Invariant Feature Transform)算法的加速版,OpenCV的SURF算法在適中的條件下完成兩幅圖像中物體的匹配,,基本實(shí)現(xiàn)了實(shí)時(shí)處理,。SURF特征提取算法的流程主要包括三部分:特征點(diǎn)檢測(cè)、特征點(diǎn)描述和特征點(diǎn)匹配,。
1.1.1 特征點(diǎn)檢測(cè)
特征點(diǎn)的檢測(cè)[6]是基于尺度空間理論,,使用Hessian矩陣的行列式作為判別式來(lái)尋找局部極大值。尺度為σ的圖像某點(diǎn)處的Hessian矩陣定義為:
1.1.2 特征點(diǎn)描述
SURF特征點(diǎn)描述[6]采用Haar小波作為特征描述子,,Harr特征最大的特點(diǎn)是速度快,、能減少計(jì)算時(shí)間且增加魯棒性。SURF描述符的構(gòu)造分為主方向分配和生成特征向量?jī)刹糠?且都是在特征點(diǎn)所在的尺度σ上進(jìn)行的,。以特征點(diǎn)為圓心,計(jì)算半徑為6σ圓內(nèi),,x和y方向上的Haar小波響應(yīng)系數(shù);在60°的扇形區(qū)域內(nèi),求x和y方向上的系數(shù)之和, 以此構(gòu)建一個(gè)新向量,。轉(zhuǎn)動(dòng)扇形遍歷整個(gè)圓,選擇最長(zhǎng)向量的方向?yàn)橹鞣较颉?br/>1.1.3 特征點(diǎn)匹配
特征點(diǎn)匹配[6]就是在高維向量空間中尋找最相似的特征向量,而在大量的數(shù)據(jù)中尋找最近鄰是一個(gè)復(fù)雜繁瑣的計(jì)算過(guò)程,。SURF算法在構(gòu)造特征描述符時(shí),對(duì)每個(gè)特征點(diǎn)都會(huì)添加Laplacian標(biāo)識(shí)符。由Hessian矩陣的跡的值定義,若Hessian矩陣的跡大于0,則該標(biāo)識(shí)符為1,否則為-1,。該標(biāo)識(shí)符用于區(qū)分暗背景上的亮斑和亮背景上的暗斑,,只有相同類(lèi)型的特征點(diǎn)才能互為匹配,。由此只需對(duì)相同類(lèi)型數(shù)據(jù)進(jìn)行比較,既能獲得較精確的匹配結(jié)果,又降低了計(jì)算量,。
OpenCV函數(shù)庫(kù)提供了CvSURFParams()函數(shù)和cvExtractSURF()函數(shù)來(lái)實(shí)現(xiàn)SURF算法。
1.2 ARToolkit
ARToolKit是由日本廣島城市大學(xué)與美國(guó)華盛頓大學(xué)聯(lián)合開(kāi)發(fā)的增強(qiáng)現(xiàn)實(shí)系統(tǒng)二次開(kāi)發(fā)工具,。利用計(jì)算機(jī)視覺(jué)技術(shù)計(jì)算觀察者相對(duì)于已知標(biāo)識(shí)的位置和姿態(tài)的視點(diǎn),支持將Direct3D,、OpenGL圖形和VRML場(chǎng)景合并到視頻流中,同時(shí)支持顯示器和頭盔顯示器等多種顯示設(shè)備。其實(shí)時(shí),、精確的三維注冊(cè)功能可使工程人員非常方便,、快捷地開(kāi)發(fā)增強(qiáng)現(xiàn)實(shí)應(yīng)用系統(tǒng)[7]。
ARToolKit包含了跟蹤庫(kù)及其完整源代碼,,開(kāi)發(fā)者可以根據(jù)平臺(tái)的不同調(diào)整接口,,也可以自己設(shè)計(jì)跟蹤算法代替跟蹤庫(kù)。
ARToolKit工作流程為[8]:(1)進(jìn)行標(biāo)識(shí)檢測(cè),即根據(jù)用戶設(shè)定的閾值將攝像機(jī)采集到的一幀彩色圖像轉(zhuǎn)換成一幅二值黑白圖像,; (2)對(duì)該二值圖像進(jìn)行連通域分析,,找出其中所有的四邊形區(qū)域作為候選匹配區(qū)域,將每一候選區(qū)域與系統(tǒng)模板庫(kù)中的模板進(jìn)行匹配,。如果匹配成功,,則ARToolKit認(rèn)為找到了一個(gè)標(biāo)識(shí),利用該標(biāo)識(shí)區(qū)域的變形來(lái)計(jì)算攝像機(jī)相對(duì)于已知標(biāo)識(shí)的位置和姿態(tài),;(3)根據(jù)得到的變換矩陣實(shí)現(xiàn)虛實(shí)之間的注冊(cè),。
2 圖文解說(shuō)增強(qiáng)現(xiàn)實(shí)的設(shè)計(jì)
2.1設(shè)計(jì)環(huán)境
本文所設(shè)計(jì)的圖文解說(shuō)增強(qiáng)現(xiàn)實(shí)以Windows XP系統(tǒng)為平臺(tái),以VC++ 6.0為開(kāi)發(fā)環(huán)境,安裝了OpenCV庫(kù)和ARToolkit二次開(kāi)發(fā)包,視頻攝取采用一個(gè)支持USB2.0的CCD攝像頭,。
2.2 設(shè)計(jì)流程
圖文解說(shuō)增強(qiáng)現(xiàn)實(shí)設(shè)計(jì)流程包括:讀取模板圖片,、計(jì)算模板圖片的特征點(diǎn),攝像頭攝入一幀,,進(jìn)行圖片灰度化,計(jì)算SUPF特征點(diǎn),求出與模版圖匹配的圖像區(qū)域,計(jì)算所要疊加模型的變換矩陣,對(duì)攝入幀RGB轉(zhuǎn)RGBA,、疊加模型及顯示一幀輸出圖像。如圖1所示,。
2.3 模塊設(shè)計(jì)
2.3.1計(jì)算模板圖片的特征點(diǎn)
計(jì)算出模板圖片的特征點(diǎn)是整個(gè)流程的第一步,。只有計(jì)算出這些特征點(diǎn),才可以將模板圖片的特征點(diǎn)與攝像頭實(shí)時(shí)采集的圖像的特征點(diǎn)作圖像匹配,。這里用cvLoadImage函數(shù)以灰度圖的形式讀入模板圖片,,用cvSURFParams函數(shù)設(shè)定SURF算法的初始參數(shù),用cvExtractSURF提取模板圖片的SURF特征。
2.3.2 攝像
本文使用OpenCV函數(shù)庫(kù)打開(kāi)攝像頭并捕捉圖像流來(lái)實(shí)現(xiàn)圖文解說(shuō),。用cvCreateCameraCapture函數(shù)讀入攝像頭圖像,并將其內(nèi)容的變量地址返回一個(gè)cvCapture*類(lèi)型的變量,。cvQueryFrame函數(shù)的參數(shù)為cvCapture結(jié)構(gòu)的指針。用來(lái)將下一幀視頻文件載入內(nèi)存(實(shí)際是填充或更新cvCapture結(jié)構(gòu)中),返回一個(gè)對(duì)應(yīng)當(dāng)前幀的指針,。
關(guān)鍵代碼如下:
//初始化部分
cvCapture* m_Video;
IplImage *newFrame;
if (!m_Video)
m_Video=cvCreateCameraCapture(0);
if (!m_Video)
{
printf("無(wú)法打開(kāi)攝像頭");
return 0;
}
//循環(huán)部分
static void mainLoop(void){
newFrame=cvQueryFrame(m_Video);
//.......
}
2.3.3灰度化
計(jì)算特征點(diǎn)前,需要對(duì)原始圖像進(jìn)行灰度化處理,。這是因?yàn)镺penCV中計(jì)算SURF特征的函數(shù)是相對(duì)灰度圖進(jìn)行操作。一張 RGB 圖像是由 R(紅色),、G(綠色)和B(藍(lán)色)三種顏色分量所組成,,其中R=G=B的值為灰度值,而灰度是將三種顏色分量轉(zhuǎn)換成亮度值介于0~255之間的灰色,,其中0代表最暗的黑色,,255代表最亮的白色?;叶戎礩與RGB間的關(guān)系為:
Y=0.299R+0.587G+0.114B (3)
OpenCV中的cvCvtColor函數(shù)可以按式(3)將RGB圖像轉(zhuǎn)為灰度圖,。
2.4 計(jì)算被識(shí)別圖片的特征點(diǎn)
用OpenCV中的cvExtractSURF函數(shù)計(jì)算被識(shí)別圖片的特征點(diǎn)。
2.5 計(jì)算模型的變換矩陣
ARToolkit中的arGetTransMatCont函數(shù)可以計(jì)算模型的變換矩陣,。若使用這個(gè)函數(shù),,需要先計(jì)算出標(biāo)識(shí)圖像的邊緣所在直線的位置,,作為arGetTransMatCont函數(shù)的輸入?yún)?shù)。ARToolkit中以直線方程的標(biāo)準(zhǔn)式ax+by+c=0來(lái)表示一條直線,,其中,,a、b,、c為常數(shù),。通過(guò)locatePlanarObject函數(shù)計(jì)算出標(biāo)識(shí)圖像的四角坐標(biāo),然后用這4個(gè)點(diǎn)求出標(biāo)識(shí)圖像的邊緣所在直線,。具體計(jì)算方法如下: 將直線方程兩點(diǎn)式:■=■化為標(biāo)準(zhǔn)式,,得到:
2.6 圖像轉(zhuǎn)換與顯示
OpenCV使用的是RGB三通道圖像,而ARToolkit使用的是RGBA四通道圖像,。因此需要將RGB圖像轉(zhuǎn)換為RGBA圖像后,才可以使用ARToolkit中的相關(guān)函數(shù)顯示,。具體操作方法:先用cvSplit函數(shù)將圖片分成R、G,、B三個(gè)通道,,再創(chuàng)建一個(gè)A通道,通過(guò)cvMerge將它們合并起來(lái)轉(zhuǎn)換成RGBA圖像,然后調(diào)用argDispImage函數(shù)顯示這個(gè)圖像,。
2.7 疊加模型
OpenGL函數(shù)庫(kù)的工作主要是疊加模型,。用OpenGL加載模型之前需要用argConvGlpara函數(shù)將ARToolkit的轉(zhuǎn)換矩陣變成OpenGL能夠使用的形式。加載模型之后,,需要用argSwapBuffers函數(shù)將緩沖區(qū)的圖像顯示到屏幕上面,。
3 實(shí)例測(cè)試
依據(jù)本文設(shè)計(jì)方法為到法國(guó)旅游的中國(guó)人設(shè)計(jì)了一個(gè)圖文解說(shuō)增強(qiáng)現(xiàn)實(shí)功能軟件。當(dāng)游客用攝像頭拍攝如圖2所示的法國(guó)名畫(huà)時(shí),,系統(tǒng)會(huì)在拍攝畫(huà)面的周?chē)詣?dòng)實(shí)時(shí)疊加與該名畫(huà)相關(guān)的中文解說(shuō)信息,實(shí)現(xiàn)虛實(shí)疊加,,讓游客對(duì)名畫(huà)有更詳細(xì)的了解。經(jīng)過(guò)測(cè)試,,系統(tǒng)應(yīng)用功能穩(wěn)定,,準(zhǔn)確完成位置正確的圖形疊加,實(shí)現(xiàn)圖文解說(shuō)增強(qiáng)現(xiàn)實(shí)功能,如圖3所示,。
本文提出一種基于SURF算法和ARToolkit的圖文解說(shuō)增強(qiáng)現(xiàn)實(shí)應(yīng)用方法,,不僅豐富了增強(qiáng)現(xiàn)實(shí)技術(shù)的應(yīng)用方向,而且對(duì)旅游產(chǎn)業(yè)的自動(dòng)圖文解說(shuō)技術(shù)發(fā)展具有應(yīng)用推廣意義,。但研究只是做了一些基本的探索,,要真正實(shí)現(xiàn)針對(duì)游客的圖文解說(shuō)應(yīng)用,還需解決程序移植Android系統(tǒng),、視聯(lián)網(wǎng)搜索等問(wèn)題。相信在科研人員不斷的努力下,這樣的功能一定可以得到更好的實(shí)現(xiàn)和應(yīng)用,。
參考文獻(xiàn)
[1] 沈克,彭太樂(lè).基于SURF的增強(qiáng)現(xiàn)實(shí)標(biāo)識(shí)物跟蹤注冊(cè)[J]. 計(jì)算機(jī)工程, 2010,36(13):254-256.
[2] CRYSTIAN W M, LIMA L J P, TEICHRIEB V, et al. Geometric modifications applied to real elements in augmented reality[C].2011 13th Symposium on Virtual Reality, SVR 2011, 2011:96-101.
[3] FANG H C,ONG S K,NEE A Y C.Interactive robot trajectory planning and simulation using Augmented Reality[J].Robotics and Computer-Integrated Manufacturing,2011,2(28):227-237.
[4] SEUNG P J. AR-Room: a rapid prototyping framework for augmented reality applications[J]. Multimedia Tools and Applications,2011,3(55):725-746.
[5] 黎松,平西建,丁益洪. 開(kāi)放源代碼的計(jì)算機(jī)視覺(jué)類(lèi)庫(kù)OpenCv的應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件, 2005,22(8):134-136.
[6] 劉奇, 何明一.基于SURF特征匹配的圖像拼接算法[J]. 測(cè)控技術(shù),2010,29(10):27-31.
[7] 劉秀坤,,郭貴洲.基于ARToolKit的戶外增強(qiáng)現(xiàn)實(shí)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].測(cè)繪科學(xué), 2009(34):164-165,185.
[8] 常勇, 薛立明. 基于改進(jìn)的ARToolKit的戶外增強(qiáng)現(xiàn)實(shí)系統(tǒng)構(gòu)建研究[J].系統(tǒng)仿真學(xué)報(bào),2009(08):2273-2276.