文档

cameraParameters

对象存储的相机参数

描述

cameraParameters对象存储内在、外在、摄像机和镜头畸变参数。

创建

您可以创建一个cameraParameters对象使用cameraParameters这里描述的函数。您还可以创建一个cameraParameters通过使用对象estimateCameraParameters与一个2 -numImages数组的输入图像点。是关键点坐标的数量在每个模式。

描述

cameraParams = cameraParameters创建一个cameraParameters对象包含了内在、外在和摄像机镜头畸变参数。

例子

cameraParams = cameraParameters(名称、值)属性cameraParameters通过使用一个或多个对象名称,值对参数。未指定的属性使用默认值。

cameraParams = cameraParameters (paramStruct)创建一个相同的cameraParameters从现有对象cameraParameters存储在对象参数paramStruct

输入参数

全部展开

立体参数,指定为一个立体结构参数。得到一个paramStruct从现有的cameraParameters对象,使用toStruct函数。

属性

全部展开

内在的相机参数:

投影矩阵,指定为3 x3的单位矩阵。矩阵格式的对象使用以下格式:

( f x 0 0 年代 f y 0 c x c y 1 ]

坐标(cxcy)代表了光学中心(主点),以像素为单位。当xy轴是垂直的,斜参数,年代,等于0

fx=F*年代x
fy=F*年代y
F,是世界的焦距单位,通常用毫米表示的。
(年代x,年代y)每个世界单位像素的数量xy方向分别。
外汇财政年度是用像素表示。

这个属性是只读的。

相机intrinsic对象,作为一个cameraIntrinsics对象。对象包含有关相机固有校准参数,包括透镜畸变。

依赖

你必须提供一个图像大小(使用图象尺寸财产)intrinsic非空属性。相机参数的intrinsic取决于图像大小。

图像大小,指定为一个双元素向量(mrows,ncols]。

镜头畸变:

径向畸变系数,指定为一个两到三元素向量。当你指定一个双元素向量,第三元素对象集0。径向畸变时光线弯曲透镜边缘附近的比他们做的光学中心。镜头越小,失真越大。相机参数对象计算径向扭曲一个点的位置。你可以表示扭曲点(x扭曲的,y扭曲的),如下:

x扭曲的=x(1 +k1*r2+k2*r4+k3*r6)

y扭曲的=y(1 +k1*r2+k2*r4+k3*r6)

x,y=不偏激的像素位置
k1,k2,k3=镜头的径向畸变系数
r2=x2+y2。通常
,两个系数是充分的。对于严重失真,可以包括k 3。无畸变的像素位置出现在归一化图像坐标,光学中心的起源。世界表达的坐标单位。

切向畸变系数,指定为一个双元素向量。切向畸变发生在镜头和图像平面不平行。相机参数对象计算一个点的切向变形位置。你可以表示扭曲点(x扭曲的,y扭曲的)。无畸变的像素位置出现在归一化图像坐标,光学中心的起源。世界表达的坐标单位。

切向畸变发生在镜头和图像平面不平行。这种类型的失真的切向畸变系数模型。

扭曲的点表示为(x扭曲的,y扭曲的):

x扭曲的=x+ (2 *p1*x*y+p2* (r2+ 2 *x2)]

y扭曲的=y+ (p1* (r2+ 2 *y2)+ 2 *p2*x*y]

  • x,y——无畸变的像素位置。xy在归一化图像坐标。归一化图像像素坐标的坐标计算翻译焦距的光学中心和除以像素。因此,xy是无量纲。

  • p1p2-切向畸变系数的镜头。

  • r2:x2+y2

外在的相机参数:

三维旋转矩阵,指定为3-by-3-by -P,P数量的图像模式。每个3 x3的矩阵表示的三维旋转对应的向量。

以下方程提供了转换,涉及一个棋盘的世界坐标框架(XYZ和对应的像点xy]:

年代 ( x y 1 ] = ( X Y Z 1 ] ( R t ] K

