Main Content

cameraParameters

カメラ パラメーターを格納するオブジェクト

説明

cameraParameters オブジェクトには、カメラの内部パラメーター、外部パラメーターおよびレンズ歪みパラメーターが格納されます。

作成

ここで説明する関数 cameraParameters を使用して cameraParameters オブジェクトを作成できます。また、入力イメージ ポイントの M×2×numImages の配列を指定し、estimateCameraParameters を使用して、cameraParameters オブジェクトを作成することもできます。M は各パターンのキーポイント座標の数です。

説明

cameraParams = cameraParameters は、カメラの内部パラメーター、外部パラメーター、およびレンズ歪みパラメーターを含む cameraParameters オブジェクトを作成します。

cameraParams = cameraParameters(Name,Value) は、名前と値の引数を 1 つ以上使用して cameraParameters オブジェクトのプロパティを設定します。指定していないプロパティは既定値を使用します。

たとえば、cameraParams = cameraParameters("RadialDistortion",[0 10]) は、半径方向のレンズ歪みプロパティ RadialDistortion をベクトル [0 10] として設定します。

cameraParams = cameraParameters(paramStruct) は、paramStruct に格納されているパラメーターを使用して既存の cameraParameters オブジェクトから同一の cameraParameters オブジェクトを作成します。

入力引数

すべて展開する

カメラ パラメーター。カメラ パラメーター構造体として指定します。既存の cameraParameters オブジェクトから paramStruct を取得するには、関数 toStruct を使用します。

プロパティ

すべて展開する

内部カメラ パラメーター:

カメラの内部パラメーターの行列。3 行 3 列の行列として指定します。行列の形式は次のようになります。

[fxscx0fycy001]

座標 [cx cy] は光学的中心 (主点) をピクセル単位で表します。x 軸と y 軸が厳密に直交する場合、せん断パラメーター s は 0 に等しくなります。

fx = F*sx

fy = F*sy

  • F は焦点距離のワールド単位で、通常はミリメートル単位で表されます。

  • sx と sy は、それぞれ x 方向と y 方向のワールド単位あたりのピクセル数です。

  • fx と fy はピクセル単位で表されます。

この プロパティ は読み取り専用です。

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

依存関係

Intrinsics プロパティが空にならないように、ImageSize プロパティを使用してイメージ サイズを指定しなければなりません。カメラの内部パラメーターはイメージ サイズによって異なります。

イメージ サイズ。2 要素ベクトル [mrows ncols] として指定します。

カメラのレンズ歪み:

半径方向歪み係数。2 要素ベクトルまたは 3 要素ベクトルとして指定します。2 要素ベクトルを指定すると、オブジェクトでは 3 番目の要素が 0 に設定されます。半径方向歪みとは、主点から伸びる放射状の線に沿ったイメージ ポイントの変位です。

カメラ パラメーター オブジェクトは、点の半径方向歪み位置を計算します。歪んだ点は (xdistorted, ydistorted) として次のように表されます。

xdistorted = x(1 + k1*r2 + k2*r4 + k3*r6)

ydistorted= y(1 + k1*r2 + k2*r4 + k3*r6)

x、y は歪み補正後のピクセル位置
k1、k2 および k3 はレンズの半径方向の歪み係数
r2 = x2 + y2
通常は 2 つの係数で十分です。歪みが大きい場合は、k3 を含めることができます。歪み補正後のピクセル位置は、光学的中心を原点とする正規化されたイメージ座標に示されます。この座標はワールド単位で表されます。

円周方向歪み係数。2 要素ベクトルとして指定します。円周方向の歪みは、レンズとイメージ平面が平行にならない場合に生じます。カメラ パラメーター オブジェクトは、点の円周方向歪み位置を計算します。歪んだ点は (xdistorted, ydistorted) として表されます。歪み補正後のピクセル位置は、光学的中心を原点とする正規化されたイメージ座標に示されます。この座標はワールド単位で表されます。

円周方向の歪みは、レンズとイメージ平面が平行にならない場合に生じます。円周方向の歪み係数は、このタイプの歪みをモデル化します。

Comparison of zero tangential distortion and tangential distortion

歪んだ点は (xdistorted, ydistorted) として次のように表されます。

xdistorted = x + [2 * p1 * x * y + p2 * (r2 + 2 * x2)]

ydistorted = y + [p1 * (r2 + 2 *y2) + 2 * p2 * x * y]

  • x、y — 歪み補正後のピクセル位置。x と y は正規化されたイメージ座標内にあります。正規化されたイメージ座標は、光学的中心への変換後にピクセル単位の焦点距離で除算したピクセル座標から求められます。したがって、x と y は次元がありません。

  • p1 および p2 — レンズの円周方向の歪み係数。

  • r2 = x2 + y2

外部カメラ パラメーター:

この プロパティ は読み取り専用です。

キャリブレーション パターンの外部パラメーター。rigidtform3d オブジェクトの P 要素ベクトルとして指定します。各オブジェクトは、3 次元回転行列とカメラの並進ベクトルに関する情報を格納します。

  • rigidtform3d オブジェクトの R プロパティは、対応するキャリブレーション パターンに対するカメラ イメージ平面の 3 次元回転を示します。

  • rigidtform3d オブジェクトの Translation プロパティは、ワールド単位で表現された、対応するキャリブレーション パターンに対するカメラの並進 t を示します。

