1

2 つの画像間の関心点のエピポーラ線を計算したいと考えています。私は噴水データセットに取り組んでいるので、回転行列と平行移動行列、およびカメラ行列があります。私は現在、高速にするためにMatlabを使用していますが、私が持っているバージョンはかなり古いです(2009)。

E=t*R を介して基本行列を計算し、次に l=E*P のエピポーラ線を計算しています。ここで、P は関心点/関心点のセットです。次に、ax+by+c=0 のライン パラメータであると推測される 3 つのラインを持つベクトルを取得します。右の画像に描かれたエピポーラ線は完全に間違っており、左の画像の点から遠く離れています。何か案が???

編集: 使用されたデータセット --> 噴水ベンチマーク、画像 0000 および 0001 http://cvlabwww.epfl.ch/~strecha/multiview/denseMVS.html

出力: ポイント P1=[433.36;861.15;1] などの基本行列

E =

0.761857065048902  1.969487475012598 40.418915885686594

-0.927781947178923 0.698934833377211 33.173562943087106

-45.044061511303227 -26.573128396975097 1.000000000000000

共役な 2 つの複素固有値があります。

エピポーラ線:1.0e+004 *

0.206660143270238 0.023299771007641 -4.240274401559348

4

2 に答える 2

1

最後に、私の問題の解決策を見つけました。他の誰かが興味を持っている場合に備えて、ここに投稿します。

相対回転行列と平行移動行列を正しく計算するには、Roto-Translation 行列を使用する必要があります。この行列は、すべての画像の 4x4 行列です。左上部分は回転 (ワールド座標系に対して)、4 番目のサブ列は並進ベクトル (ワールド座標系に対して) で、最後の行は [0 0 0 1] です。したがって、2 つの画像に対してこのような行列が 2 つある場合、最終的な回転変換行列は Qright-->left=inv(Qright)*Qleft になります。このマトリックスから、相対移動 (t) と回転 (R) (それぞれ 4 番目のサブ列と左上のマトリックス) を抽出します。次に、平行移動用の非対称行列 T を作成します。エピポーラ行列は E=R*T です。しかし、これでは十分ではありません。エピポーラ線を正しく計算するには、基礎行列 F を見つける必要があります。私が使用したような特定のデータセットについて、カメラ行列 K が与えられているので、これは簡単です: F=inv(Kright')*E*inv(Kleft) ここで、(') は転置され、inv は逆行列です。次に、右の画像のエピポーラ ラインが計算されます。行 = F*P です。ここで、P は同次座標の点です。

ありがとうございました!

于 2013-08-06T13:23:59.047 に答える