相机标定与3D重建(4)评估单台相机标定的准确性

此示例说明如何评估使用cameraCalibrator应用程序或estimateCameraParameters函数估计的相机参数的准确性。

1.概述

相机标定是使用特殊校准图案的图像估计相机参数的过程。参数包括相机内在参数、畸变系数和相机外在参数。相机标定后,有几种方法可以评估估计参数的准确性:

  • 绘制相机的相对位置和标定模板
  • 计算重投影误差
  • 计算参数估计误差

2.相机标定

使用一组棋盘格图案估计相机参数。

% Create a set of calibration images.
images = imageDatastore(fullfile(toolboxdir('vision'), 'visiondata', ...
    'calibration', 'mono'));
imageFileNames = images.Files;

% Detect calibration pattern.
[imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames);

% Generate world coordinates of the corners of the squares.
squareSize = 29; % millimeters
worldPoints = generateCheckerboardPoints(boardSize, squareSize);

% Calibrate the camera.
I = readimage(images, 1); 
imageSize = [size(I, 1), size(I, 2)];
[params, ~, estimationErrors] = estimateCameraParameters(imagePoints, worldPoints, ...
                                     'ImageSize', imageSize);

3.外参

通过绘制相机的相对位置和校准图案,您可以快速发现标定中的明显错误。使用showExtrinsics函数可以在相机坐标系中绘制标定图案的位置,或者在图像坐标系中绘制相机的位置。寻找明显的问题,例如图案在相机后面,或相机在图案后面。还要检查图案是否离相机太远或太近。

figure; 
showExtrinsics(params, 'CameraCentric');

在这里插入图片描述

figure; 
showExtrinsics(params, 'PatternCentric');

在这里插入图片描述

4.重投影误差

重投影误差提供了准确度的定性度量。重投影误差是在标定图像中检测到的模式关键点与投影到同一图像中的相应世界点之间的距离。showReprojectionErrors函数提供了每个标定图像中平均重投影误差的可视化。如果整体平均重投影误差太高,请考虑排除误差最大的图像并重新标定。
在这里插入图片描述

5.估计误差

估计误差代表每个估计参数的不确定性。estimateCameraParameters函数可选择返回estimationErrors输出,其中包含与每个估计的相机参数对应的标准误差。返回的标准错误σ(与相应参数的单位相同)可用于计算置信区间。例如 +/-1.96σ对应于 95% 的置信区间。换句话说,给定参数的实际值在 1.96σ 其估计为 95%。

在这里插入图片描述

5.如何提高校准精度

特定的重投影或估计误差是否可接受取决于您的特定应用的精度要求。但是,如果您确定您的标定精度不可接受,有几种方法可以改进它:

  • 修改标定设置。尝试使用 3 个径向畸变系数,估计切向畸变或偏斜。
  • 拍摄更多标定图像。图像中的图案必须处于不同的 3D 方向,并且其位置应确保在视野的所有部分都有关键点。特别是让关键点靠近图像的边缘和角落非常重要,以便更好地估计失真系数。
  • 排除重投影错误高的图像并重新标定。

参考目录

https://in.mathworks.com/help/vision/ug/evaluating-the-accuracy-of-single-camera-calibration.html;jsessionid=1376b6c6ef72aefb9ee07084e1fe?.mathworks.com

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值