次の方程式は、チェッカーボードのフレームのワールド座標 [X Y Z] と対応するイメージ ポイント [x y] を関連付ける変換を行います。

w[xy1]=K[Rt][XYZ1]

  • w: 任意のスケール係数

  • K: カメラの内部パラメーターの行列

  • R: カメラの 3 次元回転を表す行列

  • t: ワールド座標系に対するカメラの並進

剛体の幾何学的変換では、歪みが考慮されません。歪みを除去するには、関数 undistortImage を使用します。

この プロパティ は読み取り専用です。

3 次元回転ベクトル。P 回転ベクトルを含む P 行 3 列の行列として指定します。各ベクトルは、対応するキャリブレーション パターンに相対的なカメラのイメージ平面の 3 次元回転を示します。ベクトルはカメラが回転する 3 次元軸を指定します。大きさはラジアン単位の回転角度です。PatternExtrinsics プロパティは、対応する 3 次元回転行列を使用して幾何学的変換オブジェクトを指定します。

推定されたカメラ パラメーターの精度:

この プロパティ は読み取り専用です。

再投影された点と検出された点の間の平均ユークリッド距離。ピクセル単位で数値として指定します。

推定されたカメラ パラメーターの精度。[x y] 座標の M x 2 x P の配列として指定します。[x y] 座標は、再投影されたパターンのキー ポイントと検出されたパターンのキー ポイント間の並進を x および y で表します。このプロパティの値は、推定されたカメラ パラメーターの精度を表します。P は、カメラ パラメーターを推定するパターン イメージの数です。M は各イメージのキーポイントの数です。

この プロパティ は読み取り専用です。

キャリブレーション イメージに再投影されたワールド ポイント。[x y] 座標の M x 2 x P の配列として指定します。P はパターン イメージの数で、M は各イメージ内のキーポイントの数です。パターンで検出されたキーポイントの欠損点は、[NaN,NaN] として示されます。

キャリブレーション パターン内で検出されたキーポイント。M 行 P 列の logical 配列として指定します。M はキャリブレーション パターン全体のキー ポイントの数で、P はキャリブレーション イメージの数を指定します。

カメラ パラメーター推定の設定:

カメラの外部パラメーターを推定するキャリブレーション パターンの数。整数として保存します。キャリブレーション パターンの数は、並進ベクトルと回転ベクトルの数と一致します。

キャリブレーション パターンのキー ポイントのワールド座標。M 行 2 列の配列として指定します。M は、パターン内のキー ポイントの数を表します。

ワールド ポイント単位。文字ベクトルまたは string スカラーとして指定します。値は測定単位を示します。

せん断推定フラグ。logical スカラーとして指定します。この logical を true に設定すると、オブジェクトはイメージの座標軸のせん断を推定します。この logical を false に設定すると、イメージの座標軸は厳密に直交します。

半径方向歪み係数の数。数値 2 または 3 として指定します。

円周方向歪み推定フラグ。logical スカラー true または false として指定します。この logical を true に設定すると、オブジェクトは円周方向歪みを推定します。この logical を false に設定すると、円周方向歪みは無視されます。

すべて折りたたむ

カメラ キャリブレーション関数を使用してイメージから歪みを除去します。この例では cameraParameters オブジェクトを手動で作成していますが、実際は estimateCameraParameters または "カメラ キャリブレーター" アプリを使用してオブジェクトを派生させます。

cameraParameters オブジェクトを手動で作成します。

k = [715.2699 0 565.6995; 0 711.5281 355.3466; 0 0 1];
radialDistortion = [-0.3361 0.0921]; 
cameraParams = cameraParameters("K",k,"RadialDistortion",radialDistortion)
cameraParams = 
  cameraParameters with properties:

   Camera Intrinsics
                         Intrinsics: [0x0 cameraIntrinsics]

   Camera Extrinsics
                  PatternExtrinsics: [0x1 rigidtform3d]

   Accuracy of Estimation
              MeanReprojectionError: NaN
                 ReprojectionErrors: [0x2 double]
                  ReprojectedPoints: [0x2x0 double]

   Calibration Settings
                        NumPatterns: 0
                  DetectedKeypoints: [0x2 double]
                        WorldPoints: [0x2 double]
                         WorldUnits: 'mm'
                       EstimateSkew: 0
    NumRadialDistortionCoefficients: 2
       EstimateTangentialDistortion: 0

イメージから歪みを除去します。

I = imread(fullfile(matlabroot,"toolbox","vision","visiondata","calibration","mono","image01.jpg"));
J = undistortImage(I,cameraParams);

元のイメージと歪み補正後のイメージを表示します。

montage({I,J})
title("Original Image (left) vs. Corrected Image (right)")

Figure contains an axes object. The axes object with title Original Image (left) vs. Corrected Image (right) contains an object of type image.

参照

[1] Zhang, Z. "A Flexible New Technique for Camera Calibration." IEEE Transactions on Pattern Analysis and Machine Intelligence 22, no. 11 (November 2000): 1330–34. https://doi.org/10.1109/34.888718.

[2] Heikkila, J., and O. Silven. “A Four-Step Camera Calibration Procedure with Implicit Image Correction.” In Proceedings of IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 1106–12. San Juan, Puerto Rico: IEEE Comput. Soc, 1997. https://doi.org/10.1109/CVPR.1997.609468.

拡張機能

バージョン履歴

R2014a で導入

すべて展開する