使用OpenCV中的摄像机校准参数将2D点投影到3D空间

Zhr*_*aie 3 c++ opencv linear-algebra computer-vision projection-matrix

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

在此输入图像描述

But what I want is the reverse of this projection. I want to convert these 2D points back into 3D space. I know I'll lost some information, but all of my original points were in a same plan.
Please help me to build a similar matrix by using camera parameters for this convertion.

Chr*_*ger 5

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

您将不得不弥补3D点的深度.它们的平面条件允许您在它们的相对位置上做出一些约束,但是它不足以检索它们的原始深度.

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

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