プラットフォーム固有のガイド
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 ms かかります。
- UI スレッドをブロックしないよう、ワーカー スレッドに画像を追加します。
- または、可能であれば、ARCore SDK に含まれる
arcoreimg
ツールを使用して、コンパイル時に画像を追加します。
- 予想される画像の物理サイズがわかっている場合は、それを指定します。この情報は特に大きな物理画像(75 cm 超)で、検出とトラッキングのパフォーマンスを向上させます。
- CPU 使用率の増加によってシステム パフォーマンスにわずかな影響が生じるため、多くの未使用のイメージをデータベースに保持しないでください。
トラッキングを最適化するためのヒント
- 画像が初期位置から移動しない場合(壁に取り付けられたポスターなど)は、画像にアンカーを取り付けて、トラッキングの安定性を高めることができます。
- 最初の検出では、物理画像がカメラ画像の 25% 以上を占有している必要があります。物理画像をカメラフレームに収めるようユーザーに促すことができます。
- 画像のトラッキング状態がフルトラッキングになるまで、画像のポーズとサイズの推定値を使用しないでください。画像が最初に ARCore によって検出され、想定物理サイズが指定されなかった場合、そのトラッキング状態は一時停止されます。これは、ARCore が画像を認識したものの、3D 空間での位置を推定するのに十分なデータを収集していないことを意味します。