点云投影到 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 一样变化(深度图的长度是可选的)。
半径为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 一样变化(深度图的长度是可选的)。