通过3个图像点(1D)获取相机2d位置

时间:2016-03-03 00:18:19

标签: math 2d coordinate

我有一个图像和3个点,每个点有以下数据:

  • x和y 2d-world coordinates
  • x图像坐标

如何计算相机方向(仅左/右)和2d世界位置?

感谢。

编辑:图像是普通摄影(所以透视投影)。世界坐标是地图的俯视图,因此是正投影投影。

1 个答案:

答案 0 :(得分:0)

考虑到世界空间中的一个点,投影可以表示为

             (x - cx) * cos(phi) - (y - cy) * sin(phi)
proj(x, y) = -----------------------------------------
             (x - cx) * sin(phi) + (y - cy) * cos(phi)

cxcy是相机位置,phi是相机旋转。投影将产生相机坐标值(不是图像坐标)。要将图像坐标转换为相机坐标,请使用

cameraX(imageX) = (2 * imageX / W - 1) * tan(fovy / 2) * ratio 

W是图片的像素宽度,fovy是垂直视野,ratio是图片的宽高比。

然后你想要解决由三个给定点形成的方程组。有一个分析解决方案,但它非常复杂。因此,您需要使用数字(可能是最小二乘)求解器。选择一个,插入公式并获得结果。由于您针对位置和角度进行了优化,因此您可能需要对值进行标准化,以使它们具有相似的范围。如果您不确定要使用哪种优化程序,那么levmar对于类似问题我的结果会很好。

这一切都假定相机不会扭曲图像。