1

这是我之前发布的问题的后续,希望这次有更好的描述。

我做了一副眼镜,上面附有一个针孔摄像头,可以记录人的眼球运动。相机位于眼睛下方,因此向上看眼睛。围绕 Y 轴(即相机有轻微的向左或向右倾斜)和 Z 轴(即相机顺时针或逆时针略微扭曲)也有轻微的旋转。

从视频中,我提取了图像中的一组点,它们应该看起来大致是线性的,但不是因为相机的方向不是直视人的眼睛。

如果我知道描述相机方向的单位向量 U 以及相机正在观看的图像点 IP1(x,y),如果相机位于 (0),我如何计算这些图像点的坐标, 0, -z)?

4

2 回答 2

1

这显然是一个不简单的摄影测量问题。摄影测量学在技术大学以一门、两门或三门课程(1-3 个学期)的形式教授。

首先,将 3 维空间中的直线投影为相机拍摄的图像中的(2 维)直线(这与相机的方向无关)。如果 3D 线确实是直的,而 2D 不是,那么相机不是“公制”的,这意味着它会扭曲图像。幸运的是,在大多数静态相机中,失真的主要原因可以通过直接线性变换方法 (DLT) 进行补偿。摄像机也是如此,尽管我尚未验证。

其次,如果您有图像上某个点的 x、y 坐标(2 个已知值),则不可能计算同一点的 X、Y、Z 空间坐标(3 个已知值)。为此,您必须有第二张不同方向的图像,其中同一点具有 x'、y' 坐标(2 知道更多)。然后你可以计算 X,Y,Z 坐标 - 理论上。在实践中,计算很困难,因为它涉及非线性最小二乘法 (LSM)。
您可能知道兴趣点位于一个表面(可能是眼睛的表面)上,而不是第二个图像。在这种情况下,点应满足形式为 f(X, Y, Z)=0 的曲面方程。使用此等式与一张图像的 x、y 坐标相结合,您可以计算 X、Y、Z 坐标。同样,计算并不简单。

第三,DLT 方程定义为:

     L1 X + L2 Y + L3 Z + L4
x = --------------------------
     L9 X + L10 Y + L11 Z + 1

     L5 X + L6 Y + L7 Z + L8
y = --------------------------
     L9 X + L10 Y + L11 Z + 1

如果您至少有 6 个控制点,则 Li 系数是未知的并且可以计算。控制点是图像上具有已知 X、Y、Z (3D) 坐标已知 x、y (2D) 坐标的点。

一旦你计算了 Li,你对第二张图像做同样的事情,它的方向与第一张图像不同。因此:

      L1' X + L2' Y + L3' Z + L4'
x' = -----------------------------
      L9' X + L10' Y + L11' Z + 1

      L5' X + L6' Y + L7' Z + L8'
y' = -----------------------------
      L9' X + L10' Y + L11' Z + 1

第四,既然你有了 Li 和 Li' 系数,你终于可以计算任意点的 X、Y、Z 坐标,该点在第一张图像上的投影为 x, y,在第二张图像上的投影为 x ',你'。您求解 X、Y、Z 的 4 个 DLT 方程。

作为最后的想法,您可以使用控制曲线而不是控制点,但这是一个活跃的研究领域。

于 2009-09-07T20:09:39.987 回答
0

我假设您正在尝试弄清楚眼睛在看什么。我想我会这样做:

使用眼镜的尺寸计算从相机到眼睛的矢量。

猜测眼睛内部的几何中心(你的点在眼睛的表面,而不是中心)。

然后计算从眼睛中心到该点的向量,得到“看着向量”

这些帮助有用?

于 2009-09-07T18:20:33.653 回答