《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業(yè)界動態(tài) > ar技術怎么實現(xiàn) 四種AR的實現(xiàn)方式

ar技術怎么實現(xiàn) 四種AR的實現(xiàn)方式

2017-08-14
關鍵詞: AR Python OpenGL SLAM

導讀:我們在實現(xiàn)AR效果時,為了大大減少我們的工程量,我們可以借助一些主流的ARSDK,比如EasyAR,Vuforia,太虛AR等等,當然,作為AR技術的狂熱愛好者

  我們在實現(xiàn)AR效果時,為了大大減少我們的工程量,我們可以借助一些主流的AR SDK,比如EasyAR ,Vuforia,太虛AR等等,當然,作為AR技術的狂熱愛好者,我們的追求遠遠不止于此。所以了,我今天給大家介紹了幾種“底層”實現(xiàn)AR的方式。

  Opencv和C++ 實現(xiàn)

  大概思路是OpenCV實現(xiàn)對Marker的識別和定位,然后通過OpenGL將虛擬物體疊加到攝像頭圖像下,實現(xiàn)增強現(xiàn)實。具體思路是:

使用SIFT算法進行識別(特征點的提取并用特征向量對特征點描述,接著當前視圖的特征向量與目標對象的特征向量進行匹配)

根據識別出來的原目標和幀圖像匹配關系得到變化矩陣,來顯示三維物體(使用OpenGL來繪制),實現(xiàn)跟蹤。

  對于基于標記的AR的Opencv實現(xiàn),我們常常用到Marker:

97135f54812041e599c9affe02c63472.jpg.png

  黑色邊框中是編碼信息,白色為1,黑色為0,將每一行作為一個字,那么每個字有5bits。其中,1、3、5位為校驗位,2、4位為信息位。接下來用Opencv實現(xiàn),其具體思路為:

對輸入圖像幀進行標記檢測,灰度化,找到圖像中輪廓,檢測和解碼標記,

估計標記的三維姿態(tài),這里包括提前對攝像機進行相機標定,獲取相機內參數(shù)和失真系數(shù),根據這個計算出標記的旋轉矩陣和平移矩陣,

由相機內參數(shù)和標記的旋轉矩陣和平移矩陣,用OpenGL進行渲染三維物體。

  項目地址:https://github.com/GeekLiB/opencv_iphoneAR

  參考資料:

  書籍:深入理解OpenCV 實用計算機視覺項目解析

  (鏈接: https://pan.baidu.com/s/1mi0oCmG 密碼: erh5)

  文章:OpenGL與OpenCV實現(xiàn)增強現(xiàn)實

 ?。ㄦ溄觝ttp://www.tuicool.com/articles/MNJjyam)

  Python 實現(xiàn)AR效果

  Python是世界上最優(yōu)雅的語言,目前的計算機視覺項目大都用Python來實現(xiàn),當然用Python的CV庫也可以很輕松的實現(xiàn)AR效果。

  用Python來實現(xiàn)AR效果,我們首先運用到兩個工具包----PyGame與PyOpenGL。PyGame是非常流行的游戲開發(fā)工具包,它可以非常簡單的處理顯示窗口,輸入設備,事件以及其他內容。PyGame是開源的(http://www.pygame.org/)。PyOpenGL是OpenGL圖形煸炒的Python綁定接口。并且它也是開源的(http://www.opengl.org/wiki/Getting_started)。在實現(xiàn)的過程中,我們需要獲取照相機矩陣并轉換到OpenGL格式,并以平面和標記物進行姿態(tài)估計,然后在圖像中放置虛擬物體。

  參考資料:

  python計算機視覺:鏈接: https://pan.baidu.com/s/1geArUUn 密碼: fnby

  當然,這里也有一個很好的Python AR框架BAR4Py,它是由百曉通客棧×創(chuàng)客項目群著手開發(fā)的“增強現(xiàn)實(AR)”的 Python 開發(fā)庫。

  項目地址:https://github.com/GeekLiB/AR-BXT-AR4Python

  特點:

  基于 OpenCV,以及 Python 的數(shù)學庫;

  跨平臺,可拓展,免費、開源;

  支持簡單的 Mark 標記物以及復雜的圖像標記;

  使用遺忘隊列結構動態(tài)更新相機標定;

  可以看看他們的測試效果:

4cd5682dc58a4fa4a55820a8f0a0ec0a_th.jpg

bab7ae93cf6d48f58f5a7e14f6e8ad04_th.jpg

0ef0d614527b449ebff53af57f891172_th.jpg

  AR+SLAM

  SLAM主要用于地圖重建,在AR中,我們主要運用SLAM算法來獲取camera pose(SLAM的結果是基于feature的點云,提前重建后可以remap拿到較好的camera pose)。

  在這里,我給大家收集了一些SLAM開發(fā)資源與AR-SLAM 項目案例,大家可以下載參考。

  SLAM開發(fā)資源匯總:https://github.com/GeekLiB/Lee-SLAM-source

  PTAM-AR:http://www.robots.ox.ac.uk/~bob/research/research_ptamm.html

b86df2e18cc347af842f34cfa87ac55c_th.jpg

81cde31cd94b4c1dba20444f4355a0de_th.jpg

c70c7c7850494e8391bb8d51f45774a0_th.jpg

  OpenCV-Marker-less-AR:https://github.com/takmin/OpenCV-Marker-less-AR

  Stereo_SLAM_AR(基于ORB-SLAM):https://github.com/ygx2011/Stereo_SLAM_AR

  效果:

174e5f78aa554b1bbb1fc6d0db957847_th.jpg

  opencv-markerless-AR-Mobile:https://github.com/meiroo/opencv-markerless-AR-Mobile

  ARToolkit

  這是一個老牌的AR工具包,ARToolKit 它是一個C/C++ 語言編寫的庫。對于開發(fā)一個AR程序來說,最困難的部分在于實時的將虛擬圖像覆蓋到用戶視口,并且和真實世界中的對象精確對齊。ARToolKit使用圖像技術計算攝像機和標記卡之間的相對位置,從而使程序員能夠將他們的虛擬對象覆蓋到標記卡上面。ARToolKit 提供的快速和準確的標記跟蹤,能夠讓你快速的開發(fā)出許多更新更有趣的AR程序。

  目前ARToolkit支持以下系統(tǒng):

  相信大多數(shù)開發(fā)者學習或開發(fā)的第一個AR應用用的就是ARToolkit。ARtoolkit的實現(xiàn)步驟是:程序初始化----抓取一幀進行視頻的輸入----然后探測標示卡----計算攝像頭的轉移矩陣----繪制虛擬物體----關閉視頻捕捉。

513efa16137445c6a08ed05ff86b1fc3_th.jpg

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。