《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種基于SURF與ARToolkit的增強(qiáng)現(xiàn)實(shí)設(shè)計(jì)
一種基于SURF與ARToolkit的增強(qiáng)現(xiàn)實(shí)設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2012年第10期
陳榮軍1,2, 朱雄泳2, 譚洪舟2, 陳奇彥1
1. 中山大學(xué) 南方學(xué)院, 廣東 廣州 510970,; 2. 中山大學(xué) 信息科學(xué)與技術(shù)學(xué)院,, 廣東 廣州510006
摘要: 為了解決旅客在國(guó)外旅游時(shí)由于語(yǔ)言不通,無(wú)法實(shí)時(shí)了解日常遇到的路牌、餐牌等信息的問(wèn)題,,基于ARToolkit和 SURF算法,提出一種設(shè)計(jì)圖文解說(shuō)增強(qiáng)現(xiàn)實(shí)功能開(kāi)發(fā)方法,。經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,,成功實(shí)現(xiàn)了對(duì)名畫(huà)的圖文解說(shuō),驗(yàn)證了該方法的有效性,。該方法使用方便,,具有較高的應(yīng)用和推廣價(jià)值。
中圖分類(lèi)號(hào): TP391.9
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)10-0116-03
Design of augmented reality based on SURF and ARToolkit
Chen Rongjun1,2,,Zhu Xiongyong2, Tan Hongzhou2, Chen Qiyan1
1. Nanfang College,, Sun Yat-sen University, Guangzhou 510970, China; 2. School of Information Science and Technology, Sun Yat-sen University, Guangzhou 510006, China
Abstract: In order to solve the travelers' problems when traveling abroad, that they can not understand the daily information in real time such as road signs, menus and other information, The paper proposed and designed a new development approach of explanation picture with text based augmented reality function, based on the ARToolkit and the SURF algorithm. After the experiment tests , it has realized the function explained a famous painting with text successfully and verified the effectiveness of the method which is convenient to use and has a high application and promotion of value.
Key words : SURF; ARToolkit; explanation picture with text; augmented reality

    增強(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 SURFARToolkit
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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。