校准的质量由重投影误差来衡量(有替代方法吗?),这需要一些 3d 点的知识世界坐标。
有没有一种简单的方法来产生这样的已知点?有没有办法通过其他方式验证校准(例如张的校准方法只要求校准对象是平面的,不需要知道系统的几何形状)
校准的质量由重投影误差来衡量(有替代方法吗?),这需要一些 3d 点的知识世界坐标。
有没有一种简单的方法来产生这样的已知点?有没有办法通过其他方式验证校准(例如张的校准方法只要求校准对象是平面的,不需要知道系统的几何形状)
您可以独立于姿态验证估计的非线性镜头畸变参数的准确性。捕获跨越视场的直边(例如铅垂线或平面上的激光条纹)的图像(跨越 FOV 的一种简单方法是旋转相机保持铅垂线固定,然后添加所有图像) . 在所述线图像上选取点,不扭曲它们的坐标,拟合数学线,计算误差。
对于线性部分,您还可以在已知的相对位姿下捕获多个平面装备的图像,或者使用可重复/精确的装备(例如转盘)移动一个平面目标,或者以彼此已知的角度安装多个平面目标(例如三个相互成 90 度的平面)。
与往常一样,需要在精度要求和预算之间进行折衷。有足够的钱和附近的友好机加工店,您可以让您的幻想在钻机几何上狂奔。我曾经有一个葡萄柚大小的十二面体,用白色塑料加工成 1/20 毫米规格。用它来校准机械臂末端执行器上相机的姿势,将其在围绕固定点的球体上移动。十二面体在遮挡角度方面具有非常好的特性。不用说,这都是专利。
用于生成内在校准的图像也可用于验证它。移动机器人编程工具包 (MRPT)中的相机校准工具就是一个很好的例子。
按照 Zhang 的方法,MRPT 校准过程如下:
处理输入图像:
找到最能解释 1b/c 中生成的所有模型的内在校准。
一旦生成了内在校准,我们就可以返回到源图像。
对于每张图像,将估计的相机位姿与内在校准相乘,然后将其应用于在 1c 中导出的每个点。
这会将目标模型中的相对 3D 点映射回 2D 校准源图像。原始图像特征(棋盘角)和重投影点之间的差异是校准误差。
MRPT 对所有输入图像执行此测试,并为您提供聚合重投影错误。
如果您想验证一个完整的系统,包括相机内在函数和相机到世界的变换,您可能需要构建一个夹具,将相机和目标放置在已知配置中,然后根据实际情况测试计算出的 3D 点。世界测量。
关于 Engine 的问题:姿势矩阵是 [R|t] 矩阵,其中 R 是纯 3D 旋转和 ta 平移向量。如果您已经从图像计算了单应性,Zhang 的 Microsoft 技术报告 ( http://research.microsoft.com/en-us/um/people/zhang/Papers/TR98-71.pdf ) 的第 3.1 节给出了一个封闭的形式使用已知单应性和固有相机矩阵 K 获得 R 和 t 的方法。(我无法评论,所以我添加了一个新答案)
Should be just variance and bias in calibration (pixel re-projection) errors given enough variability in calibration rig poses. It is better to visualize these errors rather than to look at the values. For example, error vectors pointing to the center would be indicative of wrong focal length. Observing curved lines can give intuition about distortion coefficients.
要校准相机,必须共同解决外在和内在问题。后者可以从制造商处得知,外在(旋转和平移)的求解涉及计算单应性的分解:Decompose Homography matrix in opencv python
此处使用单应性,因为大多数校准目标都是平坦的。