3

私はウェブカメラを斜めのテーブルに向けており、それを使ってマーカーを追跡しています。OpenSceneGraphにtransformationMatrixがあり、その変換部分には、追跡されたオブジェクトからカメラまでの相対座標が含まれています。カメラが斜めに向けられているため、マーカーをテーブル上で移動すると、Y軸とZ軸が更新されますが、更新したいのはZ軸だけです。これは、マーカーの高さがマーカーまでの距離だけを変更しないためです。カメラ。これは、OpenSceneGraphのマーカーにモデルを投影するときにモデルがわずかにずれていて、マーカーをY値とZ値の周りに移動すると正しく更新されない場合に効果があります。

したがって、私の推測では、テーブルの表面に直交する新しい座標系を作成するために、各ポイントを乗算する変換行列が必要です。次のようなものです。A*v1= v2 v1はカメラの座標であり、v2は私の「テーブル座標」です。したがって、システムを「調整」するために4つのポイントを選択しました。そこで、画面の左上隅にマーカーを配置し、v1を現在のカメラ座標として定義し、v2を(0,0,0)として定義し、4つの異なるポイントに対してそれを行いました。そして、未知の行列と2つの既知のベクトルを持つことから得られる線形方程式を取り、行列を解きました。

マトリックスに対して取得する値は、モデルがマーカー上で正しく更新されるように、カメラの座標を乗算するために必要な値になると思いました。しかし、以前に収集した既知のカメラ座標にマトリックスを掛けると、「テーブル座標」が想定されていたものに近づくことはできませんでした。

私のアプローチは完全に間違っていますか、私は方程式で何かを台無しにしただけですか?(wolframalpha.comの助けを借りて解決)これを行うためのより簡単なまたはより良い方法はありますか?私は一種の道に迷い、時間のプレッシャーにさらされているので、どんな助けでも大歓迎です:-/ありがとう、David

4

2 に答える 2

2

マーカーをテーブル上で移動すると、Y 軸と Z 軸が更新されますが、マーカーの高さはカメラまでの距離だけを変更するわけではないため、更新したいのは Z 軸だけです。

カメラのビュー方向が Y 軸 (または Z 軸) と一致している場合にのみ当てはまります。カメラが Y に位置合わせされていない場合、変換によって X 軸を中心とした回転が適用されるため、マーカーの Y 座標と Z 座標の両方が変更されます。

したがって、テーブルの表面に直交する新しい座標系が得られるように、各ポイントを乗算する変換マトリックスが必要だと思います。

はい、そうです。その後、2 つの変換が行われます。

  1. テーブル参照でマーカーの座標を表現するT_table、
  2. T_camera は、カメラ参照でテーブル座標を表現します。

深度情報がないため、単一の 2D 画像から T_camera を見つけるのは困難です。

これはポーズ問題として知られており、特にダニエル・デメンソンによって研究されています。彼は、オブジェクトのポーズを見つけるための高速で堅牢なアルゴリズムを開発しました。

  • そのリサーチ ホームページのセクション 4「モデル ベースのオブジェクト ポーズ」(特に「25 行のコードでのモデル ベースのオブジェクト ポーズ」、1995 年) で入手可能な記事。
  • 同じ場所のコード、セクション「POSIT(CおよびMatlab)」。

OpenCv ライブラリは DeMenthon のアルゴリズムの実装を提供することに注意してください。このライブラリは、Web カメラから画像を取得するための便利で使いやすいインターフェイスも提供します。試してみる価値はあります: OpenCv ホームページ

于 2009-09-17T17:32:20.807 に答える
0

物理世界での 4 つのマーカーの位置が分かっていて、それらがカメラに表示される位置を記録していれば、何らかの変換を導き出すことができるはずです。

キャリブレーションを行うとき、マーカーを画面ではなくテーブルの四隅に置きたいと思いませんか? 画面の隅だけをやっているのであれば、おそらくテーブルの傾きを考慮していないのではないかと思います。

テーブルは文字通りカメラに対して傾斜しているだけですか、それともまったく回転していますか?

于 2009-09-14T12:58:48.907 に答える