このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
cameraParameters
カメラ パラメーターを格納するオブジェクト
説明
cameraParameters
オブジェクトには、カメラの内部パラメーター、外部パラメーターおよびレンズ歪みパラメーターが格納されます。
作成
ここで説明する関数 cameraParameters
を使用して cameraParameters
オブジェクトを作成できます。また、入力イメージ ポイントの M×2×numImages の配列を指定し、estimateCameraParameters
を使用して、cameraParameters
オブジェクトを作成することもできます。M は各パターンのキーポイント座標の数です。
構文
説明
は、カメラの内部パラメーター、外部パラメーター、およびレンズ歪みパラメーターを含む cameraParams
= cameraParameterscameraParameters
オブジェクトを作成します。
は、名前と値の引数を 1 つ以上使用して cameraParams
= cameraParameters(Name,Value)cameraParameters
オブジェクトのプロパティを設定します。指定していないプロパティは既定値を使用します。
たとえば、cameraParams = cameraParameters("RadialDistortion",[0 10])
は、半径方向のレンズ歪みプロパティ RadialDistortion
をベクトル [0 10]
として設定します。
は、cameraParams
= cameraParameters(paramStruct
)paramStruct
に格納されているパラメーターを使用して既存の cameraParameters
オブジェクトから同一の cameraParameters
オブジェクトを作成します。
プロパティ
内部カメラ パラメーター:
K
— カメラの内部パラメーターの行列
3 行 3 列の行列
カメラの内部パラメーターの行列。3 行 3 列の行列として指定します。行列の形式は次のとおりです。
座標 [cx cy] はピクセル単位の光学的中心 (主点) を表します。x 軸と y 軸が厳密に直交する場合、せん断パラメーター s は 0
に等しくなります。
fx = F*sx
fy = F*sy
F は焦点距離のワールド単位で、通常はミリメートル単位で表されます。 |
[sx, sy] は、それぞれ x と y 方向のワールド単位あたりのピクセル数です。 |
fx と fy はピクセル単位で表されます。 |
Intrinsics
— カメラの内部パラメーター オブジェクト
cameraIntrinsics
オブジェクト
この プロパティ は読み取り専用です。
カメラの内部パラメーター オブジェクト。cameraIntrinsics
として記述されます。オブジェクトには、レンズ歪みパラメーターなどの、カメラの内部キャリブレーション パラメーターに関する情報が格納されます。
依存関係
Intrinsics
プロパティが空にならないように、ImageSize
プロパティを使用してイメージ サイズを指定しなければなりません。カメラの内部パラメーターはイメージ サイズによって異なります。
ImageSize
— イメージ サイズ
2 要素ベクトル
イメージ サイズ。2 要素ベクトル [mrows ncols] として指定します。
カメラのレンズ歪み:
RadialDistortion
— 半径方向歪み係数
[0 0 0]
(既定値) | 2 要素ベクトル | 3 要素ベクトル
半径方向歪み係数。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 |
TangentialDistortion
— 円周方向歪み係数
[0 0]'
(既定値) | 2 要素ベクトル
円周方向歪み係数。2 要素ベクトルとして指定します。円周方向の歪みは、レンズとイメージ平面が平行にならない場合に生じます。カメラ パラメーター オブジェクトは、点の円周方向歪み位置を計算します。歪んだ点は (xdistorted, ydistorted) として表されます。歪み補正後のピクセル位置は、光学的中心を原点とする正規化されたイメージ座標に示されます。この座標はワールド単位で表されます。
円周方向の歪みは、レンズとイメージ平面が平行にならない場合に生じます。円周方向の歪み係数は、このタイプの歪みをモデル化します。
歪んだ点は (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
外部カメラ パラメーター:
PatternExtrinsics
— キャリブレーション パターンの外部パラメーター
[]
(既定値) | rigidtform3d
オブジェクトの P 要素ベクトル
この プロパティ は読み取り専用です。
キャリブレーション パターンの外部パラメーター。rigidtform3d
オブジェクトの P 要素ベクトルとして指定します。各オブジェクトは、3 次元回転行列とカメラの並進ベクトルに関する情報を格納します。
各
rigidtform3d
オブジェクトのR
プロパティは、対応するキャリブレーション パターンに対するカメラ イメージ平面の 3 次元回転を示します。各
rigidtform3d
オブジェクトのTranslation
プロパティは、ワールド単位で表現された、対応するキャリブレーション パターンに対するカメラの並進 t を示します。
次の方程式は、チェッカーボードのフレームのワールド座標 [X Y Z] と対応するイメージ ポイント [x y] を関連付ける変換を行います。
R は 3 次元回転行列です。 |
t は並進ベクトルです。 |
K はカメラの内部パラメーターの行列です。 |
s はスカラーです。 |
undistortImage
を使用します。
RotationVectors
— 3 次元回転ベクトル
[]
(既定値) | P 行 3 列の行列
この プロパティ は読み取り専用です。
3 次元回転ベクトル。P 回転ベクトルを含む P 行 3 列の行列として指定します。各ベクトルは、対応するキャリブレーション パターンに相対的なカメラのイメージ平面の 3 次元回転を示します。ベクトルはカメラが回転する 3 次元軸を指定します。大きさはラジアン単位の回転角度です。PatternExtrinsics
プロパティは、対応する 3 次元回転行列を使用して幾何学的変換オブジェクトを指定します。
推定されたカメラ パラメーターの精度:
MeanReprojectionError
— 平均ユークリッド距離
数値
この プロパティ は読み取り専用です。
再投影された点と検出された点の間の平均ユークリッド距離。ピクセル単位で数値として指定します。
ReprojectionErrors
— 推定されたカメラ パラメーターの精度
[]
(既定値) | M x 2 x P の配列
推定されたカメラ パラメーターの精度。[x y] 座標の M x 2 x P の配列として指定します。[x y] 座標は、再投影されたパターンのキー ポイントと検出されたパターンのキー ポイント間の並進を x および y で表します。このプロパティの値は、推定されたカメラ パラメーターの精度を表します。P は、カメラ パラメーターを推定するパターン イメージの数です。M は各イメージのキーポイントの数です。
ReprojectedPoints
— キャリブレーション イメージに再投影されたワールド ポイント
M x 2 x P の配列
この プロパティ は読み取り専用です。
キャリブレーション イメージに再投影されたワールド ポイント。[x y] 座標の M x 2 x P の配列として指定します。P はパターン イメージの数で、M は各イメージ内のキーポイントの数です。パターンで検出されたキーポイントの欠損点は、[NaN,NaN
] として示されます。
DetectedKeypoints
— キャリブレーション パターン内で検出されたキーポイント
[]
(既定値) | M 行 P 列の配列
キャリブレーション パターン内で検出されたキーポイント。M 行 P 列の logical 配列として指定します。M はキャリブレーション パターン全体のキー ポイントの数で、P はキャリブレーション イメージの数を指定します。
カメラ パラメーター推定の設定:
NumPatterns
— キャリブレーションされたパターンの数
整数
カメラの外部パラメーターを推定するキャリブレーション パターンの数。整数として保存します。キャリブレーション パターンの数は、並進ベクトルと回転ベクトルの数と一致します。
WorldPoints
— ワールド座標
M 行 2 列の配列 | []
キャリブレーション パターンのキー ポイントのワールド座標。M 行 2 列の配列として指定します。M は、パターン内のキー ポイントの数を表します。
WorldUnits
— ワールド ポイント単位
"mm"
(既定値) | 文字ベクトル | string スカラー
ワールド ポイント単位。文字ベクトルまたは string スカラーとして指定します。値は測定単位を示します。
EstimateSkew
— せん断推定フラグ
false
(既定値) | true
せん断推定フラグ。logical スカラーとして指定します。この logical を true
に設定すると、オブジェクトはイメージの座標軸のせん断を推定します。この logical を false
に設定すると、イメージの座標軸は厳密に直交します。
NumRadialDistortionCoefficients
— 半径方向歪み係数の数
2
(既定値) | 3
半径方向歪み係数の数。数値 '2
' または '3
として指定します。
EstimateTangentialDistortion
— 円周方向歪み推定フラグ
false
(既定値) | true
円周方向歪み推定フラグ。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: [0×0 cameraIntrinsics] Camera Extrinsics PatternExtrinsics: [0×1 rigidtform3d] Accuracy of Estimation MeanReprojectionError: NaN ReprojectionErrors: [0×2 double] ReprojectedPoints: [0×2×0 double] Calibration Settings NumPatterns: 0 DetectedKeypoints: [0×2 double] WorldPoints: [0×2 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)")
参照
[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.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
cameraParameters
オブジェクトを生成コードに渡すには、関数toStruct
を使用します。ステレオ ビデオからの深度推定のためのコード生成の例を参照してください。
バージョン履歴
R2014a で導入R2022b: 左から乗算する行列規則をサポート
R2022b 以降、Computer Vision Toolbox™ の多くの関数は、左から乗算する規則を使用して幾何学的変換を作成および実行します。このため、cameraParameters
オブジェクトの一部のプロパティは、左から乗算する規則をサポートするよう変更されました。
新しい
K
プロパティは、古いIntrinsicMatrix
プロパティを置き換えるものです。K
の値は、IntrinsicMatrix
の転置です。新しい
PatternExtrinsics
プロパティは、古いRotationMatrices
プロパティおよびTranslationVectors
プロパティを置き換えるものです。PatternExtrinsics
プロパティに格納されているrigidtform3d
オブジェクトのR
プロパティとTranslation
プロパティをクエリすることにより、回転行列と並進ベクトルにアクセスできます。R
プロパティには、RotationMatrices
で表される回転行列の転置として回転行列が格納されます。
詳細については、Migrate Geometric Transformations to Premultiply Conventionを参照してください。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)