Computer vision 如何验证摄像机校准是否正确?(或如何估计重投影的误差)

Computer vision 如何验证摄像机校准是否正确?(或如何估计重投影的误差),computer-vision,camera-calibration,Computer Vision,Camera Calibration,校准质量通过重投影误差(是否有替代方案?)进行测量,这需要一些3d点的知识世界坐标 有没有一种简单的方法来产生这样的已知点?是否有其他方法来验证校准(例如,Zhang的校准方法只要求校准对象是平面的,不需要知道系统的几何结构)生成内部校准时使用的图像也可用于验证。移动机器人编程工具包(MRPT)中的工具就是一个很好的例子 根据Zhang的方法,MRPT校准过程如下: 处理输入图像: 1a。定位校准目标(提取棋盘角) 1b。假设目标是具有已知交点数的平面棋盘,估计相机相对于目标的姿势 1c。将图

校准质量通过重投影误差(是否有替代方案?)进行测量,这需要一些3d点的知识世界坐标


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

生成内部校准时使用的图像也可用于验证。移动机器人编程工具包(MRPT)中的工具就是一个很好的例子

根据Zhang的方法,MRPT校准过程如下:

  • 处理输入图像:

    • 1a。定位校准目标(提取棋盘角)
    • 1b。假设目标是具有已知交点数的平面棋盘,估计相机相对于目标的姿势
    • 1c。将图像上的点指定给相对三维坐标系中校准目标的模型
  • 找到最能解释1b/c中生成的所有模型的内在校准

  • 一旦生成了内部校准,我们就可以返回到源图像

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

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

    MRPT对所有输入图像执行此测试,并将给您一个聚合重投影错误


    如果要验证完整的系统,包括摄影机内部函数和摄影机到世界变换,可能需要构建一个夹具,将摄影机和目标放置在已知配置中,然后根据实际测量值测试计算出的3D点。

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

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


    和往常一样,精度要求和预算之间需要折衷。有了足够的钱和附近一家友好的机器店,你就可以让你的幻想随着钻机的几何结构而疯狂。我曾经有一个葡萄柚大小的十二面体,由白色塑料加工而成,规格为1/20毫米。用它来校准机器人手臂末端执行器上相机的姿势,在球体上围绕固定点移动相机。十二面体在遮挡角度方面具有非常好的特性。不用说,这都是专利

    关于引擎的问题:姿势矩阵是[R | t]矩阵,其中R是纯三维旋转,t是平移向量。如果您已经从图像中计算出了单应性,Zhang的Microsoft技术报告()第3.1节给出了一种封闭形式的方法,使用已知的单应性和固有的相机矩阵K来获得R和t。(我不能评论,所以我添加了一个新的答案)

    应该只是校准中的方差和偏差(像素重投影)在校准装置姿势中存在足够多的可变性时产生的误差。最好将这些错误可视化,而不是查看值。例如,指向中心的误差向量表示焦距错误。观察曲线可以直观地了解畸变系数

    要校准摄像机,必须共同解决外部和内部问题。后者可从制造商处得知,外部(旋转和平移)的求解涉及计算单应性的分解:


    这里使用单应性,因为大多数校准目标都是平面的。

    我正在处理相同的问题,我校准了相机,得到了固有矩阵,我想检查校准是否良好。但是在你的回答中,你说我们应该把相机的姿势和相机矩阵相乘,这样我们就得到了2D图像角!你在哪里拍的?提前谢谢你的帮助