3

私は単一のキャリブレーションされたカメラを持っています(既知の固有パラメーター、つまりカメラ行列Kが既知であり、歪み係数も知られています)。

カメラの3D軌道を再構築したいと思います。シーンに関する事前の知識はありません。

同じシーンを見る2つの画像を提示し、それらから対応する一致する特徴点の2つのセット(SIFT、SURF、ORBなど)を抽出することで問題を単純化します。私の問題は、カメラの外部パラメーター(つまり回転行列)をどのように計算できるかです。 Rとto視点間の並進ベクトルt)?

私はなんとか基本行列を計算することができました、そしてKが知っているので、本質的な行列も同様です。5点相対ポーズ問題に対するDavidNisterの効率的なソリューションを使用して、4つの可能なソリューションを得ることができましたが、次のようになります。

  1. 本質行列E〜U * diag(s、s、0)* V'の制約が常に適用されるとは限らず、誤った結果が発生します。[編集]:平均特異値を取ると結果が修正されるようです:)1つ下に

  2. 4つのうちどれが正しいかをどうやって見分けることができますか?

ありがとう

4

2 に答える 2

2

ポイント1の解は正しいです:diag((s1 + s2)/ 2、(s1 + s2)/ 2、0)。

4つの解決策のどれが正しいかを判断することに関しては、1つだけがカメラフレームに関してすべてのポイントに正の深さを与えます。それはあなたが望むものです。

どのソリューションが正しいかを確認するためのコードは、次の場所にあります。http : //cs.gmu.edu/%7Ekosecka/bookcode.htmlのhttp://cs.gmu.edu/%7Ekosecka/examples-code/essentialDiscrete.m UとVの行列式を使用して、正しい方向の解を決定します。「それなら4つの可能性がある」というコメントを探してください。本質的な行列を推定しているだけなので、ノイズの影響を受けやすく、すべての点が同一平面上にある場合はまったく動作しません。

また、平行移動は一定のスケーリング係数内にのみ回復されるため、単位の大きさの正規化された平行移動ベクトルが表示されているという事実は正確に正しいです。その理由は、深さが不明であり、1と推定されるためです。8ポイントアルゴリズム+ 3d再構成のコード(ブックコードリンクのアルゴリズム5.1)のように、深さを回復する方法を見つける必要があります。

上記のサンプルコードを引用した本も非常に参考になります。http://vision.ucla.edu/MASKS/興味のある第5章は、サンプルチャプターリンクから入手できます。

于 2012-07-06T16:38:21.527 に答える
0

おめでとうございます。これらのテクニックを一生懸命勉強したようですね。実際の本番強度のコードについては、libmvceresをダウンロードし、それらを使用してソリューションを再コード化することをお勧めします。

2つの質問は実際には1つです。収集したデータに基づいて、無効なソリューションは拒否されます。特に、Nisterの(およびSteweniusの)アルゴリズムは、通常、RANSACのようなソルバーの内部ループで使用されます。このソルバーは、最適なインライアの最大数/最大数のソリューションを選択します。

于 2012-07-03T03:44:37.670 に答える