estimateCameraParameters

校准单个或立体摄像机

描述

[cameraParamsimagesUsedestimationErrors] = estimateCameraParameters(imagePointsworldPoints回报cameraParams, 一个cameraParameters对象包含用于内部和外部参数和单个照相机的失真系数的估计。该功能也将返回用于估计相机参数和标准估计误差为单摄像机标定图像。

[stereoParamspairsUsedestimationErrors] = estimateCameraParameters(imagePointsworldPoints回报stereoParams, 一个stereoParameters对象包含立体相机的参数。该功能也将返回用于估计立体声参数和标准估计误差为立体摄像机标定图像。

cameraParams= estimateCameraParameters(___名称,值配置cameraParams由一个或多个指定的对象的属性名称,值配对参数,使用任何前述语法。未指定的属性都有其默认值。

例子

全部收缩

创建一组校正图像。

图像= imageSet(完整文件(toolboxdir('视力''visiondata'...'校准''单核细胞增多症'));imageFileNames = images.ImageLocation;

检测校准模式。

[imagePoints,boardSize] = detectCheckerboardPoints(imageFileNames);

产生正方形的四角的世界坐标。

squareSizeInMM = 29;worldPoints = generateCheckerboardPoints(boardSize,squareSizeInMM);

校准相机。

I = readimage(图像,1);IMAGESIZE = [大小(I,1),大小(I,2)];PARAMS = estimateCameraParameters(imagePoints,worldPoints,...'图片尺寸',图片尺寸);

可视化的校准精度。

showReprojectionErrors(PARAMS);

可视化相机外部参数。

数字;showExtrinsics(PARAMS);

的DrawNow;

情节检测和重新投影点。

数字;imshow(imageFileNames {1});保持;图(imagePoints(:,1,1),imagePoints(:,2,1),'走');图(params.ReprojectedPoints(:,1,1),params.ReprojectedPoints(:,2,1),'R +');传说(“检测点”'ReprojectedPoints');保持;

指定校正图像。

leftImages = imageDatastore(完整文件(toolboxdir('视力''visiondata'...'校准''立体声''剩下'));rightImages = imageDatastore(完整文件(toolboxdir('视力''visiondata'...'校准''立体声''对'));

检测棋盘。

[imagePoints,boardSize] =...detectCheckerboardPoints(leftImages.Files,rightImages.Files);

指定棋盘的关键点的世界坐标。广场的大小是毫米。

squareSize = 108;worldPoints = generateCheckerboardPoints(boardSize,squareSize);

校准立体摄像系统。这两款相机具有相同的分辨率。

I = readimage(leftImages,1);IMAGESIZE = [大小(I,1),大小(I,2)];PARAMS = estimateCameraParameters(imagePoints,worldPoints,...'图片尺寸',图片尺寸);

可视化的校准精度。

showReprojectionErrors(PARAMS);

可视化相机外部参数。

数字;showExtrinsics(PARAMS);

输入参数

全部收缩

校准图案的关键点,指定为阵列[Xÿ]固有的图像坐标。

校准 [输入阵列Xÿ] 关键点
单摄像头 中号-by-2逐numImages[阵列Xÿ]点。
  • 图像的数量,numImages必须是大于或等于2。

  • 在每个图案关键点的坐标数,中号,必须大于3。

立体相机 中号-by-2逐numPairs-by-2的阵列[Xÿ]点。
  • numPairs是含有校准图案的立体图像对的数量。

  • 在每个图案关键点的坐标数,中号,必须大于3。

  • imagePoints:,:,:,1)来自照相机1的点。

  • imagePoints:,:,:,2)来自照相机2的点。

数据类型:|

在世界坐标系的校准模式的关键点,指定为中号-by-2的阵列中号[数Xÿ]世界坐标。该模式必须是平面的;因此,ž坐标 - 是零。

数据类型:|

名称 - 值对参数

指定可选的用逗号分隔的对名称,值参数。名称是参数的名称和是对应的值。名称必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例:'WorldUnits'“毫米”集世界点单位毫米。

世界点为单位,指定为逗号分隔的一对组成的'WorldUnits'和字符向量或标量的字符串。

估计偏斜,指定为逗号分隔的一对组成的'EstimateSkew'和一个逻辑标量。当您将此属性设置为真正中,函数估计图像轴歪斜。当设置为中,图像轴线精确地垂直和功能将歪斜到零。

径向失真系数的数目来估计,指定为逗号分隔的一对组成的'NumRadialDistortionCoefficients'和值2要么3。当光线弯曲更靠近比他们在其光学中心做透镜的边缘发生径向扭曲。该透镜越小,失真越大。

径向失真模型的系数这种类型的失真。所述失真点被表示为(X扭曲ÿ扭曲):

X扭曲=X(1 +ķ1*[R2+ķ2*[R4+ķ3*[R6

ÿ扭曲=ÿ(1 +ķ1*[R2+ķ2*[R4+ķ3*[R6

  • Xÿ- 无失真的像素位置。Xÿ在标准化的图像坐标。标准化图像坐标是从像素坐标通过平移的光学中心和以像素为单位由焦距除以计算。从而,Xÿ是无量纲的。

  • ķ1ķ2ķ3- 镜片的径向失真系数。

  • [R2X2+ÿ2

典型地,两个系数足以用于校准。对于严重的失真,例如在广角镜头,可以选择3个系数为包括ķ3

切向畸变标志,指定为逗号分隔的一对组成的,'EstimateTangentialDistortion'和一个逻辑标量。当您将此属性设置为真正,函数估计的切向变形。当你将它设置为,切向变形可以忽略不计。

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

所述失真点被表示为(X扭曲ÿ扭曲):

X扭曲=X+ [2 *p1*X*ÿ+p2*([R2+ 2 *X2)]

ÿ扭曲=ÿ+ [p1*([R2+ 2 *ÿ2)+ 2 *p2*X*ÿ]

  • Xÿ- 无失真的像素位置。Xÿ在标准化的图像坐标。标准化图像坐标是从像素坐标通过平移的光学中心和以像素为单位由焦距除以计算。从而,Xÿ是无量纲的。

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

  • [R2X2+ÿ2

相机内在初始猜测,指定为逗号分隔的一对组成的'InitialIntrinsicMatrix'和一个3×3矩阵。如果你不提供初始值,函数计算使用线性最小二乘初始内部矩阵。

径向失真系数的初始猜测,指定为逗号分隔的一对组成的'InitialRadialDistortion'和一个2-或3-元素矢量。如果你不提供初始值,函数使用0作为所有的系数的初始值。

图像尺寸由摄像机产生,指定为逗号分隔的一对组成的“图片尺寸'和作为1×2 [mrowsNCOLS]载体。

输出参数

全部收缩

相机参数,返回为cameraParameters宾语。

图片使用估计相机参数,返回为P×1逻辑阵列。P对应于图像的数量。数组表示你用于估计相机参数哪些图像。逻辑真正阵列中的值表示你用于估计相机参数哪些图像。

的函数计算世界点和每一个图像中检测到的点之间的单应性。如果单应计算为图像失败,该函数将发出警告。该图像的点不用于估计相机参数。该功能还设置的相应的元件imagesUsed

估计参数的标准误差,返回为cameraCalibrationErrors对象或stereoCalibrationErrors宾语。

立体声系统,返回的相机参数stereoParameters宾语。该对象包含该立体摄像系统的源性,外源性,和透镜畸变的参数。

图像对用于估计摄像机参数,返回为P×1逻辑阵列。P对应于图像对的数量。逻辑真正阵列中的值表示你用于估计相机参数哪个图像对。

算法

全部收缩

校准算法

您可以使用相机的相机校准应用最多的视图的95度(FOV)的字段。

校准算法假定针孔照相机模型:

w ^ [ X ÿ 1 ] = [ X ÿ ž 1 ] [ [R Ť ] ķ

Xÿž):一个点的世界坐标
Xÿ):对应的图像点的坐标
w ^:任意倍率
ķ:相机内部矩阵
[R:矩阵表示摄像机的3-d旋转
Ť:相对于世界坐标系中的摄像机的翻译

摄像机标定估计的内在参数,外在参数和畸变系数的值。有参与摄像机标定两个步骤:

  1. 求解以闭合形式的内在和外部参数,假定透镜畸变为零。[1]

  2. 估计所有参数同时包括使用非线性最小二乘最小化(Levenberg-Marquardt算法)的失真系数。使用来自前面步骤的内在和外部参数的初始估计的闭合形式解。然后,畸变系数的初始估计设置为零。[1][2]

参考

[1]张,Z.“灵活的新技术的摄像机标定”。IEEE交易模式分析与机器智能.Vol。22,第11期,2000,第1330至1334年。

[2] Heikkila,J,和O. Silven。“四步相机校准步骤与隐图象校正”,IEEE国际计算机视觉与模式识别,1997年。

[3] Bouguet,J.Y.“相机校准MATLAB工具箱”,计算机视觉技术处的加州理工学院。摄像机标定MATLAB工具箱

[4] Bradski,G。,和A. Kaehler。学习OpenCV的:计算机视觉与OpenCV库。塞瓦斯托波尔,CA:奥赖利,2008年。

介绍了在R2014b