3

emgucv(C#)でSURFを使用して、1つのカメラで異なる視野角(左右など)で撮影された同じシーンの2つの画像をすでに比較しています。そして、2D 変換用の 3x3 ホモグラフィ マトリックスが得られました。しかし今、これらの 2 つの画像を 3D 環境 (DirectX を使用) で作成したいと考えています。そのためには、2 番目の画像 (右) と 1 番目の画像 (左) の相対的な位置と向きを 3D 形式で計算する必要があります。2番目の画像の回転行列と平行移動行列を計算するにはどうすればよいですか?

2番目の画像のz値も必要です。

「ホモグラヒ分解」というものを読みました。それは方法ですか?

ホモグラフィ分解に精通している人はいますか?それを実装するアルゴリズムはありますか?

助けてくれてありがとう。

4

3 に答える 3

7

ホモグラフィは平面シーンでのみ機能します (つまり、すべてのポイントが同一平面上にあります)。その場合、ホモグラフィは射影変換であり、そのコンポーネントに分解できます。

しかし、あなたのシーンが同一平面上にない場合 (あなたの説明からそうだと思います)、もう少し手間がかかります。ホモグラフィの代わりに、基礎行列を計算する必要があります(これはemgucvが行います)。基本行列は、カメラ固有行列 (K)、相対回転 (R)、および 2 つのビュー間の平行移動 (t) の組み合わせです。K を知っていれば、回転と平行移動を復元するのは非常に簡単です。emgucv にはカメラ キャリブレーションのメソッドがあるようです。私は彼らの特定の方法に精通していませんが、これらは一般的に、既知の形状でシーンのいくつかの画像を撮ることを含みます.

于 2012-02-16T00:06:19.457 に答える
6

カメラの動き(スケーリング係数までの正確な回転と平行移動)を把握するには、必要です

  • たとえば、8 ポイント アルゴリズムを使用して基本行列 F を計算します。
  • エッセンシャル マトリックス E = A'FA を計算します。ここで、A は固有カメラ マトリックスです。
  • 定義により Tx * R である E を SVD 経由で E=ULV' に分解します。</li>
  • 特別な 3x3 マトリックスを作成する

        0 -1  0   
    W = 1  0  0      
        0  0  1  
    

分解を実行するのに役立ちます:

R = UW -1 V T、Tx = ULWU T、ここで

      0  -tx  ty
Tx =  tz  0   -tx
     -ty  tx   0 
  • E は任意の符号を持つことができ、W は Winv で置き換えることができるため、4 つの異なる解があり、カメラの前で最も多くの点を生成するものを選択する必要があります。
于 2014-02-20T08:09:30.587 に答える
3

この質問をしてからしばらく経ちました。今では、この問題に関するいくつかの良い参考文献があります。

それらの 1 つは Ma による「3D イメージへの招待」で、その第 5 章はここで無料ですhttp://vision.ucla.edu//MASKS/chapters.html

また、Peter Corke の Vision Toolbox には、これを実行するためのツールが含まれています。しかし、彼は分解の数学についてあまり説明していません

于 2014-04-16T06:55:00.870 に答える