プラットフォーム固有のガイド
Android(Kotlin/Java)
Android NDK(C)
Unity(AR Foundation)
Unreal Engine
ARCore の Augmented Images API を使用すると、ユーザーの環境にある 2D 画像(ポスターや商品パッケージなど)を検出して拡張できる AR アプリを構築できます。
一連の参照画像を指定します。ARCore は、コンピュータ ビジョン アルゴリズムを使用して各画像のグレースケール情報から特徴を抽出し、これらの特徴の表現を 1 つ以上の拡張画像データベースに保存します。
実行時に、ARCore はユーザーの環境内の平らなサーフェスでこれらの特徴を検索します。これにより、ARCore はこれらの画像を検出し、位置、向き、サイズ(指定されていない場合)を推定できます。
機能
ARCore は、最大 20 個の画像を同時に追跡できます。ARCore は、同じ画像の複数のインスタンスの検出やトラッキングを同時に行いません。
各拡張画像データベースには、最大 1,000 個の参照画像の情報を保存できます。データベースの数に上限はありませんが、常にアクティブにできるデータベースは 1 つのみです。
画像は、データベースごとに最大 1,000 個の画像をランタイムで拡張画像データベースに追加できます。以前に作成したデータベースは、ネットワーク接続を使用してダウンロードできます。
画像を追加するときに、検出する画像の物理サイズを指定できます。これにより、画像検出のパフォーマンスが向上します。
物理的なサイズが指定されていない場合、ARCore はサイズを推定し、この推定値を時間の経過とともに絞り込みます。
物理サイズが指定されている場合、ARCore は指定されたサイズを使用して画像の位置と向きを推定し、見かけ上のサイズまたは実際のサイズと指定された物理サイズとの差異を無視します。
ARCore は、次の画像に応答してトラッキングできます。
壁に掛けられたプリントやテーブルの上の雑誌など、固定された画像
動いている画像(走行中のバスの広告、ユーザーが手に持って動かしている平らな物体上の画像など)。
ARCore が画像の追跡を開始すると、各フレームで画像の位置と向きの推定値が提供されます。ARCore は、より多くのデータを収集するにつれて、これらの推定値を継続的に改良します。
画像が検出されると、ARCore は画像の位置と向きを「トラッキング」し続けます。これは、ユーザーがデバイスを動かしたために画像が一時的にカメラの視界から外れた場合でも同様です。この場合、ARCore は画像の位置と向きが静的であり、画像自体が環境内を移動していないと想定します。
トラッキングはすべてデバイス上で行われます。画像の検出と追跡にインターネット接続は必要ありません。
要件
画像の必須条件:
最初に検出するカメラフレームの 25% 以上を占めるようにします。
平らであること(シワが寄っていない、ボトルに巻き付けられていないなど)。
カメラがはっきりと映るようにしてください。部分的にぼやけたり、極端に傾けて表示したり、モーション ブラーでカメラの動きが速すぎるときに表示したりしないでください。
CPU 使用率とパフォーマンスに関する考慮事項
すでに有効になっている ARCore の機能によっては、拡張画像を有効にすると ARCore の CPU 使用率が上昇する可能性があります。AR 環境で不要な機能が必要ない場合は、無効にすることを検討してください。これにより、アプリで追加の CPU サイクルが利用可能になり、熱パフォーマンスとバッテリー駆動時間が改善されます。
詳細については、パフォーマンスに関する考慮事項をご覧ください。
ベスト プラクティス
参照画像を選択するためのヒント
- 画像の解像度は 300 x 300 ピクセル以上にする必要があります。高解像度の画像を使用しても、パフォーマンスは向上しません。
- 参照画像は PNG または JPEG ファイル形式で指定できます。
- 色情報は使用されません。カラー画像と同等のグレースケール画像の両方を、参照画像として、またはランタイムでユーザーが使用できます。
- 圧縮率の高い画像は使用しないでください。特徴の抽出に支障をきたします。
- 幾何学的特徴が多数含まれている画像や、特徴が非常に少ない画像(バーコード、QR コード、ロゴ、その他の線画など)は、検出と追跡のパフォーマンスが低下するため使用しないでください。
- 繰り返しパターンのある画像は避けてください。これも検出とトラッキングに問題を引き起こす可能性があります。
ARCore SDK に含まれている
arcoreimg
ツールを使用して、各画像の品質スコア(0
~100
)を取得します。品質スコアは 75 以上をおすすめします。次に 2 つの例を示します。画像の例 1 画像の例 2 スコア: 0
スコア: 100
繰り返しの多い幾何学的特徴が含まれている 十分な解像度、独自の機能を多数含む
画像データベースを作成する際のヒント
- Android 用の arcoreimg ツールを使用して、画像データベース ファイルを生成します。このツールは、Android および Android NDK 開発でのみ使用できます。これは、Unity SDK と ARCore Unreal プラグインに組み込まれています。
- データベースには、参照画像のグレースケール データから抽出された特徴の圧縮表現が保存されます。各イメージ エントリは約 6 KB を占めます。
- 実行時にデータベースに画像を追加するには約 30 ミリ秒かかります。
- UI スレッドをブロックしないように、ワーカー スレッドに画像を追加します。
- 可能であれば、ARCore SDK に含まれている
arcoreimg
ツールを使用して、コンパイル時に画像を追加します。
- 画像の想定される物理サイズがわかっている場合は、そのサイズを指定します。この情報により、特に大きな物理画像(75 cm 超)の検出とトラッキングのパフォーマンスが向上します。
- 使用されていない画像をデータベースに大量に保持しないでください。CPU 使用率の増加により、システム パフォーマンスに若干の影響が及ぶためです。
トラッキングを最適化するためのヒント
- 画像が初期位置から移動しない場合は(壁に貼り付けたポスターなど)、画像にアンカーを配置して、トラッキングの安定性を高めることができます。
- 最初の検出では、物理的な画像がカメラ画像の 25% 以上を占める必要があります。物理画像をカメラフレームに収まるようにユーザーに促すことができます。
- 画像のトラッキング状態が完全なトラッキングになるまで、画像のポーズとサイズの推定値を使用しないでください。ARCore によって画像が最初に検出されたときに、想定される物理サイズが指定されていない場合、そのトラッキング状態は一時停止されます。これは、ARCore が画像を認識したものの、3D 空間内の位置を推定するのに十分なデータを収集していないことを意味します。