AR從其技術(shù)手段和表現(xiàn)形式上,可以明確分為大約兩類,一是Vision based AR,即基于計算機視覺的AR,二是LBS basedAR,即基于地理位置信息的AR。
Vision based AR
基于計算機視覺的AR是利用計算機視覺方法建立現(xiàn)實世界與屏幕之間的映射關(guān)系,使我們想要繪制的圖形或是3D模型可以如同依附在現(xiàn)實物體上一般展現(xiàn)在屏幕上,如何做到這一點呢?本質(zhì)上來講就是要找到現(xiàn)實場景中的一個依附平面,然后再將這個3維場景下的平面映射到我們2維屏幕上,然后再在這個平面上繪制你想要展現(xiàn)的圖形,從技術(shù)實現(xiàn)手段上可以分為2類:AR從其技術(shù)手段和表現(xiàn)形式上,可以明確分為大約兩類,一是Vision based AR,即基于計算機視覺的AR,二是LBS basedAR,即基于地理位置信息的AR。
Vision based AR
基于計算機視覺的AR是利用計算機視覺方法建立現(xiàn)實世界與屏幕之間的映射關(guān)系,使我們想要繪制的圖形或是3D模型可以如同依附在現(xiàn)實物體上一般展現(xiàn)在屏幕上,如何做到這一點呢?本質(zhì)上來講就是要找到現(xiàn)實場景中的一個依附平面,然后再將這個3維場景下的平面映射到我們2維屏幕上,然后再在這個平面上繪制你想要展現(xiàn)的圖形,從技術(shù)實現(xiàn)手段上可以分為2類:
1、 Marker-Based AR
這種實現(xiàn)方法需要一個事先制作好的Marker(例如:繪制著一定規(guī)格形狀的模板卡片或者二維碼),然后把Marker放到現(xiàn)實中的一個位置上,相當(dāng)于確定了一個現(xiàn)實場景中的平面,然后通過攝像頭對Marker進行識別和姿態(tài)評估(Pose Estimation),并確定其位置,然后將該Marker中心為原點的坐標(biāo)系稱為Marker Coordinates即模板坐標(biāo)系,我們要做的事情實際上是要得到一個變換從而使模板坐標(biāo)系和屏幕坐標(biāo)系建立映射關(guān)系,這樣我們根據(jù)這個變換在屏幕上畫出的圖形就可以達到該圖形依附在Marker上的效果,理解其原理需要一點3D射影幾何的知識,從模板坐標(biāo)系變換到真實的屏幕坐標(biāo)系需要先旋轉(zhuǎn)平移到攝像機坐標(biāo)系(Camera Coordinates)然后再從攝像機坐標(biāo)系映射到屏幕坐標(biāo)系。
在實際的編碼中,所有這些變換都是一個矩陣,在線性代數(shù)中矩陣代表一個變換,對坐標(biāo)進行矩陣左乘便是一個線性變換(對于平移這種非線性變換,可以采用齊次坐標(biāo)來進行矩陣運算)。公式如下:
矩陣C的學(xué)名叫攝像機內(nèi)參矩陣,矩陣Tm叫攝像機外參矩陣,其中內(nèi)參矩陣是需要事先進行攝像機標(biāo)定得到的,而外參矩陣是未知的,需要我們根據(jù)屏幕坐標(biāo)(xc ,yc)和事先定義好的Marker 坐標(biāo)系以及內(nèi)參矩陣來估計Tm,然后繪制圖形的時候根據(jù)Tm來繪制(初始估計的Tm不夠精確,還需要使用非線性最小二乘進行迭代尋優(yōu)),比如使用OpenGL繪制的時候就要在GL_MODELVIEW的模式下加載Tm矩陣來進行圖形顯示。
2、 Marker-Less AR
基本原理與Marker based AR相同,不過它可以用任何具有足夠特征點的物體(例如:書的封面)作為平面基準(zhǔn),而不需要事先制作特殊的模板,擺脫了模板對AR應(yīng)用的束縛。它的原理是通過一系列算法(如:SURF,ORB,F(xiàn)ERN等)對模板物體提取特征點,并記錄或者學(xué)習(xí)這些特征點。當(dāng)攝像頭掃描周圍場景,會提取周圍場景的特征點并與記錄的模板物體的特征點進行比對,如果掃描到的特征點和模板特征點匹配數(shù)量超過閾值,則認(rèn)為掃描到該模板,然后根據(jù)對應(yīng)的特征點坐標(biāo)估計Tm矩陣,之后再根據(jù)Tm進行圖形繪制(方法與Marker-Based AR類似)。
LBS-Based AR
其基本原理是通過GPS獲取用戶的地理位置,然后從某些數(shù)據(jù)源(比如wiki,google)等處獲取該位置附近物體(如周圍的餐館,銀行,學(xué)校等)的POI信息,再通過移動設(shè)備的電子指南針和加速度傳感器獲取用戶手持設(shè)備的方向和傾斜角度,通過這些信息建立目標(biāo)物體在現(xiàn)實場景中的平面基準(zhǔn)(相當(dāng)于marker),之后坐標(biāo)變換顯示等的原理與Marker-Based AR類似。
這種AR技術(shù)利用設(shè)備的GPS功能及傳感器來實現(xiàn),擺脫了應(yīng)用對Marker的依賴,用戶體驗方面要比Marker-Based AR更好,而且由于不用實時識別Marker姿態(tài)和計算特征點,性能方面也好于Marker-Based AR和Marker-Less AR,因此對比Marker-Based AR和Marker-Less AR,LBS-Based AR可以更好的應(yīng)用到移動設(shè)備上。
1、 Marker-Based AR
這種實現(xiàn)方法需要一個事先制作好的Marker(例如:繪制著一定規(guī)格形狀的模板卡片或者二維碼),然后把Marker放到現(xiàn)實中的一個位置上,相當(dāng)于確定了一個現(xiàn)實場景中的平面,然后通過攝像頭對Marker進行識別和姿態(tài)評估(Pose Estimation),并確定其位置,然后將該Marker中心為原點的坐標(biāo)系稱為Marker Coordinates即模板坐標(biāo)系,我們要做的事情實際上是要得到一個變換從而使模板坐標(biāo)系和屏幕坐標(biāo)系建立映射關(guān)系,這樣我們根據(jù)這個變換在屏幕上畫出的圖形就可以達到該圖形依附在Marker上的效果,理解其原理需要一點3D射影幾何的知識,從模板坐標(biāo)系變換到真實的屏幕坐標(biāo)系需要先旋轉(zhuǎn)平移到攝像機坐標(biāo)系(Camera Coordinates)然后再從攝像機坐標(biāo)系映射到屏幕坐標(biāo)系。

