주요 콘텐츠

카메라 파라미터 객체를 사용하여 영상에서 왜곡 제거하기

카메라 보정 함수를 사용하여 영상에서 왜곡을 제거할 수 있습니다. 이 예제에서는 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.