最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

relativeCameraPose

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

説明

[relativeOrientation,relativeLocation] = relativeCameraPose(M,cameraParams,inlierPoints1,inlierPoints2) は、前の姿勢を基準としてキャリブレーションされたカメラの向きと位置を返します。2 つの姿勢は M によって関連付けられます。これは基礎行列、基本行列、または projective2d 行列のいずれかでなければなりません。関数はスケールを除いたカメラの位置を計算して、relativeLocation を単位ベクトルとして返します。

[relativeOrientation,relativeLocation] = relativeCameraPose(M,cameraParams1,cameraParams2,inlierPoints1,inlierPoints2) は、最初のカメラに対する 2 番目のカメラの向きと位置を返します。

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

入力引数

すべて折りたたむ

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

データ型: single | double

カメラ パラメーター。cameraParameters または cameraIntrinsics オブジェクトとして指定します。関数 estimateCameraParameters を使用して、cameraParameters オブジェクトを返すことができます。cameraParameters オブジェクトには、カメラの内部パラメーター、外部パラメーターおよびレンズ歪みパラメーターが含まれます。

カメラ 1 のカメラ パラメーター。cameraParameters または cameraIntrinsics オブジェクトとして指定します。関数 estimateCameraParameters を使用して、cameraParameters オブジェクトを返すことができます。cameraParameters オブジェクトには、カメラの内部パラメーター、外部パラメーターおよびレンズ歪みパラメーターが含まれます。

カメラ 2 のカメラ パラメーター。cameraParameters または cameraIntrinsics オブジェクトとして指定します。関数 estimateCameraParameters を使用して、cameraParameters オブジェクトを返すことができます。cameraParameters オブジェクトには、カメラの内部パラメーター、外部パラメーターおよびレンズ歪みパラメーターが含まれます。

ビュー 1 の対応する点の座標。M 個の [x,y] 座標の M 行 2 列の行列、または SURFPoints オブジェクト、MSERRegions オブジェクトまたは cornerPoints オブジェクトとして指定します。これらの点は、関数 estimateFundamentalMatrix または estimateEssentialMatrix を使用して取得できます。

ビュー 2 の対応する点の座標。M 個の [x,y] 座標の M 行 2 列の行列、または SURFPoints オブジェクト、MSERRegions オブジェクトまたは cornerPoints オブジェクトとして指定します。これらの点は、関数 estimateFundamentalMatrix または estimateEssentialMatrix を使用して取得できます。

出力引数

すべて折りたたむ

カメラの方向。3 行 3 列の行列として返されます。カメラを 1 つだけ使用する場合、行列は、最初のカメラの姿勢に対する 2 番目のカメラの姿勢の方向を記述します。2 つのカメラを使用する場合、行列は、カメラ 1 に対するカメラ 2 の方向を記述します。

データ型: single | double

カメラの位置。1 行 3 列の単位ベクトルとして返されます。カメラを 1 つだけ使用する場合、ベクトルは、最初のカメラの姿勢に対する 2 番目のカメラの姿勢の位置を記述します。2 つのカメラを使用する場合、ベクトルは、カメラ 1 に対するカメラ 2 の位置を記述します。

データ型: single | double

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

ヒント

  • カメラの姿勢 relativeOrientation および relativeLocation に対応するカメラの外部パラメーター rotationMatrix および translationVector を計算できます。

    [rotationMatrix,translationVector] = cameraPoseToExtrinsics(relativeOrientation,relativeLocation)
    前のカメラの姿勢の方向は単位行列 eye(3) であり、その位置は [0,0,0] です。

  • 次に、rotationMatrix および translationVector を関数 cameraMatrix への入力として使用することができます。

  • 入力の基礎行列から方向と位置の 4 つの可能な組み合わせを計算できます。組み合わせのうち 3 つは物理的に実現可能ではありません。なぜなら、片方または両方のカメラの背後の 3 次元の点を投影しているためです。関数 relativeCameraPoseinlierPoints1 および inlierPoints2 を使用して、実現可能な組み合わせを決定します。

拡張機能

R2016b で導入