我必须重新投影我的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”似乎对我而言。如果我做错了,请纠正我......
将等待您的回复。
答案 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,你的原则点就在中心位置。