主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

estimateCameraParameters

単一カメラまたはステレオカメラをキャリブレーションします。

説明

cameraParamsimagesUsedestimationErrors) = estimateCameraParameters (imagePointsworldPointsは,単一カメラの内部パラメーターと外部パラメーター,および歪み係数を含むcameraParametersオブジェクト,cameraParamsを返します。この関数は,カメラパラメーターの推定に使用されたイメージと,単一カメラのキャリブレーションの標準推定誤差も返します。関数estimateCameraParametersは,外部パラメーターと内部パラメーターを推定します。

stereoParamspairsUsedestimationErrors) = estimateCameraParameters (imagePointsworldPointsは,ステレオカメラのパラメーターを含むstereoParametersオブジェクト,stereoParamsを返します。この関数は,ステレオパラメーターの推定に使用されたイメージと,ステレオカメラのキャリブレーションの標準推定誤差も返します。

cameraParams= estimateCameraParameters (___名称,值は,上記の構文のいずれかを使用して,1つ以上の名称,值引数ペアによって指定されたcameraParamsオブジェクトプロパティを構成します。プロパティが未指定の場合は既定値になります。

すべて折りたたむ

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

图像= imageSet (fullfile (toolboxdir (“愿景”),“visiondata”...“校准”“莫诺”));imageFileNames = images.ImageLocation;

キャリブレーションパターンを検出します。

[imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames); / /检查全局

四角形のコーナーのワールド座標を生成します。

squareSizeInMM = 29;worldPoints = generateCheckerboardPoints (boardSize squareSizeInMM);

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

I = readimage(图片1);imageSize = [size(I, 1),size(I, 2)];params = estimateCameraParameters (imagePoints worldPoints,...“图象尺寸”、图象尺寸);

キャリブレーションの精度を可視化します。

showReprojectionErrors (params);

图中包含一个坐标轴。标题为“每个图像平均重投影误差”的轴包含3个类型为bar, line的对象。这个对象表示总体平均误差:0.18像素。

カメラの外部パラメーターを可視化します。

图;showExtrinsics (params);

图中包含一个坐标轴。标题为“外部参数可视化”的轴包含23个类型为patch、text、line的对象。

drawnow;

検出して再射影された点をプロットします。

图;imshow (imageFileNames {1});持有;情节(imagePoints (:, 1, 1), imagePoints (:, 2, 1),“去”);情节(params.ReprojectedPoints (:, 1, 1), params.ReprojectedPoints (:, 2, 1),' r + ');传奇(“发现点”“ReprojectedPoints”);持有

图中包含一个坐标轴。轴包含三个对象的类型为image, line。这些对象表示检测点,重投影点。

キャリブレーションイメージを指定します。

leftImages = imageDatastore (fullfile (toolboxdir (“愿景”),“visiondata”...“校准”“立体”“左”));rightImages = imageDatastore (fullfile (toolboxdir (“愿景”),“visiondata”...“校准”“立体”“对”));

チェッカーボードを検出します。

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

チェッカーボードキーポイントのワールド座標を指定します。正方形のサイズはミリメートル単位です。

squareSize = 108;worldPoints = generateCheckerboardPoints (boardSize squareSize);

ステレオカメラシステムをキャリブレーションします。両方のカメラの解像度は同じです。

I = readimage (leftImages, 1);图象尺寸=[(我,1),大小(我,2)];params = estimateCameraParameters (imagePoints worldPoints,...“图象尺寸”、图象尺寸);

キャリブレーションの精度を可視化します。

showReprojectionErrors (params);

图中包含一个坐标轴。标题为“每个图像平均重投影误差”的轴包含5个类型为bar, line的对象。这些对象代表相机1,相机2,总体平均误差:0.06像素。

カメラの外部パラメーターを可視化します。

图;showExtrinsics (params);

图中包含一个坐标轴。标题为“外部参数可视化”的轴包含28个类型为patch, text, line的对象。

入力引数

すべて折りたたむ

キャリブレーションパターンのキーポイント。[x,y]内部パラメーター イメージ座標の配列として指定します。

キャリブレーション (x, y)キーポイントの入力配列
単一カメラ

点(x, y)のM x 2 x numImagesの配列。

  • イメージ数numImagesは2以上でなければなりません。

  • 各パターンのキーポイント座標の数を示すMは3より大きくなければなりません。

部分検出パターンは,単一カメラのキャリブレーションでのみサポートされます。部分検出パターンを推定に含めるには,欠損キーポイントのx - y座標として[南南]を使用します。

ステレオカメラ

点(x, y)のM x 2 x numPairs x 2の配列。

  • numPairsは,キャリブレーションパターンを含むステレオイメージのペアの数です。

  • 各パターンのキーポイント座標の数を示すMは3より大きくなければなりません。

  • imagePoints::,: 11)はカメラの点です。

  • imagePoints::,: 22)はカメラの点です。

データ型:|

ワールド座標のキャリブレーションパターンのキーポイント。M個の(x, y)ワールド座標のM行2列の配列として指定します。パターンは平面でなければならないため,z座標はゼロになります。

データ型:|

名前と値のペアの引数

オプションの引数名称,值のコンマ区切りペアを指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を,任意の順番で指定できます。

例:“WorldUnits”“毫米”は,ワールド座標点の単位をミリメートルに設定します。

ワールド座標点単位。“WorldUnits”と,文字ベクトルまたは字符串スカラーで構成されるコンマ区切りのペアとして指定します。

