私はOpenCVで拡張現実SDKを開発しています。このトピックに関するチュートリアル、従うべき手順、可能なアルゴリズム、リアルタイムパフォーマンスのための高速で効率的なコーディングなどを見つけるのにいくつかの問題がありました。
これまでのところ、次の情報と役立つリンクを集めました。
OpenCVのインストール
最新リリースバージョンをダウンロードします。
インストールガイドはここにあります(プラットフォーム:linux、mac、windows、java、android、iOS)。
オンラインドキュメント。
拡張現実
初心者向けに、OpenCVの単純な拡張現実コードを示します。良いスタートです。
うまく設計された最先端のSDKを探している人のために、OpenCV機能を考慮して、マーカー追跡に基づくすべての拡張現実が持つべきいくつかの一般的な手順を見つけました。
メインプログラム:すべてのクラスの作成、初期化、ビデオからのフレームのキャプチャ。
AR_Engineクラス:拡張現実アプリケーションのパーツを制御します。2つの主要な状態があるはずです:
- 検出:シーン内のマーカーを検出しようとします
- 追跡:検出されると、次のフレームでマーカーを追跡するために、より低い計算手法を使用します。
また、すべてのフレームでカメラの位置と向きを見つけるためのいくつかのアルゴリズムが必要です。これは、シーンで検出されたマーカーと、オフラインで処理したマーカーの2D画像との間のホモグラフィ変換を検出することによって実現されます。この方法の説明はこちら(18ページ)。ポーズ推定の主な手順は次のとおりです。
カメラの固有パラメータをロードします。以前はキャリブレーションによってオフラインで抽出されました。
追跡するパターン(マーカー)をロードします。これは、追跡する平面マーカーの画像です。後でシーンの特徴と比較できるように、このパターンの特徴を抽出して記述子(キーポイント)を生成する必要があります。このタスクのアルゴリズム:
フレームを更新するたびに、シーンから特徴を抽出するための検出アルゴリズムを実行し、記述子を生成します。ここでも、いくつかのオプションがあります。
パターンとシーン記述子の間の一致を検索します。
それらの一致からホモグラフィ行列を見つけます。RANSACは、一致のセットからインライア/アウトライアを見つけるために前に使用できます。
ホモグラフィからカメラポーズを抽出します。
- ホモグラフィからのポーズのサンプルコード。
- ポーズからのホモグラフィのサンプルコード。