如何验证相机校准是否正确?(或如何估计重新投影的误差)

15

校准质量的衡量标准是投影误差(是否有其他替代品?),它需要知道某些三维点的世界坐标。

有没有简单的方法产生这样已知的点?还有其他验证校准的方法吗(例如,张正友的校准方法只需要校准物体是平面的,系统的几何形状不必知道)

5个回答

8
生成内部校准所使用的图像也可用于验证。Mobile Robot Programming Toolkit (MRPT) 中的 camera-calib 工具是一个很好的例子。
按照张氏方法,MRPT 校准步骤如下:
1. 处理输入图像: - 1a. 定位校准目标(提取棋盘角点) - 1b. 估计相机相对于目标的姿态,假设目标是已知交点数的平面棋盘。 - 1c. 将图像上的点分配给相对于三维坐标系的校准目标模型中的点。
2. 找到最佳解释所有在 1b/c 中生成的模型的内部校准。
生成内部校准后,我们可以回到源图像。
对于每个图像,将估计的相机姿态与内部校准相乘,然后将其应用于 1c 中得出的每个点。
这将把目标模型的相对3D点映射回2D校准源图像。原始图像特征(棋盘格角落)与重新投影的点之间的差异是校准误差。
MRPT会在所有输入图像上执行此测试,并给出聚合重投影误差。
如果您想验证整个系统,包括相机内部参数和相机到世界的变换,则可能需要构建一个夹具,将相机和目标放置在已知配置中,然后将计算出的3D点与实际测量进行比较。

我正在解决同一个问题,我已经校准了相机并得到了内部矩阵,现在想检查校准是否良好。但是在你的回答中,你说我们应该将相机姿态与相机矩阵相乘,以便获得2D图像角落!那么相机姿态从哪里获取?感谢您的帮助。 - Engine

8
你可以独立地验证估计的非线性镜头畸变参数的准确性,而不涉及姿态。拍摄跨越视场(一种轻松的方法是保持铅垂线固定,然后添加所有图像)的直线边缘的图像(例如,铅锤线或平面上的激光条纹)。在所述线图像上选取点,对其坐标进行去畸变处理,拟合数学直线,计算误差。
对于线性部分,您还可以捕获已知相对姿势的多个平面装置的图像,即使用可重复/准确的装置移动一个平面目标(例如转盘),或以已知角度互相安装多个平面目标(例如三个相互垂直的平面)。
像往常一样,在精度要求和预算之间需要做出折衷。如果有足够的钱和友好的机器店附近,则可以让您的想象力在机构几何方面发挥得淋漓尽致。我曾经有一个巨大的十二面体,大小约为柚子大小,由白色塑料加工而成到1/20毫米规格。我用它来校准机器人手臂末端的相机的姿态,并将其在固定点周围的球体上移动。十二面体在遮挡角度方面具有非常好的性质。不用说,这已经被专利化了。

2
在引擎的问题中,姿态矩阵是一个[R|t]矩阵,其中R是纯3D旋转,t是平移向量。如果你已经从图像中计算出了单应性矩阵,那么可以使用张教授的微软技术报告第3.1节(http://research.microsoft.com/en-us/um/people/zhang/Papers/TR98-71.pdf)中提供的闭合形式方法来获取已知单应性矩阵和内部相机矩阵K的R和t。请注意保留HTML标签。

0

如果标定架姿态足够多样化,校准(像素重新投影)误差应该只是方差和偏差。最好可视化这些误差而不是查看数值。例如,指向中心的误差向量可能表明焦距错误。观察曲线可以让您对畸变系数有更直观的理解。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接