将云投影指向2D

时间:2017-08-08 13:53:45

标签: 3d 2d linear-algebra projection point-clouds

在半径r的球体内有一个点云,这些点的坐标系位于球体的中心。这个想法是“拍摄”这个云的照片,因为球体表面有许多观点。 “摄像机”位置取决于角度θ(方位角)和phi(仰角),如图所示。我需要至少10000个图像或视点。

我怎么能处理这个?

enter image description here

我做过:

关注this link我已经将点投射到每个平面,因为我还需要在3D中对它们进行可视化。像这样:

enter image description here

所以我有投影点的坐标属于“照片”的平面,但仍然使用原始坐标系。

飞机的定义是:

U = {-sin(theta), cos(theta), 0}
V = {cos(theta)*sin(phi), sin(theta)*sin(phi), cos(phi)}
Center = {cos(theta)*cos(phi), sin(theta)*cos(phi), sin(phi)}*r

但我被阻止从3D传递到2D。

2 个答案:

答案 0 :(得分:2)

每个点P在平面自己的基础[U, V]中的投影坐标由

给出

[x', y'] = [dot(P - Center, U), dot(P - Center, V)]

要将其转换为世界坐标,只需执行

world_coord = Center + U * x' + V * y'

(如果我误解了你的问题,请告诉我)

答案 1 :(得分:0)

想象一下,屏幕的左下角为度(0,0),右下角为度(0,360),左上角为度(180,0),右上底度为(180,360)。 Theta将从0变为360,phi将从0变为180。您可以通过计算这些角度并将其写入像素作为具有所需rgb的点来投影点云数据。一些像素将具有多个点,原因是在相同角度下将存在具有不同长度的点。根据这些长度,您可以创建深度图。简要地说,您的坐标系将像theta和phi一样发生变化(深度图的长度是可选的)。