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