平台專屬指南
Android (Kotlin/Java)
Android NDK (C)
Unity (AR 基礎)
Unreal Engine
ARCore 中的 Augmented Images API 可讓您建構 AR 應用程式,偵測並在使用者環境中 (例如海報或產品包裝) 擴增 2D 圖片。
您提供一組參考圖片。ARCore 會使用電腦視覺演算法,從每張圖片的灰階資訊中擷取特徵,並將這些特徵的表示法儲存在一或多個擴增圖像資料庫中。
在執行階段,ARCore 會在使用者環境中的平面上搜尋這些功能。這可讓 ARCore 在現實世界中偵測這些圖片,並估算其位置、方向和大小 (如果未提供)。
功能
ARCore 最多可同時追蹤 20 張圖片。ARCore 不會同時偵測或追蹤相同圖片的多個例項。
每個擴增圖像資料庫最多可儲存 1,000 張參考圖片的資訊。資料庫數量沒有限制,但隨時只能啟用一個資料庫。
您可以在執行階段將圖片新增至擴增圖片資料庫,每個資料庫最多可新增 1,000 張圖片。您可以使用網路連線下載先前建立的資料庫。
新增圖片時,您可以提供圖片的實際大小以供偵測。這樣有助於提升圖片偵測效能。
如果未提供實體大小,ARCore 會估算並隨著時間修正這個估計值。
如果提供實體大小,ARCore 會使用所提供的大小,並估算圖片的位置和方向,忽略表面或實際大小與所提供實體大小之間的任何差異。
ARCore 可回應及追蹤下列圖片:
固定在固定位置的圖片,例如掛在牆上的相片或放在桌上的雜誌
移動中的圖片,例如公車行駛時顯示的廣告,或是使用者手持的平面物品上顯示的圖片,當使用者移動手部時,圖片也會跟著移動。
ARCore 開始追蹤圖片後,就會針對每個影格提供圖片位置和方向的預估值。隨著 ARCore 收集更多資料,這些預估值也會持續精進。
偵測到圖片後,即使圖片因使用者移動裝置而暫時移出相機檢視畫面,ARCore 仍會繼續「追蹤」圖片的位置和方向。發生這種情況時,ARCore 會假設圖片的位置和方向為靜態,且圖片本身不會穿過環境。
所有追蹤作業都會在裝置上進行。偵測及追蹤圖片時,不需要連上網際網路。
需求條件
圖片必須:
至少填滿攝影機畫面的 25%,才能讓系統初步偵測到。
平放 (例如不皺褶或不纏繞在瓶子上)。
請清楚拍下攝影機的畫面。且不得有任何遮蔽,且不得以極為斜角的角度觀看,或在相機因移動速度過快而產生模糊的情況下觀看。
CPU 使用率和效能注意事項
視已啟用的 ARCore 功能而定,啟用 Augmented Images 可能會增加 ARCore 的 CPU 使用率。在 AR 體驗不需要時,請考慮停用所有未使用的功能。這麼做可讓應用程式使用額外的 CPU 週期,並改善熱效能和電池續航力。
詳情請參閱效能注意事項。
最佳做法
選取參考圖片的訣竅
- 圖片解析度應至少為 300 x 300 像素。使用高解析度圖片「不會」提升成效。
- 您可以提供 PNG 或 JPEG 檔案格式的參考圖片。
- 不使用顏色資訊。色彩和等效灰階圖片皆可用於做為參考圖片,或供使用者在執行階段使用。
- 請避免使用經過大量壓縮的圖片,因為這會干擾特徵擷取作業。
- 請避免使用含有大量幾何特徵或極少特徵的圖片 (例如條碼、QR code、標誌和其他線條圖),因為這會導致偵測和追蹤成效不佳。
- 避免使用具有重複圖案的圖片,因為這可能會導致偵測和追蹤問題。
使用 ARCore SDK 包含的
arcoreimg
工具,取得每張圖片的品質分數介於0
至100
之間。建議品質分數至少為 75。我們來看看下面兩個範例:圖片範例 1 範例圖片 2 分數: 0
分數: 100
包含重複的幾何圖形 有助於提供充分的解析度;含有許多與眾不同的特徵
建立映像檔資料庫的提示
- 使用 Android 適用的 arcoreimg 工具產生圖片資料庫檔案。這項工具僅適用於 Android 和 Android NDK 開發。此功能已內建於 Unity SDK 和 ARCore Unreal 外掛程式中。
- 資料庫會儲存從參照圖片中的灰階資料擷取的功能,並以壓縮方式呈現。每個圖片項目約為 6 KB。
- 在執行階段將圖片新增至資料庫,大約需要 30 毫秒。
- 在 worker 執行緒上新增圖片,避免阻斷 UI 執行緒。
- 或者,如果可以的話,請在編譯時使用 ARCore SDK 中提供的
arcoreimg
工具新增圖片。
- 如果您知道圖片的預期實體大小,請加以指定。這項資訊可改善偵測和追蹤效能,特別是針對大型實體圖像 (超過 75 公分)。
- 請避免將許多未使用的映像檔保留在資料庫中,因為 CPU 使用率增加會稍微影響系統效能。
最佳化追蹤的訣竅
- 如果圖片不會從初始位置移動 (例如貼在牆上的海報),您可以將錨點附加到圖片,提高追蹤穩定性。
- 實體圖片必須佔據相機影像的至少 25%,才能進行初步偵測。您可以提示使用者將實體圖片放入相機畫面中。
- 請等到圖片的追蹤狀態為完整追蹤後,再使用圖片的姿勢和大小估計值。當 ARCore 初次偵測到圖片,但未指定預期的實際大小時,其追蹤狀態就會暫停。這表示 ARCore 已辨識圖片,但未收集足夠的資料,無法估算圖片在 3D 空間中的位置。