Description(描述)
cameraParameters对象用于存储相机的内参、外参和镜头畸变参数。
Creation(创建)
您可以使用此处描述的cameraParameters函数创建一个cameraParameters对象。您还可以使用estimateCameraParameters函数和一个大小为M-by-2-by-numImages的输入图像点的数组来创建cameraParameters对象。其中,M是每个图案中关键点坐标的数量
Syntax
cameraParameters对象的三种构造方式:
直接使用无参构造函数创建cameraParameters对象,如:
cameraParams = cameraParameters
。使用带有Name-Value参数的构造函数创建cameraParameters对象,可以通过指定不同的参数值来设置cameraParameters对象的属性值,如:
cameraParams = cameraParameters('IntrinsicMatrix', K, 'RadialDistortion', D)
。使用paramStruct参数结构体创建cameraParameters对象,其中,paramStruct结构体中的字段名对应于cameraParameters对象的属性名,字段值对应于属性值,如:
cameraParams = cameraParameters(struct('IntrinsicMatrix', K, 'RadialDistortion', D))
。
Input Arguments
paramStruct
— Camera parameters"paramStruct"是一个变量名,通常用于存储摄像机参数的结构体。在Matlab中,结构体是一种数据类型,可以存储不同类型的数据,并且可以通过字段名来访问这些数据。在这里,paramStruct结构体用于存储摄像机的内参、外参和镜头畸变参数,并将其作为参数传递给cameraParameters函数,从而创建一个cameraParameters对象。
stereo参数是一个包含左右摄像机内参、外参、基线和图像尺寸等信息的结构体。如果要从现有的cameraParameters对象中获取paramStruct结构体,可以使用toStruct函数。在Matlab中,toStruct函数用于将一个cameraParameters对象转换为一个结构体,其中包含该对象的所有属性和值。
Properties
Intrinsic Camera Parameters(相机内参参数):
IntrinsicMatrix
"IntrinsicMatrix"是cameraParameters对象的一个属性,表示相机的投影矩阵或内参矩阵,是一个3x3的矩阵。
Projection Matrix是cameraParameters对象的一个属性,表示相机的投影矩阵或内参矩阵。在Matlab中,默认情况下,相机的投影矩阵的格式为:
|fx 0 cx|
|s fy cy|
|0 0 1 |
其中fx和fy表示相机的焦距,cx和cy表示相机光心在像素坐标系中的坐标,s表示图像的非正交性(通常为0)。
偏斜参数(s)表示图像平面的x轴和y轴之间的任何偏斜或非正交性。当x轴和y轴完全垂直时,偏斜参数s等于0。
fx = F*sx fy = F*sy
F是世界单位中的焦距,通常以毫米表示。[sx,sy]分别表示x和y方向上每个世界单位中的像素数。fx和fy以像素为单位表示。
Intrinsics
cameraIntrinsics
object
该属性是一个 cameraIntrinsics 对象,包含了相机内部标定参数和镜头畸变等相关信息。
依赖关系 要使Intrinsics属性不为空,您必须提供图像大小(使用ImageSize属性)。相机参数的内部参数取决于图像大小。
ImageSize
— Image size
two-elment vector
ImageSize是一个由两个元素组成的向量,表示图像的大小,第一个元素是图像的行数(mrows),第二个元素是图像的列数(ncols)。
Camera Lens Distortion(相机畸变):
RadialDistortion
— Radial distortion coefficients(径向畸变 — 径向畸变系数)
[0 0 0](默认)|2 元素矢量 |3 元素向量
径向畸变系数,可以指定为两个或三个元素的向量。当指定一个两个元素的向量时,对象会将第三个元素设置为0。径向畸变发生在光线在镜头边缘的弯曲程度比在其光学中心处更弯曲时。镜头越小,畸变越大。摄像机参数对象计算点的径向畸变位置。您可以将畸变点表示为(xdistorted, ydistorted),如下所示:
xdistorted = x(1 + k1*r2 + k2*r4 + k3*r6)
ydistorted= y(1 + k1*r2 + k2*r4 + k3*r6)
x, y = undistorted pixel locations(未经畸变的像素位置) |
k1, k2, and k3 = radial distortion coefficients of the lens(该摄像机镜头的径向畸变系数) |
r2 = x2 + y2 |
通常情况下,只需要两个系数就足够了。对于严重的畸变,可以包括 k3。无畸变像素位置以规范化的图像坐标形式呈现,原点位于光学中心。这些坐标用世界单位表示。
TangentialDistortion
— Tangential distortion coefficients (切向畸变 — 切向畸变系数)
切向畸变系数,以两个元素的向量形式指定。当镜头和图像平面不平行时,会出现切向畸变。摄像机参数对象计算点的切向畸变位置。你可以将畸变点表示为 (xdistorted, ydistorted)。无畸变像素位置以标准化图像坐标形式显示,以光学中心为原点,坐标以世界单位表示。
切向畸变发生在镜头和图像平面不平行的情况下。切向畸变系数用于建模这种类型的畸变。
偏斜畸变系数,由两个元素的向量指定。偏斜畸变发生在镜头和图像平面不平行的情况下。相机参数对象计算点的偏斜畸变位置。你可以将畸变点表示为(x_distorted, y_distorted)。无畸变的像素位置以规格化图像坐标出现,原点位于光学中心。坐标以世界单位表示。
在计算偏斜畸变的位置时,用以下公式表示畸变的点(x_distorted, y_distorted):
xdistorted = x + [2 * p1 * x * y + p2 * (r2 + 2 * x2)]
ydistorted = y + [p1 * (r2 + 2 *y2) + 2 * p2 * x * y]
其中,
x和y——无畸变的像素位置。x和y以标准化的图像坐标表示。标准化图像坐标通过将像素坐标平移到光学中心并将其除以像素焦距来计算。因此,x和y是无量纲的。
p1和p2——镜头的偏斜畸变系数。
r2 = x2 + y2
Extrinsic Camera Parameters(外参):
RotationMatrices
— 3-D rotation matrix
3维旋转矩阵,以3 x 3 x P的形式指定,其中P是图案图像的数量。每个3 x 3的矩阵表示与相应向量相同的3维旋转。
以下方程式提供了将棋盘格坐标系[X Y Z]中的世界坐标与相应图像点[x y]相关联的变换:
R是3维旋转矩阵。 t是平移向量。 K是内部矩阵。 s是一个标量。 该方程式不考虑失真。函数undistortImage可以去除失真。
RotationVectors
— 3-D rotation vectors
3-D旋转向量,指定为包含P个旋转向量的P×3矩阵。每个向量描述相机图像平面相对于对应的校准模式的3-D旋转。向量指定相机旋转的3-D轴,其大小是以弧度为单位的旋转角度。RotationMatrices属性提供了相应的3-D旋转矩阵。
TranslationVectors
— Camera translations
摄像机平移向量,指定为一个 P×3 的矩阵。该矩阵包含 P 张图像的平移向量,每个向量都包含估算标定参数的标定板信息。矩阵的每一行都包含一个向量,用于描述摄像机相对于对应标定板的平移,以世界单位表示。
Estimated Camera Parameter Accuracy(估计相机参数精度):
MeanReprojectionError — Average Euclidean distance
(平均重新投影误差 — 平均欧几里得距离)
重新投影点和检测到的点之间的平均欧氏距离,以像素为单位指定为数值。
ReprojectionErrors — Estimated camera parameters accuracy
(重新投影误差— 估计的相机参数精度)
估计的相机参数准确性,指定为 [x y] 坐标的 M-by-2-by-P 数组。[x y] 坐标表示重投影的图案关键点和检测到的图案关键点之间在 x 和 y 方向上的平移。此属性的值表示估计的相机参数的准确性。P 是估计相机参数的图案图像数量,M 是每个图像中的关键点数。
ReprojectedPoints
— World points reprojected onto calibration images
(重新投影点 — 重新投影到标定图像上的世界点)
World points reprojected onto calibration images指的是将世界坐标系中的点投影到标定图像上得到的点的坐标,是一个M-by-2-by-P的数组,其中P表示标定图像的数量,M表示每个图像上的关键点数。如果某个图像中的关键点未被检测到,则对应的点用[NaN,NaN]表示。
DetectedKeypoints
— Detected keypoints in the calibration pattern
(检测到的关键点 — 校准模式中检测到的关键点)
检测到的标定板关键点,指定为逻辑M×P数组。其中,M是整个标定板上的关键点数,P指定了标定图像的数量。
Settings for Camera Parameter Estimation(相机参数估计的设置):
NumPatterns
— Number of calibrated patterns
用于估计相机外参的标定板数量,指定为整数。标定板的数量等于平移向量和旋转向量的数量。
WorldPoints
— World coordinates
WorldPoints表示标定板上关键点的世界坐标,是一个M-by-2的矩阵,其中M是标定板上关键点的数量。
WorldUnits
— World points units
World points units指的是世界坐标系下的长度单位,可以是任何字符向量或字符串标量,用于描述其度量单位,例如'millimeters'或'meters'。
EstimateSkew — Estimate skew flag
Estimate skew flag,是一个逻辑标量,当设置为 true 时,对象会尝试估计图像轴的倾斜,而当设置为 false 时,图像轴将被设为垂直。
NumRadialDistortionCoefficients指定径向畸变系数的数量。
Number of radial distortion coefficients, 指定为数字 '2' 或 '3'。
EstimateTangentialDistortion
— Estimate tangential distortion flag
Estimate tangential distortion flag, 指定为逻辑标量。当将逻辑设置为 true 时,对象将估计图像的切向畸变。当将逻辑设置为 false 时,图像的切向畸变被假定为零。