Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

estrelpose

カメラの姿勢間の相対的な回転と並進の計算

R2022b 以降

説明

relativePose = estrelpose(M,intrinsics,inlierPoints1,inlierPoints2) は、前の姿勢を基準としてキャリブレーションされたカメラの姿勢を返します。2 つの姿勢は、基礎行列、基本行列、またはホモグラフィ行列 M によって関連付けられます。関数はスケールに沿ったカメラの位置を計算します。

relativePose = estrelpose(M,intrinsics1,intrinsics2,inlierPoints1,inlierPoints2) は、最初のカメラに対する 2 番目のカメラの姿勢を返します。

[relativePose,validPointsFraction] = estrelpose(___) はさらに、両方のカメラの前面を投影するインライア点の割合を返します。

すべて折りたたむ

前に計算済みの基礎行列、カメラ パラメーター、単一カメラのイメージ ポイントを読み込みます。

load("relCameraPoseData.mat")
intrinsics = cameraParams.Intrinsics;

前の姿勢を基準としてカメラの姿勢を計算します。

relPose = estrelpose(M,intrinsics,inlierPoints1,inlierPoints2)
relPose = 
  rigidtform3d with properties:

    Dimensionality: 3
       Translation: [0.9952 -0.0887 -0.0412]
                 R: [3x3 double]
                 A: [4x4 double]

入力引数

すべて折りたたむ

基礎行列、基本行列、またはホモグラフィ行列。3 行 3 列の行列として指定するか、ホモグラフィ行列を含む affinetform2d オブジェクト、projtform2d オブジェクト、または simtform2d オブジェクトとして指定します。3 行 3 列の行列は、次の関数の 1 つを使用して取得できます。

データ型: single | double

カメラの内部パラメーター。cameraIntrinsics オブジェクトとして指定します。

カメラ 1 のカメラ内部パラメーター。cameraIntrinsics オブジェクトとして指定します。

カメラ 2 のカメラ内部パラメーター。cameraIntrinsics オブジェクトとして指定します。

ビュー 1 の対応する点の座標。M 個の [x y] 座標からなる M 行 2 列の行列、または特徴点のタイプで説明されている特徴点オブジェクトの 1 つとして指定します。これらの点は、関数 estimateFundamentalMatrix または estimateEssentialMatrix を使用して取得できます。

ビュー 2 の対応する点の座標。M 個の [x y] 座標からなる M 行 2 列の行列、または特徴点のタイプで説明されている特徴点オブジェクトの 1 つとして指定します。これらの点は、関数 estimateFundamentalMatrix または estimateEssentialMatrix を使用して取得できます。

出力引数

すべて折りたたむ

ワールド座標における相対的なカメラの姿勢。rigidtform3d オブジェクトとして返されます。オブジェクトの "R" プロパティと "Translation" プロパティは、カメラの方向と位置を表します。カメラを 1 つだけ使用する場合、プロパティは、最初のカメラの姿勢に対する 2 番目のカメラの姿勢の方向と位置を記述します。2 つのカメラを使用する場合、行列はカメラ 1 に対するカメラ 2 の方向と位置を記述します。

両方のカメラの前面を投影する有効なインライア点の割合。スカラーとして返されます。validPointsFraction が小さすぎる場合 (通常は 0.9 未満)、基礎行列が正しくないことを示している可能性があります。

ヒント

  • カメラの外部パラメーターは次に従って計算できます。

    relativeOrientation = relativePose.R;
    relativeLocation = relativePose.Translation;
    camPose = rigidtform3d(relativeOrientation,relativeLocation);
    extrinsics = pose2extr(camPose)

  • 関数 estrelpose は、inlierPoints1 および inlierPoints2 の引数を使用して、複数の可能な解のうちどれが物理的に実現可能であるかを判定します。入力 Mprojtform2d オブジェクトの場合、同程度の実現可能な解が最大 2 つ存在する可能性があります。

拡張機能

バージョン履歴

R2022b で導入

すべて展開する