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

cameraMatrix

説明

camMatrix = cameraMatrix(cameraParams,rotationMatrix,translationVector) は、4 行 3 列のカメラ射影行列を返します。この行列を使用して、同次座標の 3 次元ワールド座標点をイメージに投影できます。

すべて折りたたむ

一連のキャリブレーション イメージを作成します。

images = imageDatastore(fullfile(toolboxdir('vision'),'visiondata', ...
    'calibration','slr'));

イメージ内のチェッカーボードのコーナーを検出します。

[imagePoints,boardSize] = detectCheckerboardPoints(images.Files);

左上隅が (0,0) のパターン中心の座標系でチェッカーボードのコーナーのワールド座標を生成します。正方形のサイズはミリメートル単位です。

squareSize = 29;
worldPoints = generateCheckerboardPoints(boardSize,squareSize);

カメラのキャリブレーションを行います。

I = readimage(images,1);
imageSize = [size(I,1),size(I,2)];
cameraParams = estimateCameraParameters(imagePoints,worldPoints, ...
                                       'ImageSize',imageSize);

新しい位置でイメージを読み込みます。

imOrig = imread(fullfile(matlabroot,'toolbox','vision','visiondata', ...
      'calibration','slr','image9.jpg'));
figure; imshow(imOrig);
title('Input Image');

イメージの歪みを補正します。

im = undistortImage(imOrig,cameraParams);

新しいイメージで参照オブジェクトを検出します。

[imagePoints,boardSize] = detectCheckerboardPoints(im);

新しい外部パラメーターを計算します。

[rotationMatrix,translationVector] = extrinsics(...
    imagePoints,worldPoints,cameraParams);

カメラ行列を計算します。

P = cameraMatrix(cameraParams,rotationMatrix,translationVector)
P =

   1.0e+05 *

    0.0157   -0.0271    0.0000
    0.0404   -0.0046   -0.0000
    0.0199    0.0387    0.0000
    8.9399    9.4399    0.0072

入力引数

すべて折りたたむ

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

カメラの回転。3 行 3 列の行列として指定します。この行列は、関数 extrinsics を使用して取得できます。関数 relativeCameraPose を使用し、その orientation 出力を転置して、この行列を取得することもできます。rotationMatrix 入力と translationVector 入力は、実数、非スパースで、同じクラスでなければなりません。

カメラの並進。1 行 3 列のベクトルとして指定します。並進ベクトルは、ワールド座標からカメラ座標系への変換を示します。このベクトルは、関数 extrinsics を使用して取得できます。次のように関数 relativeCameraPoselocation 出力と orientation 出力を使用して、このベクトルを取得することもできます。

  • translationVector = -relativeLocation * relativeOrientation'

translationVector 入力は、実数、非スパースで、同じクラスでなければなりません。

出力引数

すべて折りたたむ

カメラ射影行列。4 行 3 列の行列として返されます。この行列には、イメージに投影される同次座標の 3 次元ワールド座標点が含まれます。rotationMatrixtranslationVectordouble に設定すると、関数は camMatrixdouble として返します。そうでない場合、camMatrixsingle として返します。

関数は、次のように camMatrix を計算します。

camMatrix = [rotationMatrix; translationVector] × K
K: 内部パラメーターの行列

その後、カメラ行列と同次座標を使用して、ワールド座標点をイメージに投影できます。

w× [x,y,1] = [X,Y,Z,1] × camMatrix.

(X,Y,Z): 点のワールド座標
(x,y): 対応するイメージ点の座標
w: 任意のスケール係数

データ型: single | double

拡張機能

R2014b で導入