AR 原理與技術分析

開發場景介紹:

開發場景介紹摘自電腦愛好者2016年21期


AR可以讓用戶在掃描特定的圖片、二維碼時展現相應的視頻場景,
那么這種特效是怎么實現的?
先來了解一下AR程序運行流程是怎么樣的?

開啟手機攝像頭對準特定的宣傳畫掃描,
接著手機屏幕上就會出現和相應產品對應的自然元素組成的視頻。
這個視頻展現,其實就是一個典型AR場景的再現

AR效果的實現

第一步:

制作方要對掃描的實物進行建模。
我們需要先掃描該物品的3D模型,并對其進行關鍵幀標定,
比如:瓶蓋、瓶身某位置或者圖片的不同畫面,
然后根據不同的識別準備對應的動態視頻數據

第二步:

當掃描標定的關鍵幀,系統就會去尋找AR場景中與之最接近的關鍵幀,
根據關鍵幀上的特征點,然后利用特定的算法找到AR場景中對應的視頻,
并將其展現在用戶的手機畫面中;

關鍵技術:<識別跟蹤>

在這個AR應用中技術核心就是<識別跟蹤>技術,
AR應用首先要識別標示物,然后進行跟蹤(跟蹤用戶掃描到的產品標記),
接著就在用戶手機上展示對應的視頻場景。

AR應用是通過“特征點”進行識別的;
檢測到特征點還不行,如果要判斷兩張圖片是否是同一張圖片,
識別設備還要判斷兩張圖片的特征點是否一致;

識別技術不在介紹,(開發時這里了解,不做過多陳述,我也不懂)

第三步: AR視頻是由多幀圖片組成

在完成一幅圖片的比對后還要對視頻幀的其他圖片進行跟蹤比對。
特征跟蹤有兩種方式:
一種是對視頻流中的每一幀圖像進行特征點匹配;
二種則在第一幅圖像中,尋找可能的特征位置
然后在后續的圖像中搜索它們的對應位置。
這樣完成對識別圖片的跟蹤后,
AR應用就會在用戶的手機上顯現對應的視頻畫面了。

最后:

AR應用會先將圖片進行特征點的識別,并存儲在應用中。
這樣當用戶使用手機掃描到符合特征點的瓶身圖片,
AR應用會將當前圖片和存儲的圖片進行比對,如果是一致的圖片,
AR應用就會將特定的視頻展示在用戶手機屏幕上。
當然AR應用還會進行跟蹤,如掃描不同的區域顯示不同的視頻,
或者在掃描其他圖片時快速識別并顯示預置的視頻到用戶手機上。


ARinChina地址:匯總了一些資源??傳送門:

http://dev.arinchina.com/forum.php

AR原理篇,帶你增強現實的思路

(摘自)[AR報告第二章:AR的工作原理]腦補畫面

1 首先對現實場景的理解和重構

在AR(增強現實)系統中
首先要解決“是什么”的問題,
也就是要理解、知道場景中存在什么樣的對象和目標。
第二要解決“在哪里”的問題,也就是要對場景結構進行分析,
實現跟蹤定位和場景重構。

2 物體的檢測和識別技術

物體檢測和識別的目的是發現并找到場景中的目標,
這是場景理解中的關鍵一環。
廣義的物體檢測和識別技術是基于:
"圖像"的基本信息(各類型特征)和先驗知識模型(物體信息表示)
通過相關的算法實現對場景內容分析的過程。

(開發中可能遇到需要識別圖片的場景,但是算法不是自己寫,就先別管怎么識別出來啦)

在增強現實領域,常見的檢測和識別任務有,
人臉檢測、
行人檢測、
車輛檢測、
手勢識別、
生物識別、
情感識別、
自然場景識別等

這里我只提取介紹一種圖像識別:

識別是從圖像匹配的角度出發,
數據庫中保存了圖像的特征以及對應的標注信息,
在實際使用過程中,通過圖像匹配的方法找到最相關的圖像,
從而定位環境中的目標,進一步得到識別圖像和目標圖像的精確位置,
這種識別適用于需要對環境進行精確跟蹤的應用場景

(開發經常使用的識別圖片,其他需要智能識別這里不做介紹);

