点云投影到 2D

Point cloud projection to 2D

半径为r的球体内有一个点云,这些点的坐标系在球心。这个想法是 "take photos" 这个云,因为在球体表面有很多观点。 "camera" 位置取决于角度 theta(方位角)和 phi(仰角),如图所示。我至少需要 10000 张图片或观点。

我该如何处理?

我已经完成了:

this link 之后,我将这些点投影到每个平面上,因为我还需要以 3D 形式可视化它们。像这样:

所以我得到了属于"photo"平面的投影点的坐标,但仍然使用原始坐标系。

平面定义为:

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。

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

给出

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

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

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

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

假设屏幕左下角为 (0,0) 度,右下角为 (0,360) 度,左上角为 (180,0) 度,右上角下角为 (180,360) 度. Theta 将从 0 变为 360,phi 将从 0 变为 180。您可以通过计算这些角度并将像素写入具有所需 rgb 的点来投影点云数据。有的像素点会不止一个点,原因是在同一个角度会有不同长度的点。根据这些长度,您可以创建深度图。简而言之,您的坐标系将像 theta 和 phi 一样变化(深度图的长度是可选的)。