1

カメラ画面に 3D オブジェクトをオーバーレイできるサンプル アプリケーションを作成しようとしています。それらは特定のポイントに配置され、ユーザーがカメラを動かして視点をシフトすると、フレームごとに再描画されます。

本質的に、私はこれを複製しようとしています: http://www.youtube.com/watch?v=EEstFtQbzow

問題をより正確に表現するための私の試みは次のとおりです。最初のオブジェクト配置時に初期画像マトリックス (すべての X、Y ピクセル座標を表す) が与えられることを検討してください。配置したら、後続のすべてのビデオ フレームを分析して、配置されたオブジェクトを再配置し、新しいパースペクティブを指定して正しく再描画 (オーバーレイ) できるようにする必要があります。

私はコンピュータービジョンのバックグラウンドを少し持っていますが、この特定のタスクを行う方法がわかりません。参考までに、私が作成しようとしているサンプル アプリケーションは Android 用であるため、誰かが既存のコードを知っていれば、それも活用できると思います。ただし、実装する必要があるアルゴリズムを説明している学術論文を参照するよう指示されることには、非常にオープンです。ありがとう。

4

4 に答える 4

2

これは、コンピュータ ビジョンではよく知られている問題です。これについては、バンドル調整またはフィルターベースの追跡のいずれかを使用する同時ローカリゼーションおよびマッピング (SLAM) を行うシステムなど、さまざまな論文を参照できます。これらのトピックに関する一般的な論文を読むと、現実世界でのカメラと追跡に関する多くの洞察が得られます。

要約すると、すべてのフレームでカメラの 6D ポーズを取得する必要があります。つまり、カメラが現実世界のどこにあるか (平行移動)、どこを向いているか (回転) を把握する必要があります。これは通常、最初にシーン内の顕著な特徴を追跡し、それらの 3D 位置を推定してから、これらの特徴の知覚された動きを使用してすべてのフレームでカメラの姿勢を把握することによって行われます。実世界で原点を定義する必要があります (解決しようとしている問題の原点としてカメラを使用することはできません)。開始するための参照として、少なくとも 4 つの既知の/測定されたポイントが必要です。質問に含めたビデオでは、Augment は印刷されたパターンを使用して最初のカメラ ポーズを取得しているようです。次に、現実世界の特徴を追跡して、ポーズの追跡を続けます。

カメラのポーズを設定したら、投影を使用して 3D オブジェクトを現実の世界に配置できます。カメラ ポーズは、基本/基本カメラ マトリックスにエンコードされます。これを使用して、ワールド内の任意の 3D ポイントをカメラのフレーム内の 2D 位置に変換できます。したがって、現実世界の仮想 3D ポイント (x, y, z) をレンダリングするには、カメラ マトリックスを使用して (x, y, z) を 2D ポイント (u, v) に投影します。次に、カメラから取得した画像上のポイントをレンダリングします。レンダリングしたいオブジェクトのすべてのポイントに対してこれを行うと、完了です:)

于 2013-04-18T15:15:27.723 に答える