【问题标题】:camera calibration for single plane单平面相机标定
【发布时间】:2019-04-10 16:55:42
【问题描述】:

我的问题陈述很简单。但我无法为我完成 opencv 校准工作。我正在使用这里的代码:source code。 我必须以固定距离拍摄与相机平行的图像。我尝试仅在与相机平行以及不同平面上拍摄测试图像(其中大约 20 张)。我也改变了正方形的大小和数量。

在这种情况下校准的最佳方法是什么?

未失真的图像稍后会被裁剪,这就是它看起来更小的原因。

仔细查看图像后,枕形失真似乎已得到纠正。但“梯形”失真仍然存在。由于相机安装在一个封闭的盒子里,我可以拍摄的平面是有限的。

【问题讨论】:

    标签: opencv camera-calibration


    【解决方案1】:

    为了简化 Vlad 已经说过的内容:理论上,仅使用与相机平行的测试图像来校准相机是不可能的。您必须更改校准板的方向。实际上,您应该在每个测试图像中具有不同的方向。

    查看以下链接中的前两张图片,了解校准板应如何倾斜(或倾斜): http://www.vision.caltech.edu/bouguetj/calib_doc/

    【讨论】:

      【解决方案2】:

      将校准问题视为寻找投影矩阵 P:

      image_points = P * 3d_points,其中 P = 内在 * 外在

      现在请耐心等待: 您基本上对内在部分感兴趣,但校准算法必须同时找到内在和外在。现在,如果在无穷远处选择一个 3D 点,则可以获得投影矩阵的每一列,例如 xInf = [1, 0, 0, 0]。这个点是无穷大的,因为当你将它从齐次坐标转换为笛卡尔坐标时,你会得到 [1/0, 0, 0]。如果将投影矩阵与无穷远处的点相乘,您将得到其对应的列(Xinf 为第 1 列,yInf 为第 2 列,zInf 为第 3 列,相机中心为第 4 列)。

      因此结论很简单 - 要获得投影矩阵(即成功校准),您必须清楚地看到无穷远点或棋盘装置中线的会聚延伸处的消失点(也就是铁轨的末端)地平线)。您的图像无法轻松检测消失点,因为您不会倾斜棋盘,也不会通过后退来旋转或缩放它。因此,您的校准将始终失败。

      【讨论】:

      • 不知道这是否是最好的解决方案,但目前我在 Gimp 中使用透视工具,在 opencv 中使用变换矩阵。
      猜你喜欢
      • 2012-03-28
      • 2015-03-23
      • 2011-02-02
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 2018-08-23
      相关资源
      最近更新 更多