R三维旋转矩阵。
t是翻译向量。
KIntrinsicMatrix
年代是一个标量。
这个方程不考虑畸变。的undistortImage函数删除失真。

三维旋转向量,作为指定P3矩阵包含P旋转向量。每个向量描述了三维旋转的摄像机图像平面相对于相应的校准模式。向量指定摄像机的三维轴旋转,旋转角的大小是弧度的地方。的RotationMatrices属性提供了相应的三维旋转矩阵。

相机翻译,作为指定P3矩阵。这个矩阵包含翻译向量P图像。向量包含估计校准参数校准模式。矩阵的每一行包含一个向量来描述相机的翻译相对于对应的模式,表现在世界单位。

以下方程提供了转换,涉及一个棋盘的世界坐标框架(XYZ和对应的像点xy]:

年代 ( x y 1 ] = ( X Y Z 1 ] ( R t ] K

R三维旋转矩阵。
t是翻译向量。
KIntrinsicMatrix
年代是一个标量。
这个方程不考虑畸变。的undistortImage函数删除失真。

确保旋转向量的个数等于翻译向量的个数,设置RotationVectorsTranslationVectors属性在构造函数中。设置只有一个属性而不是其他会导致错误。

估计相机参数的准确性:

平均欧氏距离reprojected和探测点,指定为像素的数值。

相机参数估计精度,指定为一个2 -P数组的xy)坐标。(xy)坐标表示的翻译xyreprojected模式要点和重点检测模式。这个属性的值表示相机参数估计的准确性。P是模式图像的数量估计相机参数。在每个图像关键点的数量。

世界分reprojected到标定图像,作为指定2 -P数组的xy)坐标。P模式图片和数量吗在每个图像关键点的数量。

设置相机参数估计:

许多校准模式估计相机外在,指定为一个整数。校准模式的数量等于平移和旋转向量的个数。

世界上关键点的坐标校准模式,指定为一个2数组。代表模式中的关键点的数量。

世界分单位,指定为一个特征向量或字符串标量。描述了测量的单位价值。

估计斜国旗,指定为一个逻辑标量。当你设定的逻辑真正的,对象估计图像轴倾斜。当你设定的逻辑,图像轴是垂直的。

径向畸变系数,指定数量的2”或“3”。

估计切向畸变国旗,指定为逻辑标量真正的。当你设定的逻辑真正的对象估计,切向畸变。当你设定的逻辑切向畸变是微不足道的。

对象的功能

pointsToWorld 确定图像点的世界坐标
toStruct 相机参数对象转换成一个结构体
worldToImage 项目世界点为图像

例子

全部折叠

使用相机校正函数来去除图像失真。这个示例创建了一个vision.cameraParameters手动对象,但在实践中,您将使用estimateCameraParameters或相机校准器应用获得的对象。

创建一个vision.cameraParameters手动对象。

IntrinsicMatrix = (715.2699 0 0;711.5281 0 0;565.6995 - 355.3466 1);radialDistortion = (-0.3361 - 0.0921);cameraParams = cameraParameters (“IntrinsicMatrix”IntrinsicMatrix,“RadialDistortion”,radialDistortion);

消除畸变的图像。

我= imread (fullfile (matlabroot,“工具箱”,“愿景”,“visiondata”,“校准”,“莫诺”,“image01.jpg”));J = undistortImage(我cameraParams);

显示原始图像和无畸变的图像。

图;imshowpair (imresize(0.5),我imresize (J, 0.5),“蒙太奇”);标题(“原始图像(左)与校正图像(右));

引用

[1],z“灵活的摄像机标定新技术”。IEEE模式分析与机器智能,11日,第22卷,第1334 - 1330页,2000年。

[2]么,J, o . Silven。“四步相机校正过程隐含的图像校正”,IEEE国际会议在计算机视觉和模式识别,1997年。

扩展功能

介绍了R2014a