web-dev-qa-db-ja.com

OpenCVを使用した拡張現実SDK

OpenCVで拡張現実SDKを開発しています。トピックに関するチュートリアル、見つけるべき手順、可能なアルゴリズム、リアルタイムパフォーマンスのための高速で効率的なコーディングなどを見つけるためにいくつかの問題がありました。

これまでのところ、次の情報と役立つリンクを集めました。

OpenCVのインストール

ダウンロード 最新リリースバージョン

インストールガイドを見つけることができます こちら (プラットフォーム:linux、mac、windows、Java、Android、iOS)。

オンライン ドキュメント

拡張現実

初心者向け here はOpenCVのシンプルな拡張現実コードです。良いスタートです。

適切に設計された最新のSDKを探している人のために、OpenCV関数を考慮して、マーカートラッキングに基づくすべての拡張現実に必要な一般的な手順をいくつか見つけました。

  1. メインプログラム:すべてのクラス、初期化、 キャプチャ ビデオからのフレームを作成します。

  2. AR_Engineクラス:拡張現実アプリケーションの各部を制御します。主に2つの状態があります。

    • detection:シーン内のマーカーを検出しようとします
    • tracking:検出されると、今後のフレームでマーカーを追跡するために、より低い計算技術を使用します。

また、すべてのフレームでカメラの位置と向きを見つけるためのアルゴリズムが必要です。これは、シーンで検出されたマーカーと、オフラインで処理したマーカーの2D画像との間のホモグラフィ変換を検出することで実現されます。この方法の説明 こちら (18ページ)。ポーズ推定の主な手順は次のとおりです。

  1. カメラの組み込みパラメーターをロードします。以前にキャリブレーションによりオフラインで抽出されました。 intrinsic parameters

  2. パターンを読み込む(マーカー)追跡する:これは追跡する平面マーカーの画像です。後でシーンの特徴と比較できるように、このパターンの特徴を抽出して記述子( keypoints )を生成する必要があります。このタスクのアルゴリズム:

  3. フレームを更新するたびに、シーンから特徴を抽出するための検出アルゴリズムを実行し、記述子を生成します。繰り返しますが、いくつかのオプションがあります。

  4. パターンとシーン記述子の間のmatchesを検索します。

  5. これらの一致から Homography マトリックスを検索します。 RANSACを使用して、一致セット内のインライア/アウトライアを見つけることができます。

  6. ホモグラフィからCamera Poseを抽出します。

完全な例:

92
Jav_Rock

ARアプリケーションは多くの場合モバイルデバイスで実行されるため、他の機能の検出/記述子も検討できます。

19
Muffo

通常、マーカーを選択できる場合、まずエッジ検出器を使用して正方形のターゲットを検出し、次にハフまたは単純な輪郭のいずれかを検出してから、内部設計から特定のマーカーを識別します。一般的なポイントマッチャーを使用するのではなく。

よく書かれたサンプルコードについては、 Aruco をご覧ください。

13
Martin Beckett