【问题标题】:How to calculate 3D coordinates of a point in OpenCV如何在 OpenCV 中计算点的 3D 坐标
【发布时间】:2011-04-06 07:03:56
【问题描述】:

我有一个校准的立体相机系统和两个相机视图中同一物体的像素位置。是否有任何简单的方法可以使用 OpenCv(和内部/外部参数)计算对象的 3D 世界坐标,或者我是否必须处理为相机和它们之间的转换生成的 3D 线? CvReprojectImageTo3D 可以提供帮助吗? 非常感谢

【问题讨论】:

    标签: image image-processing opencv computer-vision


    【解决方案1】:

    您可以对这些点进行三角测量。对于每个摄像头,您知道 x = IP * EP * X,其中 x = 2D 同质屏幕坐标,IP = 内在摄像头矩阵,EP = 外在摄像头矩阵和 X 3D 同质世界坐标。这个公式将为每个相机产生 2 个线性方程,导致线性问题 A*X = B。对于每个相机,附加到 A:

    Ps = IP * EP
    A(row 1) = x.x * Ps(row 3) - Ps(row 1)
    A(row 2) = x.y * Ps(row 3) - Ps(row 2)
    B(row 1 & 2) = 0
    

    有 4 个未知数。为避免将 0 作为解决方案,请将 [0 0 0 1] 附加到 A 并将 [ 1 ] 附加到 B。

    可以使用Jacobi method 或类似的东西来解决问题。

    我没有找到/知道 OpenCV 中的方法,但是如果您知道什么是校准矩阵,那么实现上述方法应该是可行的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多