2016-03-22 11 views
1

異なるビューからの2D画像を使用して3Dモデルの再構成を試みています。私は希望の結果を得るためにMatlabからこのサンプルコードに従っています: Structure From Motion From Two Views2D画像を使用した3D再構成における回転と平行移動

手動で1センチメートルの翻訳を第一と第二の画像の画像を撮影した:第1および第2の画像のマッチした特徴と manually taken images of 1st and 2nd image with translation of 1cm

オーバーレイ: overlay with matched features of first and second image

カメラから撮影したテスト画像あり

2cmの平行移動で1番目と2番目の画像を手動で撮影した画像: manually taken images of 1st and 2nd image with translation of 2cm

第一及び第二の画像のマッチした特徴を持つ

オーバーレイ: overlay with matched features of first and second image

これらは、私は、それぞれの場合のために取得並進ベクトル及び回転行列である:

1センチメートル翻訳: 並進ベクトル:[0.0245537412606279 -0.855696925927505 -0.516894461905255] 回転行列:

[0.999958322438693 0.00879926762261436 0.00243439415451741; 
-0.00887800587357739 0.999365801035702 0.0344844418829408; 
-0.00212941243132160 -0.0345046172211024 0.999402269855899] 

2センチメートル翻訳: 並進ベクトル:[-0.215835469166982 -0.228607603749042 -0.949291111175908] 回転行列:

[0.999989695803078 -0.00104036790630347 -0.00441881457943975; 
0.00149220346018613 0.994626852476622 0.103514238930121; 
0.00428737874479779 -0.103519766069424 0.994618156086259] 

ドキュメンテーションでは、2つのイメージの間の相対的な回転と平行移動です。

しかし、これらの数字の意味と上記の値の単位は何かを理解できません。

翻訳と回転をどのような単位で取得しているのか、あるいはcm/mmやラジアン/度のような実世界の値に匹敵する回転と平行移動を抽出する方法を教えてもらえますか?

答えて

1

角度をラジアンで表示するaxis-angle-representationに回転行列を変換できます。これは、vrrotmat2vec関数を使用するか、パッケージにアクセスできない場合はthisに従って翻訳者を自分で実装することによって行うことができます。角度はラジアンで表示されます。

しかし、翻訳に関しては、スケールを知らないので、現実世界で意味をなさない単位でそれを得ることはありません。これは残念なことに一般的な動きからの構造の問題です。小さなものから遠いものに近いイメージを取るかどうかを知ることは不可能です。

3Dモデルを構築するためにモーションから構造を使用する場合、相対距離が正しく取得されるため、これは問題ではありません。したがって、あなたはシーンをキャプチャすることができます(チュートリアルの残りの部分に従います)。実際の人生のサイズを知っているイメージがない限り、何か2cmか2kmの高さがあると言うことはできません。

はそれが役に立てば幸い:)

+0

実際にはチュートリアルの最後のステップは、あなたがオブジェクト – rasan076

+0

の大きさを知っていれば、実際に私が私告げるグランドトゥルースデータを持っているメトリックの距離でのシーンで物事を測定する方法を説明しますx、y、z軸の平行移動(カメラの動きを使って計算された)をミリメートル単位で表します。ミリグラム単位の真理値と私の翻訳を比較できる方法はありますか?なぜなら、私は抽出された値の精度を見つけたかったからです。 –

関連する問題