Main Content

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

cameraProjection

カメラ射影行列

R2022b 以降

説明

camProjection = cameraProjection(intrinsics,tform) は、3 行 4 列のカメラ射影行列 camProjection を返します。camProjection を使用して、変換 tform に従って同次座標の 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);
intrinsics = cameraParams.Intrinsics;

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

imOrig = readimage(images,9); 
figure 
imshow(imOrig)
title("Input Image")

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

[im,newOrigin] = undistortImage(imOrig,intrinsics,OutputView="full");

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

[imagePoints,boardSize] = detectCheckerboardPoints(im);

イメージ座標系のシフトを補正します。

imagePoints = imagePoints+newOrigin;

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

camExtrinsics = estimateExtrinsics(imagePoints,worldPoints,intrinsics);

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

P = cameraProjection(intrinsics,camExtrinsics)
P = 3×4
105 ×

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

入力引数

すべて折りたたむ

カメラの内部パラメーター。cameraIntrinsics オブジェクトとして指定します。これらのオブジェクトは、カメラの内部キャリブレーション パラメーターに関する情報を格納します (レンズ歪みパラメーターなど)。

ワールド座標からカメラ座標への変換。rigidtform3d オブジェクトとして指定します。関数 estimateExtrinsics を使用して、tform オブジェクトを作成できます。オブジェクトの R プロパティと Translation プロパティは、同次座標の 3 次元ワールド ポイントをイメージに投影するために必要な回転行列と並進を表します。

出力引数

すべて折りたたむ

カメラ射影行列。3 行 4 列の行列として返されます。この行列には、イメージに投影される同次座標の 3 次元ワールド ポイントが含まれます。

関数は、内部パラメーターの行列 K および tform オブジェクトの R プロパティと Translation プロパティを使用して、次のように camProjection を計算します。

camProjection = K × [tform.R tform.Translation']

カメラ射影行列と同次座標を使用して、ワールド ポイントをイメージに投影できます。

w × [x,y,1]' = camProjection× [X,Y,Z,1]'

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

変換 tformR プロパティと Translation プロパティのデータ型が double の場合、関数は camProjectiondouble として返します。それ以外の場合、関数は camProjectionsingle として返します。

データ型: single | double

拡張機能

バージョン履歴

R2022b で導入

すべて展開する