7

我必须重新投影我的 3D 点(我已经有来自 Bundler 的数据)。

我在 MATLAB 中使用相机校准工具箱来获取相机的内在参数。我从 27 张图像中得到了这样的输出(棋盘;图像是从不同角度拍摄的)。

Calibration results after optimization (with uncertainties):

Focal Length:     fc = [ 2104.11696  2101.75357 ] ± [ 23.13283  22.92478 ]
Principal point:  cc = [  969.15779   771.30555 ] ± [ 21.98972  15.25166 ]
Skew:        alpha_c = [  0.00000 ] ± [ 0.00000  ]
Distortion:       kc = [  0.11555  -0.55754  -0.00100  -0.00275  0.00000 ] ± 
                       [ >0.05036   0.59076   0.00307   0.00440  0.00000 ]
Pixel error:     err = [  0.71656   0.63306 ]

注:数值误差约为标准偏差的三倍(供参考)。

我想知道数值误差,即焦距误差 +- [23.13283 22.92478] 、主点误差等。这些误差数字实际代表什么以及它们的影响是什么?

像素误差真的很小。

到目前为止,我使用上述数据中的以下矩阵进行重新投影:

K=[ 2104.11696 0 969.15779; 0 2101.75357 771.30555;0 0 1]

上面的矩阵“K”对我来说似乎是正确的。如果我做错了什么,请纠正我...

将等待您的回复。

4

2 回答 2

1

这里有两种错误。

一是重投影误差。校准相机后,您可以使用生成的相机参数将世界坐标中的棋盘点投影到图像中。那么重投影误差是那些投影点和检测棋盘点之间的距离。重投影误差的可接受值取决于您的应用程序,但一个好的经验法则是平均重投影误差应小于 0.5 个像素。

另一种错误是您为每个估计参数获得的 +/- 间隔。这些是基于优化算法产生的标准误差。Bouguet 的相机校准工具箱为您提供的值实际上是标准误差的 3 倍,对应于 99.73% 的置信区间。换句话说,如果相机校准工具箱报告焦距误差为 +- [23.13283 22.92478],那么实际焦距在您估计的区间内,概率为 99.73%。

重投影误差使您可以快速测量校准的准确性。标准误差——我们称之为估计误差——对于更仔细地分析你的结果很有用。例如,您应该尝试排除具有高平均重投影误差的校准图像。另一方面,如果您的估计误差很大,您可以尝试添加更多校准图像。

顺便说一句,计算机视觉系统工具箱现在包括一个GUI 相机校准器应用程序,它使相机校准变得更加容易。文档中对重投影错误也有很好的解释。

于 2014-09-19T12:46:41.467 回答
0

相机校准工具箱从棋盘图像中提取网格点,并将其用于查找校准参数。

像素误差是提取的网格点的平均重投影误差,即实际像素位置和使用计算的K矩阵的位置。因此,尽管您的数字相当,但这些数字大多在 1 以内(1 个像素误差)。焦距误差是计算焦距的方差。

您只需要 3 或 4 张图像即可找到相机的校准(我忘记了实际数字)。如果您提供多张图像,它将为 3-4 张图像的所有组合计算 K 并计算一个 K。误差是所有这些计算出的 K 的方差。

您的数字非常高(与您的 22-23 像素相比,它应该在 3-4 像素内)。原因是用于校准的错误图像和错误的网格点初始估计(您可以通过选择图像中的 4 个角手动执行此操作)。通常 f_x 和 f_y 在现代相机中是相同的,你应该取两者的平均值 (f_x + f_y)/2。

关于您的原则点,您的相机分辨率似乎为 1920 x 1600,您应该使用 [980 800] 而不是工具箱提供的分辨率。现在,通常 ccd 被仔细放置,并且您的原则点正好位于中心。

于 2013-11-01T20:50:33.823 回答