校准质量是通过重投影误差来测量的(有替代吗?),这需要一些3d点的知识世界坐标。
有没有简单的方法来产生这样的已知点?有没有办法以其他方式验证校准(例如,张的校准方法只要求校准对象是平面的,系统的几何形状不需要知道)
答案 0 :(得分:6)
用于生成内在校准的图像也可用于验证它。一个很好的例子是移动机器人编程工具包(MRPT)中的camera-calib工具。
Per Zhang的方法,MRPT校准过程如下:
处理输入图像:
找到最能解释1b / c中生成的所有模型的内在校准。
生成内在校准后,我们可以返回源图像。
对于每个图像,将估计的相机姿态与固有校准相乘,然后将其应用于1c中导出的每个点。
这会将目标模型的相对3D点映射回2D校准源图像。原始图像特征(棋盘角)和重新投影点之间的差异是校准误差。
MRPT对所有输入图像执行此测试,并会给出聚合重投影错误。
如果您想验证一个完整的系统,包括相机内在函数和相机到世界的变换,您可能需要构建一个将相机和目标放置在已知配置中的夹具,然后测试计算出的3D点反对现实世界的测量。
答案 1 :(得分:6)
您可以独立于姿势验证估计的非线性镜头失真参数的准确性。捕获跨越视野的直边(例如铅垂线或平面上的激光条纹)的图像(跨越FOV的简单方法是旋转相机,保持铅垂线固定,然后添加所有图像) 。在所述线图像上拾取点,不改变它们的坐标,拟合数学线,计算误差。
对于线性部分,您还可以以已知的相对姿势捕获多个平面钻机的图像,或者使用可重复/精确的装备(例如转盘)移动一个平面目标,或者以每个已知角度安装多个平面目标其他(例如彼此成90度的三个平面)。
与往常一样,在准确度要求和预算之间需要妥协。有了足够的钱和附近友好的机械店,你可以让你的幻想与钻机几何形状一起狂野。我曾经有一个十二面体大小的葡萄柚大小,用白色塑料加工到1/20毫米规格。用它来校准机器人手臂末端执行器上的摄像机姿势,将其移动到固定点周围的球体上。十二面体在遮挡角方面具有非常好的性质。不用说,它都是专利的。
答案 2 :(得分:2)
On Engine的问题:姿势矩阵是[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。 (我无法评论,所以我添加了新答案)
答案 3 :(得分:0)
鉴于校准台架姿势具有足够的可变性,应该只是校准(像素重新投影)误差的方差和偏差。可视化这些错误胜于查看值。例如,指向中心的误差矢量将指示错误的焦距。观察曲线可以直观地了解失真系数。
答案 4 :(得分:0)
要校准摄像机,必须共同解决外部和固有问题。后者可以从制造商处得知,对于外部(旋转和平移)的求解涉及到所计算的单应性的分解:Decompose Homography matrix in opencv python
Calculate a Homography with only Translation, Rotation and Scale in Opencv
此处使用单应性,因为大多数校准目标都是平坦的。