せん断推定。“EstimateSkew”と逻辑スカラーで構成されるコンマ区切りのペアとして指定します。このプロパティを真正的に設定すると,関数はイメージの座標軸のせん断を推定します。に設定すると,イメージの座標軸が厳密に直行し,関数はせん断をゼロに設定します。

推定する半径方向歪み係数の数。“NumRadialDistortionCoefficients”と値2または3.で構成されるコンマ区切りのペアとして指定します。半径方向の歪みは,レンズの光学的中心からエッジに向かうにつれて光線の屈折率が大きくなる現象を指しています。この歪みはレンズが小さいほど大きくなります。

半径方向の歪み係数は,このタイプの歪みをモデル化します。歪んだ点は(x扭曲的y扭曲的)として次のように表されます。

x扭曲的= x(1 + k1* r2+ k2* r4+ k3.* r6

y扭曲的= y(1 + k1* r2+ k2* r4+ k3.* r6

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

  • k1k2およびk3.——レンズの半径方向の歪み係数。

  • r2: x2+ y2

一般に,キャリブレーションを行うには2つの係数で十分です。広角レンズなどの歪みが大きい場合には,3つの係数を選択してk3.を含めることができます。

円周方向歪みフラグ。“EstimateTangentialDistortion”と逻辑スカラーで構成されるコンマ区切りのペアとして指定します。このプロパティを真正的に設定すると,関数は円周方向の歪みを推定します。に設定すると,円周方向の歪みを無視できます。

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

歪んだ点は(x扭曲的y扭曲的)として次のように表されます。

x扭曲的= x + [2 * p1* x * y + p2*(右2+ 2 * x2)]

y扭曲的= y + p1*(右2+ 2 * y2) + 2 * p2* x * y

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

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

  • r2: x2+ y2

カメラの内部パラメーターの初期推定。“InitialIntrinsicMatrix”と3行3列の行列で構成されるコンマ区切りのペアとして指定します。初期値を指定しない場合,関数は線形最小二乗法を使用して内部パラメーターの初期行列を計算します。

半径方向歪み係数の初期推定。“InitialRadialDistortion”と2要素または3要素のベクトルで構成されるコンマ区切りのペアとして指定します。初期値を指定しない場合,関数はすべての係数の初期値に0を使用します。

カメラによって生成されるイメージのサイズ。”图象尺寸“と1行2列のベクトル[mrows ncols]で構成されるコンマ区切りのペアとして指定します。

出力引数

すべて折りたたむ

カメラパラメーター。cameraParametersオブジェクトとして返されます。

カメラパラメーターの推定に使用するイメージ。P行1列の逻辑配列として返されます。P はイメージの数に対応します。配列は、カメラ パラメーターの推定に使用されたイメージを示します。配列内の logical真正的は,カメラパラメーターの推定に使用されたイメージを示します。

関数は,ワールド座標点と各イメージで検出された点の間のホモグラフィを計算します。イメージのホモグラフィの計算が失敗すると,関数は警告を発行します。このイメージの点はカメラパラメーターの推定に使用されません。関数はさらに,imagesUsedの対応する要素をに設定します。

推定されたパラメーターの標準誤差。cameraCalibrationErrorsオブジェクトまたはstereoCalibrationErrorsオブジェクトとして返されます。

ステレオシステムのカメラパラメーター。stereoParametersオブジェクトとして返されます。このオブジェクトには,ステレオカメラシステムの内部パラメーター,外部パラメーターおよびレンズ歪みパラメーターが含まれます。

カメラパラメーターの推定に使用されたイメージのペア。P行1列の逻辑配列として返されます。P はイメージのペアの数に対応します。配列内の logical真正的の値は,カメラパラメーターの推定に使用されたイメージのペアを示します。

アルゴリズム

すべて折りたたむ

キャリブレーションのアルゴリズム

カメラキャリブレーターアプリは95度の視野(FOV)までカメラと一緒に使用することができます。

キャリブレーションのアルゴリズムでは,次のピンホールカメラモデルを想定しています。

w x y 1 X Y Z 1 R t K

(X, Y, Z):点のワールド座標
(x, y):対応するイメージ点の座標
w:任意のスケール係数
凯西:カメラの内部パラメーターの行列
接待员:カメラの3次元回転を表す行列
t:ワールド座標系に対するカメラの並進

カメラのキャリブレーションでは,内部パラメーター,外部パラメーターおよび歪み係数の値を推定します。カメラのキャリブレーションには次の2つの手順が含まれます。

  1. レンズ歪みをゼロと仮定して,内部パラメーターおよび外部パラメーターについて閉形式で解きます。[1]

  2. 非線形最小二乗の最小化(レーベンバーグ・マルカートアルゴリズム)を使用して,歪み係数を含むすべてのパラメーターを同時に推定します。前の手順で求めた閉形式の解を,内部パラメーターと外部パラメーターの初期推定値として使用します。その後,歪み係数の初期推定値をゼロに設定します。[1][2]

参照

[1] Zhang, Z.“一种灵活的摄像机标定新技术”。模式分析与机器智能学报。22, No. 11, 2000, pp. 1330-1334。

Heikkila, J, and O. Silven。“一种基于隐式图像校正的四步摄像机标定方法”,计算机视觉与模式识别,1997。

[3] bouuet, J.Y.,“用于Matlab的摄像机校准工具箱”,加州理工学院计算视觉。用于MATLAB的摄像机校准工具箱

G. Bradski和A. Kaehler。学习OpenCV:使用OpenCV库的计算机视觉。加州塞瓦斯托波尔:奥莱利,2008。

R2014bで導入