这显然是一个不简单的摄影测量问题。摄影测量学在技术大学以一门、两门或三门课程(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 方程。
作为最后的想法,您可以使用控制曲线而不是控制点,但这是一个活跃的研究领域。