rigid3dの構造体配列の作成 (Visual SfM)

4 views (last 30 days)
ST
ST on 28 Nov 2020
Answered: Kenta on 2 Dec 2020
500枚の画像をVisual SfMに入れ、得られた各画像のカメラパラメータを
1×500(画像の枚数) rigid3d の構造体配列で表現したいのですがどのようにすればよいのでしょうか。
配列の内容は以下の通りです。
1×500 rigid3d:
Dimensionality: 3
T: 4×4 double
Roatation: 3×3 double
Translation: 1×3 double
Visual SfMより得られたカメラパラメータのテキストファイルは添付のものになります。
  2 Comments
ST
ST on 29 Nov 2020
ご回答ありがとうございます。
こちら
を参考に自分で撮影したものを用いて、実行しようとしております。
下記のGround Truthとの比較で、'orbslamGroundTruth.mat'の部分を自分のデータのもので作成しようとしています。(こちらが最終的にやりたいことです。)
% Load ground truth
gTruthData = load('orbslamGroundTruth.mat');
gTruth = gTruthData.gTruth;
% Plot the actual camera trajectory
plotActualTrajectory(mapPlot, gTruth(addedFramesIdx), optimizedPoses);
% Show legend
showLegend(mapPlot);
% Evaluate tracking accuracy
helperEstimateTrajectoryError(gTruth(addedFramesIdx), optimizedPoses);
'orbslamGroundTruth.mat'の中のgTruthが1×(画像の枚数) rigid3dの構造体配列になっています。
撮影した動画をフレームに切り分ける
→フレームに分けた画像たちをVisual SfM (http://ccwu.me/vsfm/)に入れ、添付のようなパラメータのテキストファイルを作成
→このテキストファイルを用いて構造体配列を作成
といった流れで取り組んでおりますが、違う手法やこの手法が正しくない場合は教えていただきたいです。
質問内容が少し変わっていしまいましたが、ご回答頂けると幸いです。

Sign in to comment.

Accepted Answer

Kenta
Kenta on 2 Dec 2020
コメントのほう、返信ありがとうございます。
なるほど、visual "SLAM" ですね。groundTruthは、正解データなので、自分でコーディングによって、作る、というのはできないのではないかと思います。
やれることとしては、おっしゃるように、動画から画像を切り出して、visual SLAMのコードに入力する。(ここで、このコードを試す前にカメラキャリブレーションのアプリなどでご使用のカメラの内部パラメータを求めておいて、intrinsics変数を用意しておくことが必要です。)そして、実際に動いた軌跡を単眼の画像(動画)から復元する、という流れでしょうか。

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!