2012-04-30 15 views
4

2つの画像間のいくつかの点の座標対応を計算しようとしています。 私は基本的な行列を見つけるためにOpenCVのfindFundamentalMatrix()でそれらを使っています。 各点についてx^T * F * x' = (0)が確認され、結果は常に正しいか非常に近いです。基本行列を使ってOpenCVを使って座標変換を計算する

ものは今は第二の画像(y')上の点の座標を見つけるために最初の画像(y)と基本マトリックス(F)上の点の座標を使用したいのですが、あります。私は最初に上記の方程式を単純に使うことを考えましたが、y'点のzだけを与えれば、an infinity of solutionsがあります。

他にどのように基本行列を使用して翻訳を計算できますか?

2つの投影を「リンク」する基本的な行列を知っていれば、どのようにして既知の点の座標を第1の投影から第2の投影に変換することができますか?

我々はこの式でabFを知っていることを考えると:(A」、B」、1)T * F *(A、B、1)=(0)

私が作りました例えば、http://i.imgur.com/drNr2.jpgのような簡単な図案です。考え方は、投射2の赤い点(xq, yq)の座標を、投影1の座標と両方の投影の他のすべての点の座標を知っていることを考慮して調べることです基本行列を求めるアルゴリズムは実際には少なくとも8点必要です)

もう1つの精度:my例えば、既知の点は同一平面上にあるが、研究された点は必ずしも同じではない。

私はそれが私の問題がより明確になる願っています:)

答えて

3

基礎行列は、他の行に一枚の画像からのポイントを変換します。もっと詳しく教えてください

他にどのように基本行列を使って翻訳を計算できますか?

ください。おそらく例を使って達成したいことを私たちに伝えることも助けになります。

編集:あなたがカメラを校正している場合は、基礎行列、Fから、基本行列、Eを計算することができます。 Eは、ある画像内のあるポイントを他の画像内のポイントに変換します。もちろん、内部マトリックスが必要です。 Kが内部行列E=transpose(K)FKの場合 もう1つの方法は、もう一方の画像内のあるポイントの対応するラインを見つけて、このラインに沿って、最初の画像のポイントを囲むパッチと外観上最も類似するパッチを検索することです。他にもいくつかの方法がありますが、あなたのケースに合っているかどうかを知るためには、問題に関するより多くの情報が本当に必要です。

編集2:図の点は同一平面上にあります。したがって、ホモグラフィは、2つの画像間の点位置をマッピングし、基本行列を見つける必要はない。OpenCVはホモグラフィを推定する機能を持っていますが、これには4点しか必要ありません。

+0

あなたが使用しているポイントのグループがチェス盤のものであれば、opencvを使って簡単に内部パラメータを取得できます(これはチェスボードのポーズがいくつか必要です)。 – guinny

+0

これは答え:) –

+0

:-)それはあまりにも長いので、それを答えにすることを決めた。 – fireant

2

最初の画像内の興味深い点aについて、Fを使用して2番目の画像内のエピポーラ線l(l = Fa)を計算すると、最も相関の高い点lをlで見つけることができますポイントa。

関連する問題