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

问题描述 投票:8回答:4

[校准质量由重投影误差来衡量(是否有替代方法?),这需要一些3d点的知识世界坐标。

是否有一种简单的方法来产生这样的已知点?有没有其他方法可以验证校准(例如,Zhang的校准方法仅要求校准对象是平面的并且不需要知道系统的几何形状)

computer-vision camera-calibration
4个回答
6
投票

您可以独立于姿势来验证估计的非线性透镜畸变参数的准确性。捕获跨视场的直边图像(例如,铅垂线或平坦表面上的激光条纹)(跨越FOV的一种简单方法是旋转相机,使铅垂线保持固定,然后添加所有图像) 。在所述线图像上拾取点,使其坐标不失真,拟合数学线,计算误差。

对于线性零件,您还可以以已知的相对姿势捕获多个平面装置的图像,或者使用可重复/精确的装置(例如转盘)移动一个平面目标,或者以已知角度彼此安装多个平面目标(例如,三个平面彼此成90度角)。

与往常一样,在准确性要求和预算之间要进行折衷。有了足够的钱和附近的一家友好的机械加工店,您就可以用钻机几何形状让您的幻想如虎添翼。我曾经有一个大约葡萄柚大小的十二面体,是用白色塑料加工成1/20 mm规格的。用它来校准相机在机械臂末端执行器上的姿势,将其在球体上绕固定点移动。十二面体在遮挡角方面具有非常好的特性。不用说,它们都已获得专利。


6
投票

用于生成固有校准的图像也可以用于验证它。一个很好的例子是移动机器人编程工具包(MRPT)中的camera-calib工具。

按照张的方法,MRPT校准如下:

  1. 处理输入图像:

    • 1a。找到校准目标(提取棋盘角)
    • 1b。假设目标是具有已知交叉点数量的平面棋盘,则估计摄像机相对于目标的姿势。
    • 1c。在相对3D坐标中,将图像上的点分配给校准目标的模型。
  2. 找到最能解释1b / c生成的所有模型的内在校准。

一旦生成固有校准,我们就可以返回源图像。

对于每个图像,将估计的摄像机姿态与固有校准相乘,然后将其应用于1c中得出的每个点。

这会将目标模型的相对3D点映射回2D校准源图像。原始图像特征(棋盘边角)与重投影点之间的差异是校准误差。

[MRPT对所有输入图像执行此测试,并且会给您带来总计的重新投影错误。

如果要验证完整的系统,包括相机内部特性和相机到世界的转换,则可能需要构建一个夹具,将相机和目标放置在已知配置中,然后根据实际测量。


2
投票

关于引擎的问题:姿势矩阵是[R | t]矩阵,其中R是纯3D旋转,t是平移矢量。如果您已经从图像中计算出了单应性,Zhang的Microsoft技术报告(http://research.microsoft.com/en-us/um/people/zhang/Papers/TR98-71.pdf)的3.1节提供了一种封闭形式的方法,可以使用已知的单应性和固有相机矩阵K获得R和t。 ,所以我添加为新答案)


0
投票

应该是在校准台架姿势具有足够的可变性的情况下,仅仅是校准(像素重新投影)误差的方差和偏差。可视化这些错误胜于查看值。例如,指向中心的误差矢量将指示错误的焦距。观察曲线可以直观地了解失真系数。

© www.soinside.com 2019 - 2024. All rights reserved.