cameraParameters
Object for storing camera parameters
Description
The cameraParameters
object stores the intrinsic, extrinsic,
and lens distortion parameters of a camera.
Creation
You can create a cameraParameters
object using the
cameraParameters
function described here. You can also create a
cameraParameters
object by using the estimateCameraParameters
with an
M-by-2-by-numImages array of input image
points. M is the number of keypoint coordinates in each
pattern.
Syntax
Description
creates a cameraParams
= cameraParameterscameraParameters
object that contains the intrinsic,
extrinsic, and lens distortion parameters of a camera.
sets properties of
the cameraParams
= cameraParameters(Name,Value)cameraParameters
object by using one or more name-value
arguments. Unspecified properties use default values.
For example, cameraParams = cameraParameters("RadialDistortion",[0
10])
sets the radial lens distortion property,
RadialDistortion
, as the vector [0
10]
.
creates an identical cameraParams
= cameraParameters(paramStruct
)cameraParameters
object from an existing
cameraParameters
object with parameters stored in
paramStruct
.
Input Arguments
paramStruct
— Camera parameters
structure
Camera parameters, specified as a camera parameters structure. To get
a paramStruct
from an existing
cameraParameters
object, use the toStruct
function.
Properties
Intrinsic Camera Parameters:
K
— Camera intrinsic matrix
3-by-3 matrix
Camera intrinsic matrix, specified as a 3-by-3 matrix. The matrix has this format:
The coordinates [cx
cy] represent the optical center (the principal
point), in pixels. When the x- and y-axes are exactly
perpendicular, the skew parameter s equals 0
.
fx = F*sx
fy = F*sy
F is the focal length in world units, typically expressed in millimeters.
sx and sy are the number of pixels per world unit in the x- and y-direction respectively.
fx and fy are expressed in pixels.
Intrinsics
— Camera intrinsics object
cameraIntrinsics
object
This property is read-only.
Camera intrinsics object, stated as a cameraIntrinsics
object. The
object contains information about camera intrinsic calibration parameters,
including lens distortion.
Dependency
You must provide an image size (using the
ImageSize
property) for the
Intrinsics
property to be non-empty. The
intrinsics for the camera parameters depends on the image size.
ImageSize
— Image size
two-element vector
Image size, specified as a two-element vector [mrows ncols].
Camera Lens Distortion:
RadialDistortion
— Radial distortion coefficients
[0 0]
(default) | 2-element vector | 3-element vector | 6-element vector
Radial lens distortion coefficients, specified as a 2-, 3-, or 6-element vector.
2-element vector — [k1 k2].
3-element vector — [k1 k2 k3].
6-element vector — [k1 k2 k3 k4 k5 k6].
The camera parameters object calculates the radial-distorted location of a point, denoted as (xdistorted, ydistorted):
x, y is a undistorted image point in normalized image coordinates in world units, with the origin at the optical center. |
r2 = x2 + y2 |
k1, k2, …, k6 are radial distortion coefficients of the lens. Typically, two coefficients are sufficient and k3, …, k6 are only needed for wide-angle lenses. |
TangentialDistortion
— Tangential distortion coefficients
[0 0]'
(default) | 2-element vector
Tangential distortion coefficients, specified as a two-element vector. Tangential distortion occurs when the lens and the image plane are not parallel. The camera parameters object calculates the tangential distorted location of a point. You can denote the distorted points as (xdistorted, ydistorted). The undistorted pixel locations appear in normalized image coordinates, with the origin at the optical center. The coordinates are expressed in world units.
Tangential distortion occurs when the lens and the image plane are not parallel. The tangential distortion coefficients model this type of distortion.
The distorted points are denoted as (xdistorted, ydistorted):
xdistorted = x + [2 * p1 * x * y + p2 * (r2 + 2 * x2)]
ydistorted = y + [p1 * (r2 + 2 *y2) + 2 * p2 * x * y]
x, y — Undistorted pixel locations. x and y are in normalized image coordinates. Normalized image coordinates are calculated from pixel coordinates by translating to the optical center and dividing by the focal length in pixels. Thus, x and y are dimensionless.
p1 and p2 — Tangential distortion coefficients of the lens.
r2 = x2 + y2
Extrinsic Camera Parameters:
PatternExtrinsics
— Calibration pattern extrinsics
[]
(default) | P-element vector of rigidtform3d
objects
This property is read-only.
Calibration pattern extrinsics, specified as a
P-element vector of rigidtform3d
objects. Each object stores information about the
3-D rotation matrices and the camera translation vectors.
The
R
property of eachrigidtform3d
object describes the 3-D rotation of the camera image plane relative to the corresponding calibration pattern.The
Translation
property of eachrigidtform3d
object describes the translation t of the camera relative to the corresponding calibration pattern, expressed in world units.
This equation provides the transformation that relates a world coordinate in the checkerboard frame [X Y Z] and the corresponding image point [x y]:
w: arbitrary scale factor
K: camera intrinsic matrix
R: matrix representing the 3-D rotation of the camera
t: translation of the camera relative to the world coordinate system
The rigid geometric transformations do not take distortion
into consideration. Use the undistortImage
function to
remove distortion.
RotationVectors
— 3-D rotation vectors
[]
(default) | P-by-3 matrix
This property is read-only.
3-D rotation vectors, specified as a P-by-3 matrix
containing P rotation vectors. Each vector describes the
3-D rotation of the camera image plane relative to the corresponding
calibration pattern. The vector specifies the 3-D axis about which the
camera is rotated, where the magnitude is the rotation angle in radians. The
PatternExtrinsics
property specifies geometric
transformation objects with the corresponding 3-D rotation matrices.
Estimated Camera Parameter Accuracy:
MeanReprojectionError
— Average Euclidean distance
numeric value
This property is read-only.
Average Euclidean distance between reprojected and detected points, specified as a numeric value in pixels.
ReprojectionErrors
— Estimated camera parameters accuracy
[]
(default) | M-by-2-by-P array
Estimated camera parameters accuracy, specified as an M-by-2-by-P array of [x y] coordinates. The [x y] coordinates represent the translation in x and y between the reprojected pattern key points and the detected pattern key points. The values of this property represent the accuracy of the estimated camera parameters. P is the number of pattern images that estimates camera parameters. M is the number of keypoints in each image.
ReprojectedPoints
— World points reprojected onto calibration images
M-by-2-by-P array
This property is read-only.
World points reprojected onto calibration images, specified as an
M-by-2-by-P array of
[x
y] coordinates. P is the number of
pattern images and M is the number of keypoints in each
image. Missing points in the pattern's detected keypoints are denoted as
[NaN,NaN
].
DetectedKeypoints
— Detected keypoints in the calibration pattern
[]
(default) | M-by-P array
Detected keypoints in the calibration pattern, specified as a logical M-by-P array. M is the number of keypoints in the entire calibration pattern and P specifies the number of calibration images.
Settings for Camera Parameter Estimation:
NumPatterns
— Number of calibrated patterns
integer
Number of calibration patterns that estimates camera extrinsics, specified as an integer. The number of calibration patterns equals the number of translation and rotation vectors.
WorldPoints
— World coordinates
M-by-2 array | []
World coordinates of key points on calibration pattern, specified as an M-by-2 array. M represents the number of key points in the pattern.
WorldUnits
— World points units
"mm"
(default) | character vector | string scalar
World points units, specified as a character vector or string scalar. The value describes the units of measure.
EstimateSkew
— Estimate skew flag
false
(default) | true
Estimate skew flag, specified as a logical scalar. When you set the
logical to true
, the object estimates the image axes
skew. When you set the logical to false
, the image axes
are exactly perpendicular.
NumRadialDistortionCoefficients
— Number of radial distortion coefficients
2
(default) | 3
| 6
Number of radial distortion coefficients, specified as the number
2
, 3
, or
6
.
EstimateTangentialDistortion
— Estimate tangential distortion flag
false
(default) | true
Estimate tangential distortion flag, specified as the logical scalar
true
or false
. When you set the
logical to true
, the object estimates the tangential
distortion. When you set the logical to false
, the
tangential distortion is negligible.
Examples
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: [0x0 cameraIntrinsics] Camera Extrinsics PatternExtrinsics: [0x1 rigidtform3d] Accuracy of Estimation MeanReprojectionError: NaN ReprojectionErrors: [0x2 double] Calibration Settings NumPatterns: 0 DetectedKeypoints: [0x2 double] WorldPoints: [0x2 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)")
References
[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.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
Use the
toStruct
function to pass acameraParameters
object into generated code. See the Code Generation for Depth Estimation from Stereo Video example.
Version History
Introduced in R2014aR2024b: Import OpenCV pinhole camera model with six radial distortion coefficients
The cameraParameters
has been updated to support OpenCV pinhole camera
model with 6 radial distortion coefficients.
R2022b: Supports premultiply matrix convention
Starting in R2022b, many Computer Vision Toolbox™ functions create and perform geometric transformations using the
premultiply convention. Accordingly, some properties of the
cameraParameters
object have changed to support the premultiply
convention.
The new
K
property replaces the oldIntrinsicMatrix
property. The value ofK
is the transpose ofIntrinsicMatrix
.The new
PatternExtrinsics
property replaces the oldRotationMatrices
andTranslationVectors
properties. You can access the rotation matrices and translation vectors by querying theR
andTranslation
properties of therigidtform3d
objects stored in thePatternExtrinsics
property. TheR
property stores a rotation matrix as the transpose of the rotation matrix represented byRotationMatrices
.
For more information, see Migrate Geometric Transformations to Premultiply Convention.
See Also
Apps
Classes
stereoParameters
|cameraCalibrationErrors
|intrinsicsEstimationErrors
|extrinsicsEstimationErrors
|cameraIntrinsics
Functions
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)