相机校准MATLAB工具箱

时间:2012-10-02 08:53:39

标签: matlab opencv bundler camera-calibration matlab-cvst

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

我在MATLAB中使用Camera Calibration工具箱来获取内在的相机参数。我从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”似乎对我而言。如果我做错了,请纠正我......

将等待您的回复。

2 个答案:

答案 0 :(得分:1)

这里有两种错误。

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

其他类型的错误是您为每个估计参数获得的+/-间隔。这些基于优化算法产生的standard errors。 Bouguet的价值观 相机校准工具箱实际上是标准误差的3倍,相当于99.73%置信区间。换句话说,如果摄像机校准工具箱将焦距误差报告为+ - [23.13283 22.92478],则实际焦距在估计的间隔范围内,概率为99.73%。

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

顺便说一下,计算机视觉系统工具箱现在包含一个GUI Camera Calibrator app,可以更轻松地进行相机校准。文档中的重投影错误也有很好的解释。

答案 1 :(得分: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,你的原则点就在中心位置。