プラットフォーム固有のガイド
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 空間内の位置を推定するのに十分なデータを収集していないことを意味します。