主要内容

估计估计

校准单个或立体相机

描述

例子

Cameraparams.imagesUsed估计识别) = estimateCameraParameters (imagePoints世界观点返回Cameraparams.,一个cameraParameters对象包含估计的内在和外在参数和失真系数的单一相机。该函数还返回您用于估计相机参数和单相机校准的标准估计误差的图像。的估计估计功能估计外在和内在参数。

例子

stereoParamspairsUsed估计识别) = estimateCameraParameters (imagePoints世界观点返回stereoParams,一个stereoParameters对象,该对象包含立体相机的参数。该函数还返回你用来估计立体声参数和立体声摄像机校准的标准估计误差的图像。

例子

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

例子

全部折叠

创建一组校准图像。

图像= imageSet (fullfile (toolboxdir (“愿景”),“visiondata”...“校准”“莫诺”));imageFileNames = images.ImageLocation;

检测校准模式。

[imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames); / /检查全局

生成方块角落的世界坐标。

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

校准相机。

I = readimage(图片1);imageSize = [size(I, 1),size(I, 2)];params = estimateCameraParameters (imagePoints worldPoints,...“图象尺寸”、图象尺寸);

可视化校准精度。

ShowreProiznerErrors(Params);

图中包含一个坐标轴。标题为“每个图像平均重投影误差”的轴包含3个类型为bar, line的对象。这个对象表示总体平均误差:0.18像素。

可视化相机外在。

图;showExtrinsics (params);

图中包含一个坐标轴。标题为“外部参数可视化”的轴包含23个类型为patch、text、line的对象。

drawnow;

Plot检测和重投影点。

图;imshow(imagefilenames {1});持有;情节(imagePoints (:, 1, 1), imagePoints (:, 2, 1),“去”);plot(params.reprojectedPoints(:,1,1),params.reprojectedPoints(:,2,1),'r +');传奇(“发现点”'reprojectedpoints');持有

图中包含一个坐标轴。轴包含3个类型图像的对象,线。这些对象代表了检测点,reprojectedpoints。

指定校准图像。

leftImages = imageDatastore (fullfile (toolboxdir (“愿景”),“visiondata”...“校准”'立体声'“左”));rightImages = imageDatastore (fullfile (toolboxdir (“愿景”),“visiondata”...“校准”'立体声''对'));

检测棋盘格。

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

指定棋盘关键点的世界坐标。正方形的大小以毫米为单位。

Squaresize = 108;WorldPoints = GenerateCheckerboards(BoardSize,Squarize);

校准立体声相机系统。两个相机都具有相同的分辨率。

i = ReadImage(左幅,1);图像zize = [size(i,1),size(i,2)];params = estimateCameraParameters (imagePoints worldPoints,...“图象尺寸”、图象尺寸);

可视化校准精度。

ShowreProiznerErrors(Params);

图中包含一个坐标轴。具有标题的轴线每个图像的切口误差包含5型栏,线的物体。这些物体代表相机1,相机2,总体平均值误差:0.06像素。

可视化相机外在。

图;showExtrinsics (params);

图中包含一个坐标轴。标题为“外部参数可视化”的轴包含28个类型为patch, text, line的对象。

输入参数

全部折叠

校准模式的关键点,指定为[xy固有图像坐标。

校准 的输入数组xy)要点
单相机

2 -numImages数组的xy要点。

  • 图像的数量,numImages,必须大于或等于2。

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

仅支持部分检测到的图案进行单次摄像头校准。万博1manbetx要在估计中包括部分检测到的模式,请使用[南南] 作为x-y丢失关键点的坐标。

立体相机

2 -numPairs-by-2数组[xy要点。

  • numPairs为包含标定图案的立体图像对的个数。

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

  • imagePoints::,: 1)是1号相机的点。

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

数据类型:|双倍的

标定图形在世界坐标中的关键点,指定为2组的数量(xy世界坐标。图案必须是平面的;因此,z坐标为零。

数据类型:|双倍的

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:“WorldUnits”“毫米”设置世界点单位为毫米。

世界点数单位,指定为逗号分隔对组成“WorldUnits”以及字符向量或字符串标量。

估计偏斜,指定为逗号分隔的配对“EstimateSkew”和一个逻辑标量。当您将此属性设置为真正的,该功能估计图像轴偏斜。设置到,图像轴是完全垂直的,该函数将倾斜度设置为零。

要估计的径向畸变系数的数目,指定为逗号分隔对组成“NumRadialDistortionCoefficients”和价值23..当光线在透镜边缘附近的弯曲比在透镜的光学中心更厉害时,就会发生径向畸变。镜头越小,失真越大。

径向畸变系数是这种畸变的模型。变形点记为(x扭曲的y扭曲的):

x扭曲的x(1 +k1r2+k2r4+k3.r6

y扭曲的y(1 +k1r2+k2r4+k3.r6

  • xy-未失真的像素位置。xy处于标准化的图像坐标。通过将识别像素坐标计算归一化图像坐标通过将光学中心转换并以像素以像素分开来计算。因此,xy是无量纲。

  • k1k2,k3.-镜头的径向畸变系数。

  • r2x2+y2

通常,两个系数就足以进行校准。对于严重的失真,如广角镜头,您可以选择3个系数包括k3.

切向失真标志,指定为逗号分隔对组成,“EstimateTangentialDistortion”和一个逻辑标量。当您将此属性设置为真正的,该功能估计切向失真。当你设置它时,切向失真可以忽略不计。

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

变形点记为(x扭曲的y扭曲的):

x扭曲的x+ [2 *p1xy+p2* (r2+ 2 *x2)]

y扭曲的y+ (p1* (r2+ 2 *y2) + 2 *p2xy

  • xy-未失真的像素位置。xy处于标准化的图像坐标。通过将识别像素坐标计算归一化图像坐标通过将光学中心转换并以像素以像素分开来计算。因此,xy是无量纲。

  • p1p2- 镜片的切向失真系数。

  • r2x2+y2

相机固有性的初始猜想,指定为逗号分隔对,由“InitialIntrinsicMatrix”和3×3矩阵。如果您不提供初始值,则该功能使用线性最小二乘来计算初始内联矩阵。

径向畸变系数的初始猜想,指定为逗号分隔对,由“InitialRadialDistortion”和一个2或3元元素矢量。如果您不提供初始值,则函数使用0作为所有系数的初始值。

由相机产生的图像大小,指定为逗号分隔对,由'图象尺寸'和1乘2 [mrowsncols矢量。

输出参数

全部折叠

相机参数,返回为cameraParameters对象。

用于估计相机参数的图像,返回为P1逻辑数组。P对应于图像的数量。该数组指示您用于估计相机参数的图像。一个逻辑真正的数组中的值指示用于估计摄像机参数的图像。

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

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

立体系统的摄像机参数,返回为stereoParameters对象。物体包含了立体相机系统的内在、外在和镜头畸变参数。

用于估计摄像机参数的图像对,返回为P1逻辑数组。P对应于图像对的个数。一个逻辑真正的数组中的值指示用于估计摄像机参数的图像对。

算法

全部折叠

校准算法

您可以使用带有相机的相机校准器应用程序,到达95度的视野(FOV)。

校准算法假定针孔摄像机型号:

w x y 1 X Y Z 1 R t K

XYZ):某点的世界坐标
xy):对应图像点的坐标
w:任意比例因子
K:相机固有矩阵
R:表示摄像机的三维旋转矩阵
t:相机相对于世界坐标系的平移

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

  1. 假设镜头失真为零,请以闭合形式求解固有内部和外在内部。[1]

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

参考

[1] Zhang, Z.“一种灵活的摄像机标定新技术”。模式分析与机器智能学报.Vol。22, No. 11, 2000, pp. 1330-1334。

[2] Heikkila,J和O. Silven。“具有隐式图像校正的四步摄像头校准程序”,IEEE计算机愿景和模式识别国际会议, 1997年。

[3] bouuet, J.Y.,“用于Matlab的摄像机校准工具箱”,加州理工学院计算视觉。Matlab的相机校准工具箱

G. Bradski和A. Kaehler。学习OpenCV:使用OpenCV库的计算机视觉.加州塞瓦斯托波尔:奥莱利,2008。

介绍了R2014b