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

pointsToWorld

イメージ点のワールド座標の特定

説明

worldPoints = pointsToWorld(cameraParams,rotationMatrix,translationVector,imagePoints) は入力イメージ点に対応する X-Y 平面のワールド座標点を返します。点は入力回転行列、並進ベクトル、カメラ パラメーターを使用して変換されます。

すべて折りたたむ

魚眼イメージの点をワールド座標にマッピングして、これらの点をグラウンド トゥルース点と比較します。チェッカーボードのパターンから成る一連のイメージを使用して、魚眼パラメーターを推定し、カメラのキャリブレーションを行います。

一連のチェッカーボードのキャリブレーション イメージを作成します。

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

イメージ内のチェッカーボードのコーナーを検出します。最後のイメージをテスト用に残しておきます。

[imagePoints,boardSize] = detectCheckerboardPoints(images.Files(1:end-1));

左上隅が (0,0) のパターン中心の座標系でチェッカーボードのコーナーのワールド座標を生成します。

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

このイメージとワールド座標から魚眼カメラ パラメーターを推定します。最初のイメージを使用してイメージのサイズを取得します。

I = imread(images.Files{end}); 
imageSize = [size(I,1) size(I,2)];
fisheyeParams = estimateFisheyeParameters(imagePoints,worldPoints,imageSize);
intrinsics = fisheyeParams.Intrinsics;

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

imagePoints = detectCheckerboardPoints(I);

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

[R,t] = extrinsics(imagePoints,worldPoints,intrinsics);

イメージ点を X-Y 平面のワールド座標にマッピングします。

newWorldPoints = pointsToWorld(intrinsics,R,t,imagePoints);

推定されるワールド座標点をグラウンド トゥルース点と比較します。

plot(worldPoints(:,1),worldPoints(:,2),'gx');
hold on
plot(newWorldPoints(:,1),newWorldPoints(:,2),'ro');
legend('Ground Truth','Estimates');
hold off

入力引数

すべて折りたたむ

カメラ パラメーター。cameraParameters または fisheyeParameters オブジェクトとして指定します。これらのオブジェクトには、カメラの内部パラメーター、外部パラメーターおよびレンズ歪みパラメーターが含まれます。

イメージ座標に対するワールド座標の 3 次元回転。3 行 3 列として指定します。回転行列を並進ベクトルと共に使用して、ワールド座標からカメラ座標系に点を変換できます。rotationMatrixtranslationVector 入力は同じデータ型でなければなりません。

データ型: double | single

イメージ座標に対するワールド座標の 3 次元並進。1 行 3 列として指定します。平行移動ベクトルを回転行列と共に使用して、ワールド座標系からカメラ座標系に点を変換できます。rotationMatrixtranslationVector 入力は同じデータ型でなければなりません。

データ型: double | single

イメージ点。イメージ点の M [x, y] 座標を含む M 行 2 列の行列として指定します。

cameraParameters オブジェクトを cameraParams 入力として使用すると、pointsToWorld でレンズ歪みが考慮されません。そのため、imagePoints 入力に歪み補正後のイメージで検出されたイメージ点が含まれているか、関数 undistortPoints を使用して歪みを補正しなければなりません。fisheyeIntrinsics オブジェクトの場合、イメージ点は歪んでいます。

出力引数

すべて折りたたむ

ワールド座標。M 行 2 列の行列として返されます。M は [x, y] ワールド座標の歪み補正後の点の数を表します。

R2016a で導入