如何使用已知的正交(摄像机)投影矩阵将2d的点转换为3d?

时间:2019-01-02 12:25:01

标签: python numpy 3d 2d projection-matrix

我有一个带有2d点的numpy数组,可通过以下等式将其从3d转换为2d:

https://wikimedia.org/api/rest_v1/media/math/render/svg/198f15da062c7ce00598d7a2f9bd8169d7042ed3

如何将点转换回3D?

我使用了上图中的自顶向下的视图矩阵。在Wikiperia中找到:https://en.wikipedia.org/wiki/Orthographic_projection

#To 2D from 3d:
points2D = np.array([np.matmul(camera_pos, point) for point in points3D])[:,:2]

1 个答案:

答案 0 :(得分:0)

您不能仅使用投影点将其转换回去。请注意,您的投影基本上只是查看(x,y)的值并丢弃z的值,因此执行此操作后无法知道z是什么。

例如,考虑点u = [1,2,3]v=[1,2,-3]。两者都投影到[1,2,0],因此当我们尝试反转(撤消)投影时,没有办法知道我们应该将[1,2,0]变成u还是v。 / p>

就矩阵运算而言,这是因为投影矩阵不可逆(单位矩阵除外)。

您将需要更多信息,而不仅仅是预计点,以便能够恢复原始点。

相关问题