メインコンテンツ

カメラ パラメーター オブジェクトを使用したイメージからの歪みの除去

カメラ キャリブレーション関数を使用してイメージから歪みを除去します。この例では 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]

   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)")

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