【问题标题】:Projecting a 2D point into 3D space using camera calibration parameters in OpenCV使用 OpenCV 中的相机校准参数将 2D 点投影到 3D 空间
【发布时间】:2013-11-09 21:01:33
【问题描述】:

我使用 calibrateCamera() 获取我的相机参数,现在我有 cameraMatrix、distCoeffs、rotationMatrix、transformMatrix。
使用这些矩阵,我可以构建投影矩阵并将空间中的 3D 对象点转换为 2D 图像点。
像这样的东西:

但我想要的是这个投影的反面。我想将这些 2D 点转换回 3D 空间。我知道我会丢失一些信息,但我所有的原始点都在同一个计划中。
请帮助我通过使用相机参数来构建一个类似的矩阵。

【问题讨论】:

    标签: c++ opencv computer-vision linear-algebra projection-matrix


    【解决方案1】:

    从一组投影的 2D 点中,您无法返回原始 3D 点,但可以返回连接 3D 点的光线及其在图像平面中的投影。所以,你失去了 3D 点的深度;也就是说,您知道方向,但不知道相机到 3D 点的距离。

    您必须弥补 3D 点的深度。它们的平面条件允许您对它们的相对位置进行一些限制,但仅检索它们的原始深度是不够的。

    例如,您可以设置 3 个非共线点的深度来创建 3D 空间中的平面。其他 2D 点的深度将由这些射线与这个新平面的交点给出。

    如果您知道起源于 3D 点的平面的法线向量,您可以通过设置单个 2D 点的深度并相应地计算其他点来做类似的事情。此外,只有当您知道该平面到原点(到相机)的距离时,您才能检索 3D 点的真实深度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 2011-03-12
      相关资源
      最近更新 更多