如何从2d点导出相机旋转

时间:2010-07-22 15:21:22

标签: math matrix augmented-reality

我将相机安装在三脚架上,其动作仅限于平移和倾斜旋转。它正在观察直接位于相机前方的已知位置的点。如果相机看到点并获得它的2d坐标,是否可以推断出相机的旋转,这样我就可以叠加一些与场景正确对齐的3d模型。

我原本以为可以通过反转你用来绘制2d点的公式来解决,你可以得出一个公式来获得2d点然后给出相机旋转。

我在想2d情节会是这样的 Dot的3d目标世界位置*摄像机位置矩阵*摄像机旋转矩阵*透视矩阵= 2d点

是否可以从2d点推导出相机的旋转,因为相机和点的位置是已知的以及透视矩阵(我假设我应该能够猜测到这一点,并通过调整视觉价值)?

2 个答案:

答案 0 :(得分:1)

如果通过“倾斜旋转”意味着相机从地平线向上或向下倾斜,则问题非常简单。如果你正确的3D-> 2D是一个简单的矩阵变换,你可以解决,然后反转矩阵,你就完成了,否则你将不得不找到更多有关球体到平面投影的信息。相机正在使用。

但是如果“倾斜旋转”意味着围绕视野的中心轴旋转(“你可能会说是侧向倾斜”),那么这个问题就会出现退化(不止一种情况可以给出相同的图片),你会无法解决它。

修改:

这个关于“望远镜”的新信息大大改变了这个问题。解决方案并不困难,但您必须更好地定义坐标框架。点和相机的位置是已知的,您有2D图像,并且您想要相机的方向。

  1. 计算从相机到该点的光线的真实角度。 (我建议您首先对点和相机应用平移,这会将相机带到原点。这使得工作更容易。)
  2. 反转“透视矩阵”以获得点的测量角度,如相机所示。 如果你不能这样做,那就是如果你不知道相机的光学特性,那么这个问题是无法解决的。
  3. 减去角度(从真实平移测量的平移,从真实倾斜测量的倾斜)以获得相机的方向

答案 1 :(得分:0)

如果您的相机呈现w像素宽,h像素高的图像,则可以确定增量距离(以像素为单位dwdh)从哪里到它应该在哪里。由于您假设知道视角,因此可以确定像素的实际长度(以实际尺寸为单位)。从dwdh转换为实际距离的结果将分别为您提供(例如)xy

你知道z,从相机到点的距离。

为了得到两个不同的角度,考虑两个不同的三角学问题,例如,直角三角形的两边给定长度(zx)。如果有帮助,请在两个维度上绘制问题的俯视图以获得平移角度。使用侧视图重复倾斜角度。