24

在相机校准期间,通常的建议是使用许多图像 (>10),其姿势、深度等都有变化。但是我注意到,通常我使用的图像越少,重投影误差就越小。例如,对于 27 张图像,cv::calibrateCamera 返回 0.23,而只有 3 张我得到 0.11。这可能是由于在校准期间我们正在解决超定系统的最小二乘问题。

问题:

  1. 我们是否真的使用重投影误差作为校准好坏的绝对量度?例如,如果我用 3 张图像校准得到 0.11,然后用其他 27 张图像校准得到 0.23,我们真的可以说“第一次校准更好”吗?

  2. OpenCV 使用相同的图像进行校准和计算误差。这不是某种形式的过拟合吗?如果我实际上使用了 2 个不同的集合——一个用于计算校准参数,一个用于计算误差——不是更正确吗?在这种情况下,我将使用相同的(测试)集来计算来自不同(训练)集的所有校准结果的误差。那不是更公平吗?

4

1 回答 1

16

抱歉,如果为时已晚 - 刚刚看到它。

错误是拟合的重投影。因此,在图像上找到点,计算真实世界模型,重新计算这些点在给定模型的图像上的位置 - 报告差异。在某种程度上,这有点循环,你可能有一个模型只对那些少数图像是正确的,然后会报告一个非常好的错误,同时给它很多图像会产生一个更普遍正确的模型 - 但会有更大的错误,只是因为您试图将其拉伸以适应更大的空间。

确实有一点,添加更多图像并不能改善拟合,并且可能会增加噪音,因为点永远不会被完美地检测到。重要的是提供更大的参数集、更多的角度和位置,而不是等效的数据

使用相同的图像集来预测误差并不是真正的问题,因为就实际的物理镜头参数而言,拟合确实具有真正的意义——它不像在相同的数据上训练/测试神经网络。

编辑:比opencv更好的校准程序(尽管基于相同的概念)包含在3D-DIC中(免费但不是OSS,注册该站点以获得下载链接)具体参见校准手册

于 2012-09-22T19:31:05.527 回答