Remove Distortion from an Image Using Camera Parameters Object
Use the camera calibration functions to remove distortion from an image. This example creates a cameraParameters object manually, but in practice, you would use the estimateCameraParameters or the Camera Calibrator app to derive the object.
Create a cameraParameters object manually.
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
Remove distortion from the images.
I = imread(fullfile(matlabroot,"toolbox","vision","visiondata","calibration","mono","image01.jpg")); J = undistortImage(I,cameraParams);
Display the original and the undistorted images.
montage({I,J})
title("Original Image (left) vs. Corrected Image (right)")