根据2D投影坐标找到等边三角形的3D点

时间:2018-09-22 07:53:14

标签: algorithm computer-vision geometry projection

假定由三个等距点和在其中心设置的原点(0,0,0)制成的3D模型。这些点之间的距离是已知的。这些3D点由相机看成是已知的投影矩阵。我可以访问相机平面上的每个点(x,y)位置。我试图检索这些点的3D坐标,并部分构建模型矩阵。

到目前为止,当我将2D点与投影矩阵相乘时,我可以找到它们对应的3D位置,但是我不确定如何继续进行或确切寻找什么以便帮助我在这3个点之间建立关系点以恢复该对象的3D模型(比例,旋转)。

已经尝试使用类似于this thread上答案的方法来计算法线以便获得方向,但是还没有。

我知道对于一个解决方案,三点信息可能太少了,但是由于对象是等边的,因此相机在轴上的旋转是不相关的。

1 个答案:

答案 0 :(得分:0)

您可以首先将三个2D点中的每个点解投影到具有不同深度的3D空间中(使用反投影矩阵)。然后,每个2D点都有一条射线,实际点可能位于该射线上。用

表示射线
x(t) = p + t * d,

其中t是标量参数,p1是未投影点之一,而d是两个未投影点之间的差。然后,给定3D点r的已知距离,您想找到它们的射线位置。也就是说,您要查找三束t1t2t3的参数,以使

(p1 + t1 * d1 - p2 - t2 * d2)^2 = r^2
(p2 + t2 * d2 - p3 - t3 * d3)^2 = r^2
(p3 + t3 * d3 - p1 - t1 * d1)^2 = r^2

不幸的是,这很难通过分析来解决。如果我没记错的话,您将需要求解一个8级多项式,而该多项式没有解析解。

因此,您剩下的是数字求解器。我将从简单的内容开始,然后尝试Newton's method。从合理的正t向量开始。