プラットフォーム固有のガイド
Android(Kotlin/Java)
Android NDK(C)
Unity(AR Foundation)
Unreal Engine
ARCore の拡張画像 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 空間での位置を推定するのに十分なデータを収集していないことを意味します。