質問

私は、2つのビューポイントのいくつかのペアから3D座標を計算しようとしています。
まず、MATLAB関数estimateFundamentalMatrix()を使用して、マッチしたポイントのF(番号> 8)を使用しました。

F1 =[-0.000000221102386   0.000000127212463  -0.003908602702784
     -0.000000703461004  -0.000000008125894  -0.010618266198273
      0.003811584026121   0.012887141181108   0.999845683961494]
.

と私のカメラ - これらの2つの写真を撮影しました - 固有行列で事前校正されました:

K = [12636.6659110566, 0, 2541.60550098958
     0, 12643.3249022486, 1952.06628069233
     0, 0, 1]
.

この情報から、次の情報を使用して必須行列を計算しました。

E = K'*F*K
.

SVDの方法で、私は最終的に射影変換行列を得ました:

P1 = K*[ I | 0 ] 
.

P2 = K*[ R | t ]
.

ここでRtは次のとおりです。

R = [ 0.657061402787646 -0.419110137500056  -0.626591577992727
     -0.352566614260743 -0.905543541110692   0.235982367268031
     -0.666308558758964  0.0658603659069099 -0.742761951588233]

t = [-0.940150699101422
      0.320030970080146
      0.117033504470591]
.

私は4つの可能な解決策があるべきであることを知っているが、私の計算された3D座標は正しくないように思われた。
私はカメラを使ってマークされた点で平らなオブジェクトの写真を撮りました。私はポイントを手で一致させました(これは、原材料について明らかな間違いがあるはずです)。しかし、結果は少しビットのバンディングを持つ表面であることがわかりました。
私はこれが理由が歪みで処理されなかった理由があるかもしれないと思います(しかし実際に私は私がしたことを覚えています)。

私はちょうど3D再建の問題を解決するためのこの方法を知りたいですか?特にカメラの組み込みマトリックスをすでに知っているとき。

JCRACTで編集する:私はプロセスをやり直して問題を示す画像を持っています、私は別の質問を詳細に説明してからリンクを投稿します。

JCRACTによる編集:キャリブレーションカメラは3D再構成のためのマッチングポイントを取得し、理想テスト失敗。そして@Schorsch私の質問をフォーマットするあなたの助けに本当に感謝します。私はその入力をそのままにする方法を学びながら、また私の文法を改善しようとします。ありがとう!

役に立ちましたか?

解決

基本行列と組み込み関数を持っているだけの場合は、縮尺までの再構成を得ることしかできません。それはあなたの翻訳ベクトルtはいくつかの未知の単位にあります。あなたはいくつかの方法で実際の単位で3Dポイントを得ることができます:

  • 世界中でいくつかの参照点を持つ必要があります。このようにして、未知の単位でそれらの座標を計算し、未知の単位を実単位に変換するためのスケールファクタを計算できます。
  • 一般的な座標系に対する各カメラの外部を知る必要があります。たとえば、シーンのどこかにチェッカーボードの校正パターンを選択して、外部のものを検出して計算することができます。この 。ちなみに、あなたが外部を知っているならば、あなたはポイントを一致させる必要なしに基本的な行列とカメラ投影行列を直接計算することができます。
  • カメラの間のrとtを推定するためにステレオキャリブレーションを行うことができます。この

他のヒント

フラットオブジェクトはクリティカルサーフェスで、それらからあなたの目標を達成することは不可能です。平面から2つの点を追加してみてください(HartleyとZissermanなどのテキストを参照のこと)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top