主要内容

本页采用了机器翻译。点击此处可查看英文原文。

estimateFisheyeParameters

标定鱼眼镜头

说明

[fisheyeParams,imagesUsed,estimationErrors] = estimateFisheyeParameters(imagePoints,worldPoints,imageSize) 返回一个 fisheyeParameters 对象,其中包含鱼眼镜头相机内参和外参的估计值。该函数还会返回您用于估计鱼眼镜头参数的图像,以及鱼眼镜头标定的标准估计误差。

示例

[___] = estimateFisheyeParameters(___,Name=Value) 支持上述语法,且可使用一个或多个名称-值参量指定选项。例如,WorldUnits="cm" 将世界单位设置为厘米。

示例

全部折叠

使用标定图像来检测棋盘格标定图案。使用从图案中提取的角点对相机进行标定,并可视化标定结果。

使用图像数据存储加载标定图像。

calibrationImages = imageDatastore("calibImages");
imageFileNames = calibrationImages.Files;

从图像中检测标定图案。PartialDetections 名称-值参量默认设置为 true,以便检测部分棋盘格图案。

[imagePoints,patternDims,imagesUsed] = detectCheckerboardPoints(imageFileNames,HighDistortion=true);

收集其中检测到棋盘格的标定图像。

usedImageFileNames = imageFileNames(imagesUsed);
images = imageDatastore(usedImageFileNames);

生成棋盘格各角点的世界坐标。

squareSize = 20; % millimeters
worldPoints = patternWorldPoints("checkerboard",patternDims,squareSize);

根据图像和世界坐标点,估算鱼眼镜头标定参数。

I = readimage(images,10); 
imageSize = [size(I,1) size(I,2)];
params = estimateFisheyeParameters(imagePoints,worldPoints,imageSize);

直观展示标定精度。

figure
showReprojectionErrors(params);

Figure contains an axes object. The axes object with title Mean Reprojection Error per Image, xlabel Images, ylabel Mean Error in Pixels contains 3 objects of type bar, line. This object represents Overall Mean Error: 1.67 pixels.

可视化相机的外参。

figure
showExtrinsics(params);

Figure contains an axes object. The axes object with title Extrinsic Parameters Visualization, xlabel X (mm), ylabel Z (mm) contains 25 objects of type patch, text, line.

drawnow

将检测到的点和重新投影后的点绘制出来。

figure 
imshow(I); 
hold on
plot(imagePoints(:,1,10),imagePoints(:,2,10),"go");
plot(params.ReprojectedPoints(:,1,10),params.ReprojectedPoints(:,2,10),"r+");
legend("Detected Points","Reprojected Points");
hold off

Figure contains an axes object. The hidden axes object contains 3 objects of type image, line. One or more of the lines displays its values using only markers These objects represent Detected Points, Reprojected Points.

输入参数

全部折叠

标定图案的关键点,指定为 M×2×numImages 形式的 [x,y] 图像内部坐标数组。图像数量 numImages 必须大于 2。每个图案中关键点坐标的数量,M,必须大于 3。若要将部分检测到的图案纳入估计值,请将 [NaN,NaN] 用作缺失关键点的 x-y 坐标。

数据类型: single | double

世界坐标系中标定图案的关键点,指定为一个 M 行 × 2 列的矩阵,其中每个元素为 M [x,y] 世界坐标。由于该图案必须是平面的,因此 z 坐标均为零。

数据类型: single | double

图像大小,指定为 [mrows ncols] 向量。

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: WorldUnits="mm" 将世界坐标系单位设置为毫米。

估算坐标轴对齐方式,指定为 false (0) 或 true (1)。如果鱼眼镜头的光轴与成像平面不垂直,请将该值设置为 true

世界坐标单位,指定为字符向量或字符串标量。该名称-值参量用于存储单位类型,不会影响任何计算。

输出参量

全部折叠

鱼眼镜头参数,以 fisheyeParameters 对象的形式返回。

用于估计相机参数的图像,以 numImages×1 逻辑数组的形式返回。numImages 对应于图像的数量。逻辑值 true 表示用于估计相机参数的图像的索引。

估计参数的标准误差,以 fisheyeCalibrationErrors 对象的形式返回。

参考

[1] Scaramuzza, D., A. Martinelli, and R. Siegwart. "A Toolbox for Easy Calibrating Omnidirectional Cameras." Proceedings to IEEE International Conference on Intelligent Robots and Systems (IROS 2006). Beijing, China, October 7–15, 2006.

[2] Urban, S., J. Leitloff, and S. Hinz. "Improved Wide-Angle, Fisheye and Omnidirectional Camera Calibration." ISPRS Journal of Photogrammetry and Remove Sensing. Vol. 108, 2015, pp.72–79.

版本历史记录

在 R2017b 中推出

全部展开