主要内容

单摄像机标定精度评估

这个例子展示了如何评估相机参数的准确性估计使用使用单相机校准器应用程序App或estimateCameraParameters函数。

概述

摄像机定标是利用特定定标模式的图像估计摄像机参数的过程。参数包括相机固有,失真系数,相机外部。一旦你校准了相机,有几种方法来评估估计参数的准确性:

  • 绘制相机的相对位置和校准模式

  • 计算重投影误差

  • 计算参数估计误差

校准相机

估计相机参数使用一组图像的棋盘式校准模式。

创建一组校准图像。图片= imageDatastore(fullfile(toolboxdir(“愿景”),“visiondata”...“校准”“单一”));imageFileNames = images.Files;检测校准模式。[imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames);生成正方形角落的世界坐标。squareSize = 29;%毫米worldPoints = generateCheckerboardPoints(boardSize, squareSize);校准相机。I = readimage(images, 1);imageSize = [size(I, 1), size(I, 2)];[params, ~, estimationErrors] = estimatecamerparameters (imagePoints, worldPoints,...图象尺寸=图象尺寸);

外在

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

图;showExtrinsics (params,“CameraCentric”);

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

图;showExtrinsics (params,“PatternCentric”);

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

Reprojection错误

重投影误差提供了精度的定性度量。重投影误差是在校准图像中检测到的模式关键点与投影到同一图像中的相应世界点之间的距离。的showReprojectionErrors函数提供了每个校准图像中平均重投影误差的有用可视化。如果整体平均重投影误差过高,则考虑排除误差最高的图像并重新校准。

图;showReprojectionErrors (params);

图中包含一个轴对象。标题为Mean Reprojection Error per Image的坐标轴对象包含3个类型为bar, line的对象。该对象表示总体平均误差:0.18像素。

估计错误

估计误差表示每个估计参数的不确定性。的estimateCameraParameters函数可选地返回estimationErrors输出,包含每个估计相机参数对应的标准误差。返回的标准错误 σ (与相应参数单位相同)可用于计算置信区间。例如+/- 1 9 6 σ 对应于95%置信区间。换句话说,给定参数的实际值在范围内的概率 1 9 6 σ 估计是95%。

displayErrors (estimationErrors params);
标准的错误估计摄像机的参数  ---------------------------------------------- intrinsic  ---------- 焦距(像素):[714.1886 + / - 3.3219 - 710.3786 + / - 4.0579]主点(像素):[563.6480 + / - 5.3967 - 355.7252 + / - 3.3036)径向畸变:[-0.3536 + / - 0.0091 - 0.1730 + / - 0.0488]外在  ---------- 旋转向量:(-0.6096 + / - 0.0054 - -0.1789 + / - 0.0073 - -0.3835 + / - 0.0024) (-0.7283 + / - 0.0050 - -0.0996 + / - 0.0072 - 0.1964 + / - 0.0027) (-0.6722 + / - 0.0051 - -0.1444 + / - 0.0074 - -0.1329 + / - 0.0026) (-0.5836 + / - 0.0056 - -0.2901 + / - 0.0074 - -0.5622 + / - 0.0025) (-0.3157 + / - 0.0065 - -0.1441 + / - 0.0075 - -0.1067 + / - 0.0011) (-0.7581 + / - 0.0052 - 0.1947 + / - 0.0072 - 0.4324 + / - 0.0030) (-0.7515 + / - 0.0051 - 0.0767 + / - 0.0072 - 0.2070 + / - 0.0029) (-0.6223 + / - 0.0053 - 0.0231 + / - 0.0073 - 0.3663 + / - 0.0024] [0.3443 + / - 0.0063-0.2226 +/- 0.0073 -0.0437 +/- 0.0014 ] Translation vectors (mm): [ -146.0515 +/- 6.0391 -26.8685 +/- 3.7318 797.9027 +/- 3.9002 ] [ -209.4356 +/- 6.9637 -59.4564 +/- 4.3578 921.8198 +/- 4.6295 ] [ -129.3823 +/- 7.0907 -44.1029 +/- 4.3751 937.6831 +/- 4.4913 ] [ -151.0047 +/- 6.6905 -27.3252 +/- 4.1339 884.2789 +/- 4.3925 ] [ -174.9498 +/- 6.7056 -24.3498 +/- 4.1606 886.4961 +/- 4.6686 ] [ -134.3095 +/- 7.8887 -103.4980 +/- 4.8925 1042.4554 +/- 4.8184 ] [ -173.9844 +/- 7.6891 -73.1690 +/- 4.7812 1017.2386 +/- 4.8126 ] [ -202.9445 +/- 7.4327 -87.9090 +/- 4.6482 983.6957 +/- 4.9072 ] [ -319.8860 +/- 6.3213 -119.8897 +/- 4.0922 829.4582 +/- 4.9591 ]

如何提高校准精度

特定的重投影或估计误差是否可接受取决于特定应用程序的精度要求。然而,如果你已经确定你的校准精度是不可接受的,有几个方法来提高它:

  • 修改校准设置。尝试使用3个径向畸变系数,估计切向畸变,或倾斜。

  • 多拍摄校准图像。图像中的图案必须在不同的3D方向上,并且它的位置应该在视野的所有部分都有关键点。特别地,让关键点靠近图像的边缘和角落是非常重要的,以便更好地估计失真系数。

  • 排除有高重投影误差的图像并重新校准。

总结

这个例子展示了如何获取和解释相机标定误差。

参考文献

[1]张震。一种灵活的摄像机标定新技术。机械工程学报,22(11):1330-1334,2000。