gpt4 book ai didi

c++ - 使用 OpenCV 中的相机校准参数将 2D 点投影到 3D 空间

转载 作者:太空狗 更新时间:2023-10-29 20:42:10 27 4
gpt4 key购买 nike

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

enter image description here

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

最佳答案

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

您将必须弥补 3D 点的深度。它们的平面条件允许您对它们的相对位置进行一些约束,但不足以恢复它们的原始深度。

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

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

关于c++ - 使用 OpenCV 中的相机校准参数将 2D 点投影到 3D 空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19679703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com