在實際的編碼中,所有這些變換都是一個矩陣,在線性代數(shù)中矩陣代表一個變換,對坐標(biāo)進行矩陣左乘便是一個線性變換(對于平移這種非線性變換,可以采用齊次坐標(biāo)來進行矩陣運算)。公式如下:

矩陣C的學(xué)名叫攝像機內(nèi)參矩陣,矩陣Tm叫攝像機外參矩陣,其中內(nèi)參矩陣是需要事先進行攝像機標(biāo)定得到的,而外參矩陣是未知的,需要我們根據(jù)屏幕坐標(biāo)(xc ,yc)和事先定義好的Marker 坐標(biāo)系以及內(nèi)參矩陣來估計Tm,然后繪制圖形的時候根據(jù)Tm來繪制(初始估計的Tm不夠精確,還需要使用非線性最小二乘進行迭代尋優(yōu)),比如使用OpenGL繪制的時候就要在GL_MODELVIEW的模式下加載Tm矩陣來進行圖形顯示。
2、 Marker-Less AR
基本原理與Marker based AR相同,不過它可以用任何具有足夠特征點的物體(例如:書的封面)作為平面基準(zhǔn),而不需要事先制作特殊的模板,擺脫了模板對AR應(yīng)用的束縛。它的原理是通過一系列算法(如:SURF,ORB,F(xiàn)ERN等)對模板物體提取特征點,并記錄或者學(xué)習(xí)這些特征點。當(dāng)攝像頭掃描周圍場景,會提取周圍場景的特征點并與記錄的模板物體的特征點進行比對,如果掃描到的特征點和模板特征點匹配數(shù)量超過閾值,則認(rèn)為掃描到該模板,然后根據(jù)對應(yīng)的特征點坐標(biāo)估計Tm矩陣,之后再根據(jù)Tm進行圖形繪制(方法與Marker-Based AR類似)。
LBS-Based AR
其基本原理是通過GPS獲取用戶的地理位置,然后從某些數(shù)據(jù)源(比如wiki,google)等處獲取該位置附近物體(如周圍的餐館,銀行,學(xué)校等)的POI信息,再通過移動設(shè)備的電子指南針和加速度傳感器獲取用戶手持設(shè)備的方向和傾斜角度,通過這些信息建立目標(biāo)物體在現(xiàn)實場景中的平面基準(zhǔn)(相當(dāng)于marker),之后坐標(biāo)變換顯示等的原理與Marker-Based AR類似。
這種AR技術(shù)利用設(shè)備的GPS功能及傳感器來實現(xiàn),擺脫了應(yīng)用對Marker的依賴,用戶體驗方面要比Marker-Based AR更好,而且由于不用實時識別Marker姿態(tài)和計算特征點,性能方面也好于Marker-Based AR和Marker-Less AR,因此對比Marker-Based AR和Marker-Less AR,LBS-Based AR可以更好的應(yīng)用到移動設(shè)備上。