使用opencv3.0.0测试版将图像点投影到对象点



我使用opencv 3.0.0测试版。

我校准了我的相机,我想将图像点(2D)投影到3D中的点。

我看到了函数:void fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, InputArray K, InputArray D, double alpha=0, OutputArray jacobian=noArray()),但我想要相反的投影。

我知道:

  • cameraMatrix
  • 失真系数
  • 翻译矢量
  • 旋转矢量和
  • 我的对象3D点和3D原点之间的距离

我该怎么做?

如果您知道对象的3D几何结构和相应的2D图像点,则可以从3D-2D点的对应关系中找到对象姿态。

你需要知道:

  • CCD_ 2:三维物体坐标空间中物体点的阵列
  • imagePoints–对应2D图像点的阵列
  • 以及相机矩阵和失真系数

则solverpnp()将估计CCD_ 4和CCD_。

"图像点"是图像中网格角的坐标。这些是以像素为单位给出的。

"对象点"是网格角在"对象空间"中的坐标,即它们相对于彼此的位置。

例如,左上角位于图像坐标(127, 265),其对象坐标为(0, 0),因为左上角是两个轴上的第一个。其右侧的下一个角可能具有坐标(145, 263),其对象坐标为(1, 0)(即第二列、第一行上的角)等。

为了解决我的问题,我实现了自己的重投影函数。此函数与鱼眼::projectPoint相反。这是我的问题特有的,因为我的三维点和原点之间的距离是已知的。

感谢Micka的评论。

最新更新