校正されたカメラを使う3D再建のためのマッチされたポイントを取得します
-
21-12-2019 - |
質問
私は、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 ]
.
ここでR
とt
は次のとおりです。
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ポイントを得ることができます:
他のヒント
フラットオブジェクトはクリティカルサーフェスで、それらからあなたの目標を達成することは不可能です。平面から2つの点を追加してみてください(HartleyとZissermanなどのテキストを参照のこと)