另一方面,圖像本身還受到噪聲、尺度、旋轉、光照、姿態等因素的影響

視覺跟蹤技術

根據數據的生成方式,視覺跟蹤技術的算法可以分為兩種,
一種是基于模板匹配的方式,
預先對需要跟蹤的target進行訓練,
在跟蹤階段通過不斷的跟預存訓練數據進行比對 解算當前的位姿。
這類方法的好處是速度較快、數據量小、系統簡單,適用于一些特定的場景,
但不適用于大范圍的場景

另外一種是SLAM方法,也就是即時定位和地圖構建技術。(不做介紹)

3 增強現實的顯示技術

攝像頭獲取外部真實環境的圖像,
也就是通過攝像頭來采集真實場景的圖像進行傳遞。
計算機通過場景理解和分析將所要添加的信息和圖像信號疊加
在攝像機的視頻信號上,將計算機生成的虛擬場景與真實場景進行融合


實現篇:

現在不少移動端加入了AR的功能作為功能的拓展與補充。
如淘寶過年期間的AR福字掃描,人臉識別,還有一個AR的游戲等等。
那么我們今天就說幾個可以在移動端實現AR功能的解決方案。

AR在開發ios的時候使用Xcode+Realmax SDK,
也可以使用Unity+Realmax SDK開發導成api,再導入Xcode編譯;

注:需要跨平臺使用實現那些炫酷效果需要使用unity來做;

這里沒嘗試,不懂,再此先不做介紹;研究了補充上說明文檔;

解決方案

1 利用第三方AR開發包去實現。

時至今日,AR技術有了一定的發展,
可以利用第三方的framework開發包導入工程來實現。
支持的SDK:Metaio被蘋果收購、Vuforia被高通(Qualcomm)賣給PTC后,
相對較好的有ARToolKit、Wikitude

國外的介紹高通的AR實現方案
在高通VR的官網 :https://developer.vuforia.com/
有關識別后顯示3D物體,video等的一些基礎與高級識別結果

注:本著能不看英文就不看英文的想法,可以跳過高通的方案;

不過國內也有不錯的一個國內的引擎:EasyAR
國內的有easyAR 地址: http://www.easyar.cn/

文檔和demo真的是干凈,沒有什么注釋說明,
剛剛接觸的使用xcode打開demo看起來是不是一臉懵逼,
沒事不用懂代碼都什么東西,使用unity配置好,玩玩導出ios的就可以了....
屏幕快照 2017-05-26 上午9.24.36.png
屏幕快照 2017-05-26 上午9.26.01.png

(??圖是博客園里的盜圖,如有雷同是我抄襲,如果看到原出處,請告知,謝謝)
圖片地址:http://www.cnblogs.com/guanshenbao/p/5744407.html

圖片.png

看到??的圖,應該就能猜測到,需要識別的圖,
和識別之后顯示的酷炫效果是需要使用unity來制作的;

EasyAR跟高通AR有類似的功能,兩者的操作方法略有不同,
高通需要把圖片傳到其網站上的,
而easyAR是可以直接在工程上替換想要識別的圖片的,(識別的圖片)
所以說在設定識別圖片的方便度上,
easyAR要比高通AR做的好一些。
而在示例demo上高通做的比easyAR要好一些,
比如識別后顯示video上,高通有點擊暫停,在點擊播放的效果,
而且可以轉入到本地播放器,而easyAR就沒有這個功能。

HiAR不推薦,不做介紹,有興趣的自己查閱;

2 隨著VR、AR、MR的火熱,unity3D的發展也是水漲船高,
其跨平臺性更是其一大亮點,(跨平臺)
可以通過unity3D導出xcode工程的方法實現AR功能

高通AR,easyAR,HiAR,都有對應的unity3D的開發包,
導入開發包之后便可進行操作,
可以顯示需要的3D或2D場景,而且也都支持云識別等。

注意開發時在plist文件中加入允許使用相機的屬性。(權限問題,不然報錯哈)

3 關于人臉識別解決方案,可以利用opencv的一些東西。
當然也可以用已經寫好的一些第三方,比如face++,訊飛人臉識別等。

解決方案參考了: CSDN:baidu_33735542的博客
http://blog.csdn.net/baidu_33735542/article/details/55045539?locationNum=11&fps=1

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容